Philippe 02/05/2016: moved all LIBTOOLS files in LIBTOOLS directory
[MNH-git_open_source-lfs.git] / LIBTOOLS / tools / foldown / fold.c
1 /*
2  * foldonw
3  * -------
4  *
5  */
6
7 #include <stdio.h>
8
9 #define MAX_LINE_LENGTH 60
10
11 void foldonw ( FILE *fp, int csp, char *ssp, int pos )
12 {
13     int c;
14     int l = 0;
15     int split = 0;
16
17     while ( (c=getc(fp)) != EOF )
18     {
19         if ( c == '\n' )
20             l = split = 0;
21         else
22         {
23             l++;
24             if ( l > pos )
25                 split = 1;
26             if ( split && c == csp )
27                 split = 2;
28         }
29         putchar(c);
30         if ( split == 2 )
31         {
32             printf("\n%s", ssp);
33             l = split = 0;
34         }
35     }
36
37     return;
38 }
39
40 int main ( int argc, char **argv )
41 {
42     int   iarg = 0;
43     char *sf = NULL;
44     char *ssp = "";
45     FILE *fp = stdin;
46     int   csp = ',';
47     int   pos = MAX_LINE_LENGTH;
48
49     while ( ++iarg < argc && *(argv[iarg]++) == '-' )
50         switch ( *argv[iarg] )
51         {
52             case 'f' : sf = argv[++iarg]; break;
53             case 'p' : pos = atoi(argv[++iarg]); break;
54             case 'c' : csp = *argv[++iarg]; break;
55             case 's' : ssp = argv[++iarg]; break;
56             default :
57                 fprintf(stderr, "Usage: foldonw [-f filename] [-p pos] [-c char] [-s begin-string]\n");
58                 exit(1);
59         }
60
61     if ( sf != NULL && (fp=fopen(sf,"r")) == NULL )
62     {
63         fprintf(stderr, "%s: no such file or directory\n", sf);
64         exit(1);
65     }
66
67     foldonw(fp, csp, ssp, pos);
68
69     return 0;
70 }