+ if (commands == NULL) {
+ hexdump (fin, nbcols, -1);
+ } else {
+ VERBOSE (DEBUG, printf ("commands: %s\n", commands));
+ while ((*commands != '\0') && (rc == 0)) {
+ switch (*commands++) {
+ case ' ':
+ case '\t':
+ break;
+
+ case '/': /* read patern */
+ break;
+
+ case '0': /* read address */
+ break;
+
+ case 'a': /* append mode */
+ break;
+
+ case 'd': /* delete mode */
+ break;
+
+ case 'i': /* insert mode */
+ break;
+
+ case 'p': /* print mode */
+ printlen = -1;
+ while (*commands != '\0') {
+ if ((*commands == ' ') || (*commands == '\t')) {
+ commands++;
+ } else if ((*commands >= '0') && (*commands <= '9')) {
+ printlen = strtol (commands, &commands, 10);
+ break;
+ } else if (*commands == '-') {
+ printlen = -1;
+ commands++;
+ break;
+ } else {
+ VERBOSE (ERROR, fprintf (stderr, "unkown print lenght (%s)\n", commands));
+ rc = 1;
+ break;
+ }
+ }
+ if (rc == 0) hexdump (fin, nbcols, printlen);
+ break;
+
+ case 's': /* substitute mode */
+ break;
+
+ default:
+ VERBOSE (ERROR, fprintf (stderr, "unknown command (%c)\n", commands[-1]));
+ rc = 1;
+ }
+ }
+ }