lcr/wizzard.c

195 lines
3.9 KiB
C

/*****************************************************************************\
** **
** PBX4Linux **
** **
**---------------------------------------------------------------------------**
** Copyright: Andreas Eversberg **
** **
** installation wizzard **
** **
\*****************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
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;
}