annotate toys/pending/strings.c @ 1349:bf2e5591bdf0 draft

Cleanup strings.
author Rob Landley <rob@landley.net>
date Wed, 11 Jun 2014 08:02:55 -0500
parents 3191aa9490aa
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1324
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
1 /*strings.c - print the strings of printable characters in files.
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
2 *
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
3 * Copyright 2014 Kyung-su Kim <kaspyx@gmail.com>
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
4 * Copyright 2014 Kyungwan Han <asura321@gmail.com>
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
5 *
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
6 * No Standard
1349
bf2e5591bdf0 Cleanup strings.
Rob Landley <rob@landley.net>
parents: 1324
diff changeset
7 * TODO: utf8 strings
bf2e5591bdf0 Cleanup strings.
Rob Landley <rob@landley.net>
parents: 1324
diff changeset
8 * TODO: posix -t
1324
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
9
1349
bf2e5591bdf0 Cleanup strings.
Rob Landley <rob@landley.net>
parents: 1324
diff changeset
10 USE_STRINGS(NEWTOY(strings, "an#=4<1fo", TOYFLAG_USR|TOYFLAG_BIN))
1324
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
11
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
12 config STRINGS
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
13 bool "strings"
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
14 default n
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
15 help
1349
bf2e5591bdf0 Cleanup strings.
Rob Landley <rob@landley.net>
parents: 1324
diff changeset
16 usage: strings [-fo] [-n LEN] [FILE...]
1324
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
17
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
18 Display printable strings in a binary file
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
19
1349
bf2e5591bdf0 Cleanup strings.
Rob Landley <rob@landley.net>
parents: 1324
diff changeset
20 -f Precede strings with filenames
bf2e5591bdf0 Cleanup strings.
Rob Landley <rob@landley.net>
parents: 1324
diff changeset
21 -n At least LEN characters form a string (default 4)
bf2e5591bdf0 Cleanup strings.
Rob Landley <rob@landley.net>
parents: 1324
diff changeset
22 -o Precede strings with decimal offsets
1324
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
23 */
1349
bf2e5591bdf0 Cleanup strings.
Rob Landley <rob@landley.net>
parents: 1324
diff changeset
24
1324
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
25 #define FOR_strings
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
26 #include "toys.h"
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
27
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
28 GLOBALS(
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
29 long num;
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
30 )
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
31
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
32 void do_strings(int fd, char *filename)
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
33 {
1349
bf2e5591bdf0 Cleanup strings.
Rob Landley <rob@landley.net>
parents: 1324
diff changeset
34 int nread, i, wlen = TT.num, count = 0;
1324
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
35 off_t offset = 0;
1349
bf2e5591bdf0 Cleanup strings.
Rob Landley <rob@landley.net>
parents: 1324
diff changeset
36 char *string = xzalloc(wlen + 1);
1324
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
37
1349
bf2e5591bdf0 Cleanup strings.
Rob Landley <rob@landley.net>
parents: 1324
diff changeset
38 for (;;) {
bf2e5591bdf0 Cleanup strings.
Rob Landley <rob@landley.net>
parents: 1324
diff changeset
39 nread = read(fd, toybuf, sizeof(toybuf));
bf2e5591bdf0 Cleanup strings.
Rob Landley <rob@landley.net>
parents: 1324
diff changeset
40 if (nread < 0) perror_msg("%s", filename);
bf2e5591bdf0 Cleanup strings.
Rob Landley <rob@landley.net>
parents: 1324
diff changeset
41 if (nread < 1) break;
1324
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
42 for (i = 0; i < nread; i++, offset++) {
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
43 if (((toybuf[i] >= 32) && (toybuf[i] <= 126)) || (toybuf[i] == '\t')) {
1349
bf2e5591bdf0 Cleanup strings.
Rob Landley <rob@landley.net>
parents: 1324
diff changeset
44 if (count == wlen) fputc(toybuf[i], stdout);
1324
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
45 else {
1349
bf2e5591bdf0 Cleanup strings.
Rob Landley <rob@landley.net>
parents: 1324
diff changeset
46 string[count++] = toybuf[i];
1324
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
47 if (count == wlen) {
1349
bf2e5591bdf0 Cleanup strings.
Rob Landley <rob@landley.net>
parents: 1324
diff changeset
48 if (toys.optflags & FLAG_f) printf("%s: ", filename);
1324
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
49 if (toys.optflags & FLAG_o)
1349
bf2e5591bdf0 Cleanup strings.
Rob Landley <rob@landley.net>
parents: 1324
diff changeset
50 printf("%7lld ",(long long)(offset - wlen));
bf2e5591bdf0 Cleanup strings.
Rob Landley <rob@landley.net>
parents: 1324
diff changeset
51 printf("%s", string);
1324
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
52 }
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
53 }
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
54 } else {
1349
bf2e5591bdf0 Cleanup strings.
Rob Landley <rob@landley.net>
parents: 1324
diff changeset
55 if (count == wlen) xputc('\n');
1324
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
56 count = 0;
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
57 }
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
58 }
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
59 }
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
60 xclose(fd);
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
61 free(string);
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
62 }
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
63
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
64 void strings_main(void)
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
65 {
1349
bf2e5591bdf0 Cleanup strings.
Rob Landley <rob@landley.net>
parents: 1324
diff changeset
66 loopfiles(toys.optargs, do_strings);
1324
3191aa9490aa strings - print the strings in the file.
Ashwini Sharma <ak.ashwini1981@gmail.com>
parents:
diff changeset
67 }