Subversion Repositories Projects

Rev

Rev 74 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 dhylands 1
/***************************************************************************
2
*
3
*     Copyright (c) 2002 by Dave Hylands
4
*           All Rights Reserved
5
*
306 dhylands 6
*       Permission is granted to any individual or institution to use, copy,
7
*  modify, or redistribute this file so long as it is not sold for profit,
2 dhylands 8
*  and that this copyright notice is retained.
9
*
10
***************************************************************************
11
*
12
*  This program translates all line-endings (DOS, UNIX or Mac) into DOS
13
*  style line endings.
14
*
15
*  Usage:   2dos file ...
16
*
306 dhylands 17
*  Currently it does not accept wildcards (I use bash which does the
2 dhylands 18
*  wildcard expansion for me).
19
*
20
***************************************************************************/
21
 
22
#include <stdio.h>
23
#include <stdlib.h>
24
 
25
#define TRUE    1
26
#define FALSE   0
27
 
28
int main( int argc, char **argv )
29
{
30
        int             i;
31
        FILE    *src_fs;
32
        int             ch;
33
        int             foundCr;
306 dhylands 34
        int             foundSpace;
74 dhylands 35
        int     lfCount;
36
        int     crCount;
37
        int     crLfCount;
38
        int     crcrLfCount;
39
        int     otherCount;
306 dhylands 40
        int             trailingWSCount;
2 dhylands 41
 
42
        if ( argc < 2 )
43
        {
44
                fprintf( stderr, "Usage: CountLineEndings file ...\n" );
45
                exit( 1 );
46
        }
47
 
306 dhylands 48
        printf( "    LF     CR   CRLF CRCRLF  Other  Trail FileName\n" );
49
        printf( "------ ------ ------ ------ ------ ------ ---------------------------\n" );
2 dhylands 50
 
74 dhylands 51
        for ( i = 1; i < argc; i++ )
2 dhylands 52
        {
53
                if (( src_fs = fopen( argv[ i ], "rb" )) == NULL )
54
                {
55
                        fprintf( stderr, "Unable to open file %s\n", argv[ i ] );
56
                        exit( 1 );
57
                }
58
 
74 dhylands 59
                foundCr = 0;
306 dhylands 60
                foundSpace = 1;
74 dhylands 61
                lfCount = 0;
62
                crCount = 0;
63
                crLfCount = 0;
64
                crcrLfCount = 0;
65
                otherCount = 0;
306 dhylands 66
                trailingWSCount = 0;
2 dhylands 67
 
68
                while (( ch = fgetc( src_fs )) != EOF )
69
                {
306 dhylands 70
                        if ( ch == ' ' )
71
                        {
72
                                foundSpace = 1;
73
                        }
74
                        else
75
                        {
76
                                if (( ch == 0x0D  ) || ( ch == 0x0A ))
77
                                {
78
                                        if ( foundSpace )
79
                                        {
80
                                                trailingWSCount++;
81
                                        }
82
                                }
83
                                foundSpace = 0;
84
                        }
85
 
74 dhylands 86
                        if ( ch == 0x0D )
87
                        {
88
                                foundCr++;
89
                                continue;
90
                        }
2 dhylands 91
 
74 dhylands 92
                        if ( ch == 0x0A )
93
                        {
94
                                switch ( foundCr )
95
                                {
96
                                        case 0:     lfCount++;      break;
97
                                        case 1:     crLfCount++;    break;
98
                                        case 2:     crcrLfCount++;  break;
99
                                        default:    otherCount++;   break;
100
                                }
2 dhylands 101
 
74 dhylands 102
                                foundCr = 0;
103
                                continue;
104
                        }
105
 
106
                        if ( foundCr > 0 )
107
                        {
108
                crCount += foundCr;
2 dhylands 109
                foundCr = 0;
74 dhylands 110
                        }
2 dhylands 111
                }
112
 
113
                fclose(src_fs);
114
 
306 dhylands 115
                printf( "%6d %6d %6d %6d %6d %6d %s\n", lfCount, crCount, crLfCount, crcrLfCount, otherCount, trailingWSCount, argv[ i ] );
2 dhylands 116
        }
117
 
118
        exit( 0 );
119
        return 0;
120
}
121