home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Phoenix Heaven Sunny 2
/
APPARE2.BIN
/
oh_towns
/
install
/
_kakeibo.c
< prev
next >
Wrap
Text File
|
1995-06-20
|
5KB
|
176 lines
/*************************************************************************
* 家計簿インストール
*************************************************************************/
int _kakeibo_make_cfg(char *instdir);
int install_kakeibo()
{
int ret, drv, fcopy_att, srcdrv, item_setup;
char *softname;
char *helpfn;
char *srcdir;
char instdir[256], *instfile;
char *item_prog, *item_ttl, item_para[128];
int item_att;
char *dlgTxm;
char tmp[256];
instdir[0] = '\0';
softname = "マルチウインド型家計簿";
srcdir = "/OH_TOWNS/KAKEIBO";
instfile = "*.*";
helpfn = "/OH_TOWNS/KAKEIBO/KAKEIBO.GGG";
item_ttl = "家計簿";
item_prog = "KAKEIBO.EXP";
item_att = 2;
srcdrv = toupper(DirStart[0]) - 'A';
_TOP:
syl_putf("%s",softname);
dlgTxm = DlgTxm_open(ColBoxNormal);
DlgTxm_setTitle(dlgTxm,Fnt16x16,softname);
DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
"%s をインストールします。", softname );
DlgTxm_putf( dlgTxm, Fnt16x12, TXMDAT_ATT_CENTER, "");
DlgTxm_setBtn( dlgTxm, Fnt16x16, 120, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, '\r' , KA_EXEC ,
1, "", 0, "インストール : [実行]");
DlgTxm_setBtn( dlgTxm, Fnt16x16, 120, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, 'H' , KA_H ,
2, "inst_help", helpfn, "説明 : [H]");
DlgTxm_setBtn( dlgTxm, Fnt16x16, 120, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, '\x1B', KA_CANCEL,
3, "", NULL, "取消 : [取消]");
DlgTxm_setSize(dlgTxm,480,40);
DlgTxm_setPosition(dlgTxm,DLGPOS_CENTER_OF_SCREEN);
do
{
ret = DlgTxm_start(dlgTxm);
} while ( ret == 2 );
DlgTxm_close(dlgTxm);
if ( ret != 1 )
goto _RET;
/* インストール先指定 --------------------------------------------*/
ret = APL_setInstallDir(instdir,"%s : インストール先指定", softname);
if ( ret )
goto _TOP;
dlgTxm = DlgTxm_open(ColBoxNormal);
DlgTxm_setTitle(dlgTxm,Fnt16x16,softname);
DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
"%s", instdir );
DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
"このディレクトリにインストールしてもいいですか?" );
DlgTxm_putf( dlgTxm, Fnt16x12, TXMDAT_ATT_CENTER,"");
DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
"インストール1 … ファイルを複写してTownsMENU にアイテム登録");
DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
"インストール2 … ファイルを複写(アイテム登録はしない) ");
DlgTxm_setBtn( dlgTxm, Fnt16x16, 144, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, '\r' , KA_EXEC , 1, "", 0, "インストール1 : [実行]");
DlgTxm_setBtn( dlgTxm, Fnt16x16, 144, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, 'C' , KA_C , 2, "", 0, "インストール2 : [C]");
DlgTxm_setSize(dlgTxm,320,40);
DlgTxm_setPosition(dlgTxm,DLGPOS_CENTER_OF_SCREEN);
ret = DlgTxm_start(dlgTxm);
DlgTxm_close(dlgTxm);
if ( ret != 1 && ret != 2 )
goto _TOP;
item_setup = (ret == 1 ? 1 : 0);
/* インストール開始 ------------------------------------------------*/
syl_putf("INSTALL START");
FS_chdrv(srcdrv);
FS_getFullPn(tmp,srcdir);
fcopy_att = FCOPY_ATT_SUBDIR | FCOPY_ATT_TIMESTAMP | FCOPY_ATT_CHK_OVERWRITE;
ret = FCOPY_exec(fcopy_att, tmp, instfile, instdir);
if ( ret == NORMAL )
ret = _kakeibo_make_cfg(instdir);
/* アイテム登録 ----------------------------------------------------*/
if ( ret == NORMAL && item_setup != 0 )
{
syl_putf("ITEM SETUP");
drv = toupper(instdir[0]) - 'A';
strcpy(tmp,instdir);
add_path_fn(tmp,item_prog);
item_para[0] = '\0';
item_setApl( drv, 1024, item_ttl, tmp, item_para, item_att );
}
/* インストール終了 ------------------------------------------------*/
install_end( softname, ret );
_RET:
syl_clear();
return (0);
}
int _kakeibo_make_cfg(char *instdir)
{
int ret, ch, len;
char *fpsrc, *fpdst;
char *s, tmp[256], tmp2[256], buf[256];
ret = ERR;
fpsrc = NULL;
fpdst = NULL;
/* テンプレートファイル */
strcpy(tmp,DirStart); add_path_fn(tmp,"_kakeibo.cfg");
if ( (fpsrc = FS_fopen(tmp,"r")) == NULL )
goto _ERR;
/* 設定用ファイルのオープン */
strcpy(tmp,instdir); add_path_fn(tmp,"kakeibo.cfg");
if ( (fpdst = FS_fopen(tmp,"w")) == NULL )
goto _ERR;
while ( fgets(buf,256,fpsrc) != NULL )
{
if ( buf[0] == '*' )
{ /* コメント */
fputs(buf,fpdst);
} else
{
s = buf;
while ( *s != '\0' )
{
if ( *s == '$' && *(char *)(s + 1) == '(' )
{
s += 2;
if ( strncmp(s,"INSTDIR)",8) == 0 )
{
s += 8;
FS_cnvFn(tmp,instdir);
len = strlen(tmp);
if ( len > 0 && tmp[len-1] == '/' )
tmp[len-1] = '\0';
FS_dosFn(tmp2,tmp);
fputs(tmp2,fpdst);
}
} else
{
ch = (*s) & 0xFF;
++s;
fputc(ch,fpdst);
}
}
}
}
ret = NORMAL;
_ERR:
if ( fpsrc != NULL ) FS_fclose(fpsrc);
if ( fpdst != NULL ) FS_fclose(fpdst);
return (ret);
}