summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/mesa/shader/slang/MachineIndependent/preprocessor/cpp_comment_fix.c76
1 files changed, 76 insertions, 0 deletions
diff --git a/src/mesa/shader/slang/MachineIndependent/preprocessor/cpp_comment_fix.c b/src/mesa/shader/slang/MachineIndependent/preprocessor/cpp_comment_fix.c
new file mode 100644
index 00000000000..0c3073590df
--- /dev/null
+++ b/src/mesa/shader/slang/MachineIndependent/preprocessor/cpp_comment_fix.c
@@ -0,0 +1,76 @@
+/* converts c++ to c comments */
+/* usage: ./cpp_comment_fix source */
+
+#include <stdio.h>
+
+int main (int argc, char *argv[])
+{
+ FILE *f;
+ int c;
+ char *buf = NULL;
+ int size = 0, i = 0;
+
+ f = fopen (argv[1], "r");
+ while ((c = fgetc (f)) != EOF)
+ {
+ buf = (void *) realloc (buf, size + 1);
+ buf[size] = c;
+ size++;
+ }
+ fclose (f);
+
+ f = fopen (argv[1], "w");
+
+ while (i < size)
+ {
+ if (buf[i] == '/')
+ {
+ if (buf[i+1] == '/')
+ {
+ fprintf (f, "/*");
+ i+=2;
+ while (buf[i] != '\n' && buf[i] != '\r' && i < size)
+ fprintf (f, "%c", buf[i++]);
+ fprintf (f, " */\n");
+ if (i < size && buf[i] == '\n')
+ i++;
+ else if (i < size && buf[i] == '\r')
+ i+=2;
+ }
+ else
+ {
+ fprintf (f, "/");
+ i++;
+
+ if (buf[i] == '*')
+ {
+ fprintf (f, "*");
+ i++;
+
+ for (;;)
+ {
+ if (buf[i] == '*' && buf[i+1] == '/')
+ {
+ fprintf (f, "*/");
+ i+=2;
+ break;
+ }
+ else
+ {
+ fprintf (f, "%c", buf[i]);
+ i++;
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ fprintf (f, "%c", buf[i]);
+ i++;
+ }
+ }
+ fclose (f);
+ return 0;
+}
+