Changeset 2664 for code/branches/buildsystem3/src/tolua/tolua.c
- Timestamp:
- Feb 14, 2009, 10:53:45 PM (16 years ago)
- Location:
- code/branches/buildsystem3
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/buildsystem3
- Property svn:ignore deleted
- Property svn:mergeinfo changed
-
code/branches/buildsystem3/src/tolua/tolua.c
r1810 r2664 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 … … 15 17 #include "tolua++.h" 16 18 17 #include "lua /lua.h"18 #include "lua /lualib.h"19 #include "l ua/lauxlib.h"19 #include "lua.h" 20 #include "lualib.h" 21 #include "lauxlib.h" 20 22 21 23 #include <stdio.h> … … 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" … … 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 … … 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(); … … 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"); 106 99 107 100 108 if (argc==1) … … 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; … … 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); 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); 206 #else 207 lua_dofile(L, path); 208 #endif 151 209 } 152 #else153 {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 }165 #endif166 210 return 0; 167 211 }
Note: See TracChangeset
for help on using the changeset viewer.