source:
code/trunk/src/external/tolua/changes_orxonox.diff
@
11997
Last change on this file since 11997 was 8351, checked in by rgrieder, 14 years ago | |
---|---|
|
|
File size: 3.7 KB |
-
tolua.c
diff -ruN tolua/tolua.c tolua2/tolua.c
old new 4 4 ** TeCGraf/PUC-Rio 5 5 ** Aug 2003 6 6 ** $Id:$ 7 ** Extension by Orxonox (Reto Grieder) to support working directory 8 ** and direct usage of lua files. (2008) 7 9 */ 8 10 9 11 /* This code is free software; you can redistribute it and/or modify it. … … 33 35 " -o file : set output file; default is stdout.\n" 34 36 " -H file : create include file.\n" 35 37 " -n name : set package name; default is input file root name.\n" 38 " -w directory : set working directory; default is location of package file.\n" 39 " -s file : specify source lua code for the parser; all.lua is default.\n" 36 40 " -p : parse only.\n" 37 41 " -P : parse and print structure information (for debug).\n" 38 42 " -S : disable support for c++ strings.\n" … … 64 68 } 65 69 66 70 static void add_extra (lua_State* L, char* value) { 67 68 69 70 71 72 71 int len; 72 lua_getglobal(L, "_extra_parameters"); 73 len = luaL_getn(L, -1); 74 lua_pushstring(L, value); 75 lua_rawseti(L, -2, len+1); 76 lua_pop(L, 1); 73 77 }; 74 78 75 79 static void error (char* o) … … 81 85 82 86 int main (int argc, char* argv[]) 83 87 { 88 char* working_directory = ""; 89 char* lua_source = ""; 90 84 91 #ifdef LUA_VERSION_NUM /* lua 5.1 */ 85 92 lua_State* L = luaL_newstate(); 86 93 luaL_openlibs(L); … … 97 104 lua_pushstring(L,TOLUA_VERSION); lua_setglobal(L,"TOLUA_VERSION"); 98 105 lua_pushstring(L,LUA_VERSION); lua_setglobal(L,"TOLUA_LUA_VERSION"); 99 106 107 100 108 if (argc==1) 101 109 { 102 110 help(); … … 124 132 case 'o': setfield(L,t,"o",argv[++i]); break; 125 133 case 'n': setfield(L,t,"n",argv[++i]); break; 126 134 case 'H': setfield(L,t,"H",argv[++i]); break; 135 case 'w': 136 working_directory = argv[++i]; 137 setfield(L,t,"w",argv[i]); 138 break; 139 case 's': 140 lua_source = argv[++i]; 141 setfield(L,t,"s",argv[i]); 142 break; 127 143 case 'S': setfield(L,t,"S",""); break; 128 144 case '1': setfield(L,t,"1",""); break; 129 145 case 'L': setfield(L,t,"L",argv[++i]); break; … … 143 159 } 144 160 lua_pop(L,1); 145 161 } 146 /* #define TOLUA_SCRIPT_RUN */ 147 #ifndef TOLUA_SCRIPT_RUN 162 148 163 { 149 int tolua_tolua_open (lua_State* L); 150 tolua_tolua_open(L); 151 } 164 char path[BUFSIZ]; 165 char file[BUFSIZ]; 166 path[0] = '\0'; 167 file[0] = '\0'; 168 169 if (strlen(lua_source) > 0 && 170 lua_source[0] != '/' && 171 lua_source[0] != '\\' && 172 strlen(lua_source) > 1 && 173 lua_source[1] != ':') 174 { 175 /* Relative path, prefix working directory */ 176 strcpy(path, working_directory); 177 /* Make sure there is '\\' or '/' at the end of the path */ 178 if (strlen(path) > 0) 179 { 180 char last = path[strlen(path) - 1]; 181 if (last != '\\' && last != '/') 182 strcat(path, "/"); 183 } 184 } 185 186 strcat(path, lua_source); 187 188 /* Extract the full path */ 189 { 190 char* p; 191 p = strrchr(path, '/'); 192 if (p == NULL) 193 p = strrchr(path, '\\'); 194 p = (p == NULL) ? path : p + 1; 195 strcpy(file, p); 196 *p = '\0'; 197 } 198 if (strlen(file) == 0) 199 strcpy(file, "all.lua"); 200 201 lua_pushstring(L, path); 202 lua_setglobal(L, "path"); 203 strcat(path, file); 204 #ifdef LUA_VERSION_NUM /* lua 5.1 */ 205 luaL_dofile(L, path); 152 206 #else 153 { 154 char* p; 155 char path[BUFSIZ]; 156 strcpy(path,argv[0]); 157 p = strrchr(path,'/'); 158 if (p==NULL) p = strrchr(path,'\\'); 159 p = (p==NULL) ? path : p+1; 160 sprintf(p,"%s","../src/bin/lua/"); 161 lua_pushstring(L,path); lua_setglobal(L,"path"); 162 strcat(path,"all.lua"); 163 lua_dofile(L,path); 164 } 207 lua_dofile(L, path); 165 208 #endif 209 } 166 210 return 0; 167 211 }
Note: See TracBrowser
for help on using the repository browser.