X-Git-Url: http://git.archive.openwrt.org/?a=blobdiff_plain;f=multimedia%2Fxupnpd%2Fpatches%2F101-root_dir_param.patch;fp=multimedia%2Fxupnpd%2Fpatches%2F101-root_dir_param.patch;h=68ea3e82e2c24a92897b0d1d0909569bf5180df1;hb=201678b4e7d0309547df7e3c87260c02d1d5a23e;hp=0000000000000000000000000000000000000000;hpb=f24c4210db48c29a950b5fa180cc461a9c5a1480;p=packages.git diff --git a/multimedia/xupnpd/patches/101-root_dir_param.patch b/multimedia/xupnpd/patches/101-root_dir_param.patch new file mode 100644 index 000000000..68ea3e82e --- /dev/null +++ b/multimedia/xupnpd/patches/101-root_dir_param.patch @@ -0,0 +1,83 @@ +--- a/main.cpp ++++ b/main.cpp +@@ -4,11 +4,14 @@ + * https://tsdemuxer.googlecode.com/svn/trunk/xupnpd + */ + ++#include + #include + #include + #include + #include + #include ++#include ++#include + #include "luacompat.h" + #include "luaxlib.h" + #include "luaxcore.h" +@@ -16,35 +19,36 @@ + + int main(int argc,char** argv) + { +- const char* p=strrchr(argv[0],'/'); +- +- int rc; +- +- if(p) +- { +- char location[512]; +- int n=p-argv[0]; +- if(n>=sizeof(location)) +- n=sizeof(location)-1; +- strncpy(location,argv[0],n); +- location[n]=0; +- +- rc=chdir(location); +- +- argv[0]=(char*)p+1; +- } +- +- const char* root=getenv("XUPNPDROOTDIR"); +- if(root && *root) +- rc=chdir(root); +- +- { +- FILE* fp=fopen("xupnpd.lua","r"); +- if(fp) +- fclose(fp); +- else +- rc=chdir("/usr/share/xupnpd/"); +- } ++ int c; ++ char *xupnpd_root = "/usr/share/xupnpd/"; ++ struct stat s; ++ ++ opterr = 0; ++ while ((c = getopt (argc, argv, "d:")) != -1) { ++ switch (c) { ++ case 'd': ++ xupnpd_root = optarg; ++ break; ++ case '?': ++ if (optopt == 'd') ++ fprintf(stderr, "Option -%c requires an argument.\n", optopt); ++ else if (isprint(optopt)) ++ fprintf(stderr, "Unknown option \"-%c\".\n", optopt); ++ else ++ fprintf(stderr, "Unknown option\n"); ++ return 1; ++ default: ++ abort(); ++ } ++ } ++ ++ if(stat(xupnpd_root, &s) != -1 && S_ISDIR(s.st_mode)) { ++ c = chdir(xupnpd_root); ++ } ++ else { ++ fprintf(stderr, "Directory %s doesn't exist.\n", xupnpd_root); ++ return 1; ++ } + + lua_State* L=lua_open(); + if(L)