Patch for relative paths
Stefano Corsi <[email protected]> Sun, 20 Apr 2003 17:16:24 +0000
| Newsgroups | gmane.comp.lang.moto.devel |
|---|---|
| Organization | Moto Project |
| Message-ID | <[email protected]> |
--------------Boundary-00=_CZJNB1TVVVCUV77YVXZS
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Hi Dave,
here comes the patch for relative paths in error messages.=20
I created a -z option to force the output of absolute paths anyway. If yo=
u pass -z to moto then the UNSAFE_MODE_FLAG is set (motocodes.h).
I decided to call getcwd() every time (in moto.l) for not having some ith=
er global variable. Tell me if I'm wrong.
Modified also the 2 failing tests.=20
Stefano
--------------Boundary-00=_CZJNB1TVVVCUV77YVXZS
Content-Type: text/x-diff;
charset="us-ascii";
name="relmsg.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="relmsg.patch"
diff -uNr moto_0_19_1/src/moto/main.c moto_0_19_1.reldef/src/moto/main.c
--- moto_0_19_1/src/moto/main.c Mon Feb 3 14:30:07 2003
+++ moto_0_19_1.reldef/src/moto/main.c Sun Apr 20 16:43:56 2003
@@ -68,7 +68,7 @@
flags |= MACRO_DEBUG_FLAG | DEF_DL_FLAG;
while (1) {
- c = getopt(argc, argv, "cdhlmM:X:Opvux");
+ c = getopt(argc, argv, "cdhlmM:X:Opvuzx");
if (c == -1) {
break;
}
@@ -103,6 +103,9 @@
flags &= ~MOTOC_FLAG;
flags &= ~MOTOD_FLAG;
break;
+ case 'z':
+ flags |= UNSAFE_MODE_FLAG;
+ break;
/* other option flags */
@@ -212,6 +215,7 @@
printf(" -O: Omits debugging information\n");
printf(" -p: Runs the moto preprocessor only\n");
printf(" -v: Runs the moto type verifier only\n");
+ printf(" -z: Unsafe mode, shows absolute paths\n");
printf(" -x: Runs moto without loading default extensions\n");
printf("\n");
exit(code);
diff -uNr moto_0_19_1/src/moto/moto.l moto_0_19_1.reldef/src/moto/moto.l
--- moto_0_19_1/src/moto/moto.l Fri Feb 28 23:16:48 2003
+++ moto_0_19_1.reldef/src/moto/moto.l Sun Apr 20 16:43:34 2003
@@ -105,6 +105,7 @@
char *filename;
char *linestr;
MetaInfo *meta;
+ char cwd[255];
s = yytext + 2;
leavefilename = strtok(s, ":");
@@ -119,9 +120,14 @@
meta->caller = env->meta.caller;
env->meta.lineno = atoi(linestr);
- env->meta.filename = moto_strdup(env,filename);
+ if (env->flags & UNSAFE_MODE_FLAG) {
+ env->meta.filename = moto_strdup(env, filename);
+ } else {
+ env->meta.filename = moto_strdup(env, filename + strlen(getcwd(cwd, 255)) + 1);
+ }
env->meta.macroname = NULL;
env->meta.caller = meta;
+
}
"$>"(\\.|[^:])*":"{I}+":"(\\.|[^:])*":"{I}+":*>$" {
@@ -132,6 +138,7 @@
char *filename;
char *linestr;
MetaInfo* meta;
+ char cwd[255];
s = yytext + 2;
leavefilename = strtok(s, ":");
@@ -146,7 +153,11 @@
meta->caller = env->meta.caller;
env->meta.lineno = atoi(linestr);
- env->meta.filename = moto_strdup(env,filename);
+ if (env->flags & UNSAFE_MODE_FLAG) {
+ env->meta.filename = moto_strdup(env, filename);
+ } else {
+ env->meta.filename = moto_strdup(env, filename + strlen(getcwd(cwd, 255)) + 1);
+ }
env->meta.macroname = NULL;
env->meta.caller = meta;
@@ -160,6 +171,7 @@
char *linestr;
char *mname;
MetaInfo* meta;
+ char cwd[255];
s = yytext + 2;
leavefilename = strtok(s, ":");
@@ -175,7 +187,11 @@
meta->caller = env->meta.caller;
env->meta.lineno = atoi(linestr);
- env->meta.filename = moto_strdup(env,filename);
+ if (env->flags & UNSAFE_MODE_FLAG) {
+ env->meta.filename = moto_strdup(env, filename);
+ } else {
+ env->meta.filename = moto_strdup(env, filename + strlen(getcwd(cwd, 255)) + 1);
+ }
env->meta.macroname = moto_strdup(env,mname);
env->meta.caller = meta;
diff -uNr moto_0_19_1/src/moto/motocodes.h moto_0_19_1.reldef/src/moto/motocodes.h
--- moto_0_19_1/src/moto/motocodes.h Tue Oct 29 00:21:53 2002
+++ moto_0_19_1.reldef/src/moto/motocodes.h Sun Apr 20 16:43:45 2003
@@ -52,6 +52,7 @@
MMAN_LEVEL1_FLAG = 0x0000010,
MMAN_LEVEL2_FLAG = 0x0000020,
EXEC_TEXT_FLAG = 0x0000040,
+ UNSAFE_MODE_FLAG = 0x0000080,
/* execution modes */
MOTOPP_FLAG = 0x0100000,
MOTOV_FLAG = 0x0200000,
diff -uNr moto_0_19_1/tests/bf_badlineno.txt moto_0_19_1.reldef/tests/bf_badlineno.txt
--- moto_0_19_1/tests/bf_badlineno.txt Tue Aug 6 21:24:03 2002
+++ moto_0_19_1.reldef/tests/bf_badlineno.txt Sun Apr 20 16:44:23 2003
@@ -1,2 +1,2 @@
-/usr/local/wa/dhakim/moto/tests/bf_badlineno.incl:6: Illegal binary operation: <int> * <String>
- >>> in file included from bf_badlineno.moto:1
+bf_badlineno.incl:6: Illegal binary operation: <int> * <String>
+ >>> in file included from bf_badlineno.moto:1
diff -uNr moto_0_19_1/tests/bf_macro_err.txt moto_0_19_1.reldef/tests/bf_macro_err.txt
--- moto_0_19_1/tests/bf_macro_err.txt Wed Aug 7 02:44:07 2002
+++ moto_0_19_1.reldef/tests/bf_macro_err.txt Sun Apr 20 16:44:15 2003
@@ -1,11 +1,11 @@
-/usr/local/wa/dhakim/moto/tests/bf_macro_err.incl:5: Illegal binary operation: <String> * <boolean>
- >>> in file included from bf_macro_err.moto:2
-/usr/local/wa/dhakim/moto/tests/bf_macro_err.lib:2: Illegal binary operation: <int> + <boolean>
- >>> in macro BAD_MACRO called from bf_macro_err.moto:5
-/usr/local/wa/dhakim/moto/tests/bf_macro_err.moto:1: Variable 's' not declared before used
- >>> in macro ANOTHER_BAD_MACRO called from bf_macro_err.moto:7
-/usr/local/wa/dhakim/moto/tests/bf_macro_err.lib:5: No such function: atoi(<int>)
- >>> in macro BAD_MACRO_W_ARGS(1) called from bf_macro_err.moto:9
-/usr/local/wa/dhakim/moto/tests/bf_macro_err.lib:5: No such function: atoi(<boolean>)
- >>> in macro BAD_MACRO_W_ARGS(1) called from /usr/local/wa/dhakim/moto/tests/bf_macro_err.lib:8
- >>> in macro BAD_MACRO_THAT_CALLS_ANOTHER_BAD_MACRO called from bf_macro_err.moto:10
+bf_macro_err.incl:5: Illegal binary operation: <String> * <boolean>
+ >>> in file included from bf_macro_err.moto:2
+bf_macro_err.lib:2: Illegal binary operation: <int> + <boolean>
+ >>> in macro BAD_MACRO called from bf_macro_err.moto:5
+bf_macro_err.moto:1: Variable 's' not declared before used
+ >>> in macro ANOTHER_BAD_MACRO called from bf_macro_err.moto:7
+bf_macro_err.lib:5: No such function: atoi(<int>)
+ >>> in macro BAD_MACRO_W_ARGS(1) called from bf_macro_err.moto:9
+bf_macro_err.lib:5: No such function: atoi(<boolean>)
+ >>> in macro BAD_MACRO_W_ARGS(1) called from bf_macro_err.lib:8
+ >>> in macro BAD_MACRO_THAT_CALLS_ANOTHER_BAD_MACRO called from bf_macro_err.moto:10
--------------Boundary-00=_CZJNB1TVVVCUV77YVXZS--