/*****************************************************************************\ ** ** ** PBX4Linux ** ** ** **---------------------------------------------------------------------------** ** Copyright: Andreas Eversberg ** ** ** ** installation wizzard ** ** ** \*****************************************************************************/ #include #include #include char *check_mISDN(void) { } char *install_mISDN(void) { } char *check_kernel(void) { } char *install_kernel(void) { } char *check_includes(void) { } char *install_includes(void) { } char *check_device(void) { } char *install_device(void) { } char *check_lib(void) { } char *install_lib(void) { } char *check_isdnnet(void) { } char *install_isdnnet(void) { } char *check_pbx(void) { } char *install_pbx(void) { } char *check_mISDNrc(void) { } char *install_mISDNrc(void) { } struct jobs { char *name; (char *(check))(void); (char *(install))(void); } jobs[] = { { "Install mISDN to kernel Source.", check_mISDN, install_mISDN }, { "Compile and install Kernel.", check_kernel, install_kernel }, { "Copy user space includes.", check_includes, install_includes }, { "Create \"/dev/mISDN\" device", check_device, install_device }, { "Compile mISDN device library.", check_lib, install_lib }, { "Compile mISDN NT-mode library.", check_isdnnet, install_isdnnet }, { "Compile and install PBX4Linux.", check_pbx, install_pbx }, { "Create mISDNrc to load mISDN.", check_mISDNrc, install_mISDNrc }, { NULL, NULL, NULL}, }; int main(int argc, char *argv[]) { int allok = 1; int i; char *ret; char input[256]; printf("\nWelcome to PBX4Linux installation wizzard.\n\n"); again: /* check what to do */ i = 0; while(jobs[i].name) { printf("Checking: %s - ", jobs[i].name); fflush(stdout); ret = jobs[i].check(); if (ret == NULL) printf("OK\n"); else { printf("%s\n", ret); allok = 0; } i++; } /* if all ok */ if (allok) { printf("\nEverything seems to be correctly installed. Do you like to continue? (y/n)"); fflush(stdout); do { scanf("%s", input); } while(input[0] != 'y' && input[0] != 'n'); if (input[0] == 'n') return(0); } /* select installation step(s) */ printf("\nPlease select one of the following install options:\n"); printf("a - Complete installation with all of the following steps\n"); i = 0; while(jobs[i].name) { printf("%d - Step %d: %s\n", i+1, i+1, jobs[i].name); i++; } printf("x - Exit wizzard.\n"); printf("\n(a/1-%d/x)", i); fflush(stdout); do { scanf("%s", input); } while(input[0]!='a' && (input[0]<'1' || input[0]>('0'+i)) && input[0]!='x'); if (input[0] == 'x') return(0); i = 0; while(jobs[i].name) { if (input[0]=='a' || (input[0]-'1')==i) { printf("\nDoing Step %d: %s\n", i+1, jobs[i].name); ret = jobs[i].check(); if (ret) printf("It is required to continue with this step. Dou you want to continue? (y/n)"); else printf("It is not required to continue with this step. Still want to continue? (y/n)"); fflush(stdout); do { scanf("%s", input); } while(input[0] != 'y' && input[0] != 'n'); if (input[0] == 'n') i++; continue; } ret = jobs[i].install(); if (ret) { printf("Failed to install step: %s\n", jobs[i].name); printf("%s\n", ret); printf("Do you like to retry? (y/n)"); fflush(stdout); do { scanf("%s", input); } while(input[0] != 'y' && input[0] != 'n'); if (input[0] == 'y') continue; } break; } i++; } goto again; }