fix segfault during shell nandroid backup/restore commands

Previously, to achieve a successful "adb shell nandroid backup" and
"adb shell nandroid restore [backup_path]", we have to disable
progress bar by manually removing '/sdcard/clockworkmod/.hidenandroidprogress'

Else, the recovery would crash with segfault

This patch disables progress bar update whenever ui is not initialized
adb shell nandroid backup/restore commands now work without any background hack

Change-Id: I525ceffffb1bad4ee8e62c3985e123dcda77c79e
Fixup nandroid-md5.sh with legitimate return code

The reason md5sum would return an error status code is because it was
being executed on . and .. paths. Only run md5sum on files and allow the
script to exit with an error status if md5sum fails.

Change-Id: Ieeaa5e65ab3cf6b6470815c3ec13cd3a8c8b6b5e
Only chmod backup/blobs directory if it exists

Change-Id: Ib1e250e8f77d84048a176f6ea896439a0454c512
enhance the progress thread update

- limit refresh interval to 200 msec for nandroid operations
- keep the progress background icon overlay updating for normal and
  indeterminate progress
- no more need to increment background icon overlay frames by caller

Change-Id: I643e30505f962ebbf67aae57baa06a296006e542
Refresh nandroid progress without on-screen text

* Remove display of files to ui - this was severely slowing backups
* Remove ui_nice functions since they are no longer used

Change-Id: Iaa8b6bc3989752016b296e6f087c64fc216e5f00
Enable cmdline nandroid backup of vold volumes

Issuing 'adb shell nandroid backup' just after recovery has started on a
device with vold managed primary storage will fail because vold has not
initd for nandroid. Let nandroid call vold_init. Subsequent calls to
vold_init should be of no concern since sock will be set and
vold_client_start() will return immediately.

Change-Id: I88b16ff0a8c5b058b58f81095f63374bfbf70b34
Progress thread: less aggressive redraw

In commit I643e30505f962ebbf67aae57baa06a296006e542 , 'enhance the
progress thread update', I incorrectly amended philz-cwm6's commit to
work around a theoretical issue of keeping the installer's spinning
cube rotating when no progress bar is shown. While my amendment works,
it keeps the progress_thread updating text and overlays even when
sitting at the menu. This is overly aggressive. Change the update
mechanism to only apply when the background installer image is visible.

Also, make ui_increment_frame() static since is is local-only now.

Change-Id: I2fa2f8a0704f562fb027ba4bee9b1b7d278da404
stop showing the background icon progress outside it's scope

Also, extend print_and_error() to act as a pass-through, returning the
original error code.

Conflicts:
	extendedcommands.c
	nandroid.c
	nandroid.h

Change-Id: I3d7ee71f627f871f64defe7902b91b762ca97d59
Code clean-up

* Alphebetize header includes
  - Files that exist at AOSP retain their ordering
* Add missing licensing headers
* Remove some obvious comments
* Whitespace cleanup
* Make local-only functions static
* Prototype static functions if used before defined
* Move non-functions just below header definitions
* Move edifyscripting functions to a new edify header

Change-Id: Ibb11baafa58c81a3673c6a03c5f631a241e1be3e
Allow selective restore of more than one partition

* Can choose more than one partition from the advanced restore menu
* Change nandroid_restore() to use bit flags representing partitions

Change-Id: I883d8cc81b730db672063d96409ae2478ebb63f9
Use OpenSSL libcrypto for MD5 checking

* Use OpenSSL libcrypto static library for both backup and restore md5
  operations
* Warn users when nandroid.md5 is missing entries on restore
* Only verify md5 checksums for partitions selected for restore instead
  of verifying checksums for all files even if not selected for restore
* Remove unneeded nandroid-md5.sh script

Change-Id: I6f2f4ad3c2bfc837698e4bd487d30684de7703e8
Show logo bckgnd after install, backup, restore

Change-Id: Ibbb78a43c51f945d5af781bd4eff2a675212e659
MD5: add a missing bounds check

Change-Id: I866d434953b3479de9c482b9fb311b93d8e9aec9
MD5: handle no newline at end of nandroid.md5

If there is no newline at the end of nandroid.md5, then fgets will not
have '\n' as the last character for the last line. Make sure we aren't
replacing the last legitimate character of a string when reading the
file.

Change-Id: I3664582d7b13a2171bf074a236b44db104bb975a
recovery: SEARCH should work as SELECT_ITEM

Before 2cc22971e40a0ffc7849cdf09dc96916c22136e0, SEARCH worked as
SELECT_ITEM. After that, it became "back".

It is desirable for SEARCH to work as select because it provides
a full control for devices with the 4-capacitive-buttons row.

MENU = DOWN
HOME = UP
SEARCH = SELECT (was BACK)
BACK = BACK

Change-Id: Idc70366d76a18edecb25adce2e35e31e814443c5
Expose ui_has_initialized

Useful for command line processes so they can determine whether ui
functions are possible.

Change-Id: I2e1b8af39806973ae11eaed5bbdb1f3b6ddc7b13
MD5: Abort on errors for cmdline nandroid restore

If 'nandroid restore' is run from the command line, prompts are not
possible (thanks to Phyto Wardt for pointing this out). Abort with a
listing of files that are missing from directory or nandroid.md5.

Change-Id: I527ffeafc5da50e7878ddc103f4fb55218632ce1
Improve touch code

Currently retains swipe-only touch handling, but all elements are in
place to support taps in the future, if desired.

Change-Id: I276111f767ade32717c859c62d1d9f046ffa161c
Support capacitive touch keys

* Adds basic support for capacitive keys (virtual keys)
* Only enabled if BOARD_RECOVERY_SWIPE is enabled

Change-Id: I13ade22991880e4fb5c5c71639660e1563e95a89
Only show Mount USB storage if UMS possible

In the mounts and storage menu:
* Reduce the complexity of if/elses for /data/media and UMS specific
  menu entries with a simple struct
* Only show UMS mount option if vold managed volumes are available and
  usb-otg is not in use. Vold does not have any mechanism to determine
  if a managed volume is usb-otg, so we have to rely on string
  comparison to the volume label. "usbdisk" is by far the most common
  label, so this should cover most devices just fine.

Change-Id: I8a203a614e1c603c32a06b1afb77834cc4cd51ce