Skip to content

Instantly share code, notes, and snippets.

@alesegdia
Created March 31, 2016 19:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alesegdia/4eb4c6860d7e4d53e3d493e287c66b2c to your computer and use it in GitHub Desktop.
Save alesegdia/4eb4c6860d7e4d53e3d493e287c66b2c to your computer and use it in GitHub Desktop.
utility to count bytes in a USB descriptor
<?php
$buffer = "";
while($f = fgets(STDIN))
{
$buffer = $buffer . $f;
}
function valid_byte($str)
{
$str = trim($str);
$byte = preg_match('/^0x[0-9A-Fa-f]*$/', $str);
$constant = preg_match('/^[A-Z_]+$/', $str);
return ($byte || $constant);
}
function flatten($array)
{
$iter = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
$flat_arr = iterator_to_array($iter, false);
return $flat_arr;
}
$data = split("\n", $buffer);
$data = flatten($data);
$data = array_map(function($str) { return split("//", $str); }, $data);
$data = array_map(function($arr) { return trim($arr[0]); }, $data);
$data = array_map(function($arr) { return split(",", $arr); }, $data);
$data = flatten($data);
$data = array_filter($data, "valid_byte");
print(count($data));
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment