Skip to content
Snippets Groups Projects
Commit 478a608e authored by rswindell's avatar rswindell
Browse files

System type (OS-machine) is now configurable.

Will look lib-linux.tgz if lib-linux-i386.tgz doesn't exist (for example).
parent 016fc1e2
No related branches found
No related tags found
No related merge requests found
...@@ -95,15 +95,17 @@ enum { ...@@ -95,15 +95,17 @@ enum {
uifcapi_t uifc; /* User Interface (UIFC) Library API */ uifcapi_t uifc; /* User Interface (UIFC) Library API */
struct { struct {
char install_path[256]; char install_path[256];
BOOL usebcc; BOOL usebcc;
char cflags[256]; char cflags[256];
BOOL debug; BOOL debug;
BOOL symlink; BOOL symlink;
BOOL cvs; BOOL cvs;
char cvstag[256]; char cvstag[256];
char cvsroot[256]; char cvsroot[256];
char make_cmdline[128]; char make_cmdline[128];
char sys_desc[1024];
struct utsname name;
} params; /* Build parameters */ } params; /* Build parameters */
#define MAKEFILE "/tmp/SBBSmakefile" #define MAKEFILE "/tmp/SBBSmakefile"
...@@ -252,6 +254,12 @@ int main(int argc, char **argv) ...@@ -252,6 +254,12 @@ int main(int argc, char **argv)
exit(1); exit(1);
} }
if(uname(&params.name)) {
SAFECOPY(params.name.machine,"Unknown");
SAFECOPY(params.name.sysname,params.name.machine);
}
sprintf(params.sys_desc,"%s-%s",params.name.sysname,params.name.machine);
distlist=get_distlist(); distlist=get_distlist();
if((opt=(char **)MALLOC(sizeof(char *)*(MAX_OPTS+1)))==NULL) if((opt=(char **)MALLOC(sizeof(char *)*(MAX_OPTS+1)))==NULL)
...@@ -277,6 +285,7 @@ int main(int argc, char **argv) ...@@ -277,6 +285,7 @@ int main(int argc, char **argv)
sprintf(mopt[i++],"%-27.27s%s","Distribution",distlist[dist]->version); sprintf(mopt[i++],"%-27.27s%s","Distribution",distlist[dist]->version);
sprintf(mopt[i++],"%-27.27s%s","Server" sprintf(mopt[i++],"%-27.27s%s","Server"
,(distlist[dist]->type==LOCAL_FILE?"Local Files":distlist[dist]->servers[server]->desc)); ,(distlist[dist]->type==LOCAL_FILE?"Local Files":distlist[dist]->servers[server]->desc));
sprintf(mopt[i++],"%-27.27s%s","System Type",params.sys_desc);
sprintf(mopt[i++],"%-27.27s%s","Install Path",params.install_path); sprintf(mopt[i++],"%-27.27s%s","Install Path",params.install_path);
sprintf(mopt[i++],"%-27.27s%s","Compiler",params.usebcc?"Borland":"GNU"); sprintf(mopt[i++],"%-27.27s%s","Compiler",params.usebcc?"Borland":"GNU");
sprintf(mopt[i++],"%-27.27s%s","Compiler Flags",params.cflags); sprintf(mopt[i++],"%-27.27s%s","Compiler Flags",params.cflags);
...@@ -305,6 +314,11 @@ int main(int argc, char **argv) ...@@ -305,6 +314,11 @@ int main(int argc, char **argv)
} }
break; break;
case 2: case 2:
uifc.helpbuf= "`System Type`\n"
"\nToDo: Add help.";
uifc.input(WIN_MID,0,0,"System Type",params.sys_desc,40,K_EDIT);
break;
case 3:
uifc.helpbuf= "`Install Path`\n" uifc.helpbuf= "`Install Path`\n"
"\n" "\n"
"\nPath to install the Synchronet BBS system into." "\nPath to install the Synchronet BBS system into."
...@@ -315,7 +329,7 @@ int main(int argc, char **argv) ...@@ -315,7 +329,7 @@ int main(int argc, char **argv)
"\n /home/bbs/sbbs"; "\n /home/bbs/sbbs";
uifc.input(WIN_MID,0,0,"",params.install_path,50,K_EDIT); uifc.input(WIN_MID,0,0,"",params.install_path,50,K_EDIT);
break; break;
case 3: case 4:
strcpy(opt[0],"Borland"); strcpy(opt[0],"Borland");
strcpy(opt[1],"GNU"); strcpy(opt[1],"GNU");
opt[2][0]=0; opt[2][0]=0;
...@@ -330,12 +344,12 @@ int main(int argc, char **argv) ...@@ -330,12 +344,12 @@ int main(int argc, char **argv)
params.usebcc=FALSE; params.usebcc=FALSE;
i=0; i=0;
break; break;
case 4: case 5:
uifc.helpbuf= "`Compiler Flags`\n" uifc.helpbuf= "`Compiler Flags`\n"
"\nToDo: Add help."; "\nToDo: Add help.";
uifc.input(WIN_MID,0,0,"Additional Compiler Flags",params.cflags,40,K_EDIT); uifc.input(WIN_MID,0,0,"Additional Compiler Flags",params.cflags,40,K_EDIT);
break; break;
case 5: case 6:
strcpy(opt[0],"Yes"); strcpy(opt[0],"Yes");
strcpy(opt[1],"No"); strcpy(opt[1],"No");
opt[2][0]=0; opt[2][0]=0;
...@@ -350,7 +364,7 @@ int main(int argc, char **argv) ...@@ -350,7 +364,7 @@ int main(int argc, char **argv)
params.debug=FALSE; params.debug=FALSE;
i=0; i=0;
break; break;
case 6: case 7:
strcpy(opt[0],"Yes"); strcpy(opt[0],"Yes");
strcpy(opt[1],"No"); strcpy(opt[1],"No");
opt[2][0]=0; opt[2][0]=0;
...@@ -367,12 +381,12 @@ int main(int argc, char **argv) ...@@ -367,12 +381,12 @@ int main(int argc, char **argv)
params.symlink=FALSE; params.symlink=FALSE;
i=0; i=0;
break; break;
case 7: case 8:
uifc.helpbuf= "`Make Command-line`\n" uifc.helpbuf= "`Make Command-line`\n"
"\n"; "\n";
uifc.input(WIN_MID,0,0,"",params.make_cmdline,65,K_EDIT); uifc.input(WIN_MID,0,0,"",params.make_cmdline,65,K_EDIT);
break; break;
case 8: case 9:
install_sbbs(distlist[dist],distlist[dist]->type==LOCAL_FILE?NULL:distlist[dist]->servers[server]); install_sbbs(distlist[dist],distlist[dist]->type==LOCAL_FILE?NULL:distlist[dist]->servers[server]);
bail(0); bail(0);
break; break;
...@@ -403,6 +417,7 @@ int main(int argc, char **argv) ...@@ -403,6 +417,7 @@ int main(int argc, char **argv)
void install_sbbs(struct dist_t *dist,struct server_ent_t *server) { void install_sbbs(struct dist_t *dist,struct server_ent_t *server) {
char cmd[MAX_PATH+1]; char cmd[MAX_PATH+1];
char str[1024]; char str[1024];
char fname[MAX_PATH+1];
char sbbsdir[9+MAX_PATH]; char sbbsdir[9+MAX_PATH];
char cvstag[7+MAX_PATH]; char cvstag[7+MAX_PATH];
char buf[1024]; char buf[1024];
...@@ -459,12 +474,20 @@ void install_sbbs(struct dist_t *dist,struct server_ent_t *server) { ...@@ -459,12 +474,20 @@ void install_sbbs(struct dist_t *dist,struct server_ent_t *server) {
printf("Could not download distfile to %s (%d)\n",dist->files[i],errno); printf("Could not download distfile to %s (%d)\n",dist->files[i],errno);
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
sprintf(url,"%s%s",server->addr,dist->files[i]); sprintf(str,dist->files[i],params.sys_desc);
sprintf(url,"%s%s",server->addr,str);
if((remote=ftpGetURL(url,ftp_user,ftp_pass,&ret1))==NULL) { if((remote=ftpGetURL(url,ftp_user,ftp_pass,&ret1))==NULL) {
printf("Cannot get distribution file %s!\n",dist->files[i]); /* retry without machine type in name */
printf("%s\n- %s\n",url,ftpErrString(ret1)); SAFECOPY(fname,str);
unlink(dist->files[i]); sprintf(str,dist->files[i],params.name.sysname);
exit(EXIT_FAILURE); sprintf(url,"%s%s",server->addr,str);
if(strcmp(str,fname)==0 /* no change in name? */
|| (remote=ftpGetURL(url,ftp_user,ftp_pass,&ret1))==NULL) {
printf("Cannot get distribution file %s!\n",str);
printf("%s\n- %s\n",url,ftpErrString(ret1));
unlink(str);
exit(EXIT_FAILURE);
}
} }
while((ret1=remote->read(remote,buf,sizeof(buf)))>0) { while((ret1=remote->read(remote,buf,sizeof(buf)))>0) {
ret2=write(fout,buf,ret1); ret2=write(fout,buf,ret1);
...@@ -527,15 +550,6 @@ get_distlist(void) ...@@ -527,15 +550,6 @@ get_distlist(void)
ftp_FILE *list; ftp_FILE *list;
char sep[2]={'\t',0}; char sep[2]={'\t',0};
char str[1024]; char str[1024];
struct utsname name;
char sys_desc[1024];
if(uname(&name)) {
strcpy(name.machine,"Unknown");
strcpy(name.sysname,name.machine);
}
sprintf(sys_desc,"%s-%s",name.sysname,name.machine);
printf("Sys: %s\n",sys_desc);
if((dist=(struct dist_t **)MALLOC(sizeof(void *)*MAX_DISTRIBUTIONS))==NULL) if((dist=(struct dist_t **)MALLOC(sizeof(void *)*MAX_DISTRIBUTIONS))==NULL)
allocfail(sizeof(void *)*MAX_DISTRIBUTIONS); allocfail(sizeof(void *)*MAX_DISTRIBUTIONS);
...@@ -543,7 +557,9 @@ get_distlist(void) ...@@ -543,7 +557,9 @@ get_distlist(void)
if((dist[i]=(void *)MALLOC(sizeof(struct dist_t)))==NULL) if((dist[i]=(void *)MALLOC(sizeof(struct dist_t)))==NULL)
allocfail(sizeof(struct dist_t)); allocfail(sizeof(struct dist_t));
sprintf(str,DEFAULT_LIBFILE,sys_desc); sprintf(str,DEFAULT_LIBFILE,params.sys_desc);
if(!fexist(str)) /* use lib-linux.tgz if lib-linux-i686.tgz doesn't exist */
sprintf(str,DEFAULT_LIBFILE,params.name.sysname);
if(fexist(DEFAULT_DISTFILE) && fexist(str)) { if(fexist(DEFAULT_DISTFILE) && fexist(str)) {
if((file=(char **)MALLOC(sizeof(char *)*MAX_DIST_FILES))==NULL) if((file=(char **)MALLOC(sizeof(char *)*MAX_DIST_FILES))==NULL)
allocfail(sizeof(char *)*MAX_DIST_FILES); allocfail(sizeof(char *)*MAX_DIST_FILES);
...@@ -590,7 +606,7 @@ get_distlist(void) ...@@ -590,7 +606,7 @@ get_distlist(void)
sep[0]=' '; sep[0]=' ';
p=strtok(str,sep); p=strtok(str,sep);
p=strtok(NULL,sep); p=strtok(NULL,sep);
if(strstr(p,sys_desc)==NULL) if(strstr(p,params.sys_desc)==NULL)
break; break;
sep[0]='\n'; sep[0]='\n';
p=strtok(NULL,sep); p=strtok(NULL,sep);
...@@ -648,20 +664,10 @@ get_distlist(void) ...@@ -648,20 +664,10 @@ get_distlist(void)
r++; r++;
break; break;
case 'f': case 'f':
for(j=0,i=2;in_line[i];i++) { SAFECOPY(file[f++],in_line+2);
if(in_line[i]=='%' && in_line[i+1]=='s') {
file[f][j]=0;
strcat(file[f],sys_desc);
j=strlen(file[f]);
i++;
}
else
file[f][j++]=in_line[i];
}
f++;
break; break;
case 't': case 't':
strcpy(dist[r-1]->tag,in_line+2); SAFECOPY(dist[r-1]->tag,in_line+2);
break; break;
case 's': case 's':
p=in_line+2; p=in_line+2;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment