Mercurial > vim
comparison src/os_vms_mms.c @ 7:3fc0f57ecb91 v7.0001
updated for version 7.0001
author | vimboss |
---|---|
date | Sun, 13 Jun 2004 20:20:40 +0000 |
parents | |
children | 2463194c8cdd |
comparison
equal
deleted
inserted
replaced
6:c2daee826b8f | 7:3fc0f57ecb91 |
---|---|
1 #include <stdio.h> | |
2 #include <stdlib.h> | |
3 #include <string.h> | |
4 #include <unixio.h> | |
5 #include "vim.h" | |
6 int main(int argc, char *argv[]) | |
7 { | |
8 FILE *fpi, *fpo; | |
9 char cmd[132], buf[BUFSIZ], *argp, *error_file, target[132], *mms; | |
10 int err = 0, err_line = 0; | |
11 | |
12 mms = "mms"; | |
13 argc--; | |
14 argv++; | |
15 while (argc-- > 0) | |
16 { | |
17 argp = *argv++; | |
18 if (*argp == '-') | |
19 { | |
20 switch (*++argp) | |
21 { | |
22 case 'm': | |
23 mms = ++argp; | |
24 break; | |
25 case 'e': | |
26 if (!*(error_file = ++argp)) | |
27 { | |
28 error_file = *argv++; | |
29 argc--; | |
30 } | |
31 break; | |
32 default: | |
33 break; | |
34 } | |
35 } | |
36 else | |
37 { | |
38 if (*target) | |
39 strcat(target, " "); | |
40 strcat(target, argp); | |
41 } | |
42 } | |
43 sprintf(cmd, "%s/output=tmp:errors.vim_tmp %s", mms, target); | |
44 system(cmd); | |
45 fpi = fopen("tmp:errors.vim_tmp", "r"); | |
46 fpo = fopen(error_file, "w"); | |
47 while (fgets(buf, BUFSIZ, fpi)) | |
48 { | |
49 if (!memcmp(buf, "%CC-", 4)) | |
50 { | |
51 err_line++; | |
52 buf[strlen(buf)-1] = '\0'; | |
53 err++; | |
54 } | |
55 else | |
56 { | |
57 if (err_line) | |
58 { | |
59 if (strstr(buf, _("At line"))) | |
60 { | |
61 err_line = 0; | |
62 fprintf(fpo, "@"); | |
63 } | |
64 else | |
65 buf[strlen(buf)-1] = '\0'; | |
66 } | |
67 } | |
68 fprintf(fpo, "%s", buf); | |
69 } | |
70 fclose(fpi); | |
71 fclose(fpo); | |
72 while (!delete("tmp:errors.vim_tmp")) | |
73 /*nop*/; | |
74 exit(err ? 44 : 1); | |
75 return(0); | |
76 } |