Skip to content
This repository has been archived by the owner on Aug 5, 2022. It is now read-only.

intel/initsearchtool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DISCONTINUATION OF PROJECT.

This project will no longer be maintained by Intel.

Intel has ceased development and contributions including, but not limited to, maintenance, bug fixes, new releases, or updates, to this project.

Intel no longer accepts patches to this project.

If you have an ongoing need to use this project, are interested in independently developing it, or would like to maintain patches for the open source software community, please create your own fork of this project.

Init Search Tool

About

The init search tool aka isearch, is a tool for intelligently searching Android TM init.rc files. The tool can print, search and verify init.rc files.

The init.rc Layout

For the purpose of searching, init.rc files in Android can be thought of as having three sections:

  • on
  • service
  • import

Each section is comprised of the section keyword (in the list above) a possible argument and keywords.

In other words, each section can be thought of as this:

<section> [args]*
   <keyword>
     ...

args will always be specified, however not all sections contain keywords. For instance, consider the import section. Also, the keyword might be implicit, for instance, the on section just has a list of commands to run, but no keyword. The implicit keyword for on sections is command. The service section has the explicit keywords defined for the service section per the AOSP init readme.txt under system/core/init.

search

Likely one of the best features, the basics are:

$ isearch search --section=<section> <search parameters> init.rc ...

To search for all on sections that relate to property foo.bar, one could perform the following search command:

$ ./isearch.py search --section=on --args='property:foo\.bar' init.rc
on(test/init.aosp.rc : 28): property:foo.bar=*
	mkdir /foo/bar 0777 system system

If you wanted to narrow this search, we could specify the --command string for the search. This option can be added numerous times, and is cumulative. All supplied strings must match. Many section keywords are cumulative with the exception of args (for all sections) and some service keywords. Boolean service keywords, like critical are not cumulative and can be also searched by their Boolean logic not equivalent, --critical or --notcritical. The general format for search keywords is -- and --not

Additional output options include --tidy which prints only matches within the section, and --lineno to print line numbers with the output. An unset line number means its a section default. For instance, with the section service user contains a default of 'root'.

Another search option is --lazy. By default searches are performed with a greedy match. The greedy match is implemented by taking each search string and modifying it to be .*searchstring.*. The lazy option takes the search string as specified. Its important to note, search strings are regular expressions supported by pythons re module. Additionally, all search strings are implicitly line anchored by $regex^.

verify

The verify command searches the init.rc file(s) for search parameters specified in assert.xml. If anything is found, that is not also white-listed, the command will exit in error and print out the offending lines. The option --gen can be specified to produce the list of test exceptions.

$ ./isearch.py verify --assert=assert.xml init.rc
$ ./isearch.py verify --assert=test/assert.xml test/init.aosp.rc
Failed test(No world files):
on(test/init.aosp.rc : 13): early-init
	command(25) : mkdir /danger 0777 root root
on(test/init.aosp.rc : 29): property:foo.bar=*
	command(30) : mkdir /foo/bar 0777 system system

print

This option just prints the init.rc file(s) specified. It takes the option --lineno to optionally print each line number in the section.

$ ./isearch.py print test/init.aosp.rc

Android is a trademark of Google Inc.

About

No description, website, or topics provided.

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages