diff 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
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/src/os_vms_mms.c
@@ -0,0 +1,76 @@
+#include	<stdio.h>
+#include	<stdlib.h>
+#include	<string.h>
+#include	<unixio.h>
+#include	"vim.h"
+int main(int argc, char *argv[])
+{
+    FILE	*fpi, *fpo;
+    char	cmd[132], buf[BUFSIZ], *argp, *error_file, target[132], *mms;
+    int		err = 0, err_line = 0;
+
+    mms = "mms";
+    argc--;
+    argv++;
+    while (argc-- > 0)
+    {
+	argp = *argv++;
+	if (*argp == '-')
+	{
+	    switch (*++argp)
+	    {
+		case 'm':
+		    mms = ++argp;
+		    break;
+		case 'e':
+		    if (!*(error_file = ++argp))
+		    {
+			error_file = *argv++;
+			argc--;
+		    }
+		    break;
+		default:
+		    break;
+	    }
+	}
+	else
+	{
+	    if (*target)
+		strcat(target, " ");
+	    strcat(target, argp);
+	}
+    }
+    sprintf(cmd, "%s/output=tmp:errors.vim_tmp %s", mms, target);
+    system(cmd);
+    fpi = fopen("tmp:errors.vim_tmp", "r");
+    fpo = fopen(error_file, "w");
+    while (fgets(buf, BUFSIZ, fpi))
+    {
+	if (!memcmp(buf, "%CC-", 4))
+	{
+	    err_line++;
+	    buf[strlen(buf)-1] = '\0';
+	    err++;
+	}
+	else
+	{
+	    if (err_line)
+	    {
+		if (strstr(buf, _("At line")))
+		{
+		    err_line = 0;
+		    fprintf(fpo, "@");
+		}
+		else
+		    buf[strlen(buf)-1] = '\0';
+	    }
+	}
+	fprintf(fpo, "%s", buf);
+    }
+    fclose(fpi);
+    fclose(fpo);
+    while (!delete("tmp:errors.vim_tmp"))
+	/*nop*/;
+    exit(err ? 44 : 1);
+    return(0);
+}