|
|
- --- a/main.cpp
- +++ b/main.cpp
- @@ -4,11 +4,14 @@
- * https://tsdemuxer.googlecode.com/svn/trunk/xupnpd
- */
-
- +#include <ctype.h>
- #include <stdio.h>
- #include <syslog.h>
- #include <string.h>
- #include <unistd.h>
- #include <stdlib.h>
- +#include <sys/stat.h>
- +#include <sys/types.h>
- #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)
|