summaryrefslogtreecommitdiffstats
path: root/strip.php
diff options
context:
space:
mode:
Diffstat (limited to 'strip.php')
-rw-r--r--strip.php35
1 files changed, 35 insertions, 0 deletions
diff --git a/strip.php b/strip.php
new file mode 100644
index 0000000..5c5216b
--- /dev/null
+++ b/strip.php
@@ -0,0 +1,35 @@
+<?php
+
+#
+# strip.php /path/to/file key_name
+#
+# Takes a file as input and a string prefix; reads
+# the file as a serialized data blob and removes a
+# key with name key_name from the hash.
+# Serializes again and writes output to stdout.
+#
+
+$file = $_SERVER['argv'][1];
+$key = $_SERVER['argv'][2];
+
+function remove_key($array, $name) {
+ if (array_key_exists($name, $array)) {
+ unset($array[$name]);
+ }
+
+ return $array;
+}
+
+$input = file_get_contents($file);
+
+# Special case for /etc/pear.conf.
+if (strncmp($input, "#PEAR_Config 0.9\n", 17) == 0) {
+ echo substr($input, 0, 17);
+ $s = substr($input, 17);
+} else {
+ $s = $input;
+}
+
+echo serialize(remove_key(unserialize($s), $key));
+
+?> \ No newline at end of file