195 lines
3.9 KiB
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;
|
|
}
|
|
|
|
|