addrutil: Re-indent.
[wk-misc.git] / findperm.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 #include <ctype.h>
5
6 void *
7 xmalloc (size_t n)
8 {
9   void *p = malloc (n);
10   if (!p)
11     abort();
12   return p;
13 }
14
15 char *
16 strlwr (char *s)
17 {
18     char *p;
19     for(p=s; *p; p++ )
20         *p = tolower(*(unsigned char *)p);
21     return s;
22 }
23
24
25 int
26 main (int argc, char**argv)
27 {
28   const unsigned char *s;
29   char line [1024];
30   char *target;
31   char *flags1, *flags2;
32   size_t targetlen;
33
34   if (argc != 2)
35     return 1;
36
37   targetlen = strlen (argv[1]);
38   target = xmalloc (targetlen+1);
39   strcpy (target, argv[1]);
40   strlwr (target);
41   flags1 = xmalloc (256);
42   flags2 = xmalloc (256);
43   memset (flags1, 0, 256);
44   for (s=target; *s; s++)
45     flags1[*s]++;
46
47   while ( fgets (line, sizeof line , stdin) )
48     {
49       if (!*line || strlen (line) != targetlen + 1)
50         continue;
51       line [targetlen] = 0;
52       strlwr (line);
53       memset (flags2, 0, 256);
54       for (s=line; *s; s++)
55         flags2[*s]++;
56       if (!memcmp (flags1, flags2, 256))
57           printf ("%s\n", line);
58
59     }
60
61   return 0;
62 }