OSDN Git Service

Add Bluray support
[handbrake-jp/handbrake-jp-git.git] / gtk / src / quotestring.c
1 #include <stdio.h>
2 #include <string.h>
3 #include <libgen.h>
4
5 #define BUF_SIZE    72
6
7 void
8 usage(char *cmd)
9 {
10     printf("%s\n", cmd);
11     char *base = basename(cmd);
12     fprintf(stderr, "Usage: %s infile [outfile]\n", base);
13 }
14
15 int
16 main(int argc, char *argv[])
17 {
18     FILE *infile, *outfile;
19     char in_buffer[BUF_SIZE];
20     char out_buffer[2*BUF_SIZE];
21
22     if (argc < 2 || argc > 3)
23     {
24         usage(argv[0]);
25         return 1;
26     }
27     infile = fopen(argv[1], "r");
28     if (argc < 3)
29     {
30         outfile = stdout;
31     }
32     else
33     {
34         outfile = fopen(argv[2], "w");
35     }
36     while (fgets(in_buffer, BUF_SIZE, infile) != NULL)
37     {
38                 int ii, jj;
39         int len;
40                 int eol = 0;
41         // Step on any CR LF at end of line
42         len = strlen(in_buffer);
43         if (len > 1 && in_buffer[len-1] == '\n' && in_buffer[len-2] == '\r')
44                 {
45                         in_buffer[len-1] = 0;
46                         in_buffer[len-2] = 0;
47                         eol = 1;
48                 }
49         else if (len > 0 && in_buffer[len-1] == '\n')
50                 {
51                         in_buffer[len-1] = 0;
52                         eol = 1;
53                 }
54                 for (jj = 0, ii = 0; ii < len; ii++)
55                 {
56                         if (in_buffer[ii] == '"')
57                         {
58                                 out_buffer[jj++] = '\\';
59                                 out_buffer[jj++] = in_buffer[ii];
60                         }
61                 else if (in_buffer[ii] == '\r')
62                         { // Skip it
63                         }
64                         else
65                         {
66                                 out_buffer[jj++] = in_buffer[ii];
67                         }
68                 }
69                 out_buffer[jj] = 0;
70                 if (eol)
71                 fprintf(outfile, "\"%s\\n\"\n", out_buffer);
72                 else
73                 fprintf(outfile, "\"%s\"\n", out_buffer);
74     }
75     fclose(infile);
76     fclose(outfile);
77         return 0;
78 }