static appenv *getappenv() { #define SNAPSHOTS "snapshots" #define BACKUP "backup" #define SCREENSHOTS "screenshots" appenv *app = malloc(sizeof(appenv)); pushobject(app, freeappenv); app->basedir = pathcombc(gethomedir(), "." PACKAGE); createdirectory(app->basedir); app->snapshots = pathcombc(strdups(app->basedir), SNAPSHOTS); createdirectory(app->snapshots); app->backup = pathcombc(strdups(app->basedir), BACKUP); createdirectory(app->backup); app->screenshots = pathcombc(strdups(app->basedir), SCREENSHOTS); createdirectory(app->screenshots); #ifdef DEBUG app->debug = pathcombc(strdups(app->basedir), "debug"); createdirectory(app->debug); #endif return app; }
static BOOL defineSCIHOME(void) { #define BASEDIR ".Scilab" int ierr = 0; int buflen = PATH_MAX; int iflag = 0; char USERPATHSCILAB[PATH_MAX]; char USERHOMESYSTEM[PATH_MAX]; C2F(getenvc)(&ierr, "HOME", USERHOMESYSTEM, &buflen, &iflag); if (ierr) { return FALSE; } /* Set SCIHOME environment variable */ snprintf(USERPATHSCILAB, sizeof(USERPATHSCILAB), "%s%s%s", USERHOMESYSTEM, DIR_SEPARATOR, BASEDIR); snprintf(SCIHOMEPATH, sizeof(SCIHOMEPATH), "%s%s%s", USERPATHSCILAB, DIR_SEPARATOR, SCI_VERSION_STRING); /* creates directory if it does not exists */ if (!isdir(SCIHOMEPATH)) { if (!isdir(USERPATHSCILAB)) { createdirectory(USERPATHSCILAB); } if (createdirectory(SCIHOMEPATH)) { return TRUE; } } else { return TRUE; } return FALSE; }
static BOOL defineSCIHOME(void) { #define BASEDIR "Scilab" int ierr = 0; int buflen = PATH_MAX; int iflag = 0; char USERPATHSCILAB[PATH_MAX]; char USERHOMESYSTEM[PATH_MAX]; char *SHORTUSERHOMESYSTEM = NULL; BOOL bConverted = FALSE; C2F(getenvc)(&ierr, "APPDATA", USERHOMESYSTEM, &buflen, &iflag); /* if APPDATA not found we try with USERPROFILE */ if (ierr) { C2F(getenvc)(&ierr, "USERPROFILE", USERHOMESYSTEM, &buflen, &iflag); } /* convert long path to short path format : remove some special characters */ SHORTUSERHOMESYSTEM = getshortpathname(USERHOMESYSTEM, &bConverted); if (SHORTUSERHOMESYSTEM) { if (!isdir(SHORTUSERHOMESYSTEM)) { /* last chance, we try to get default all users profile */ C2F(getenvc)(&ierr, "ALLUSERSPROFILE", USERHOMESYSTEM, &buflen, &iflag); if (ierr) { FREE(SHORTUSERHOMESYSTEM); SHORTUSERHOMESYSTEM = NULL; return FALSE; } /* convert long path to short path format : remove some special characters */ SHORTUSERHOMESYSTEM = getshortpathname(USERHOMESYSTEM, &bConverted); if ( (!SHORTUSERHOMESYSTEM) || (!isdir(SHORTUSERHOMESYSTEM)) ) { if (SHORTUSERHOMESYSTEM) { FREE(SHORTUSERHOMESYSTEM); SHORTUSERHOMESYSTEM = NULL; } return FALSE; } } } else { if (SHORTUSERHOMESYSTEM) { FREE(SHORTUSERHOMESYSTEM); SHORTUSERHOMESYSTEM = NULL; } return FALSE; } /* checks that directory exists */ strcpy(USERHOMESYSTEM, SHORTUSERHOMESYSTEM); if (SHORTUSERHOMESYSTEM) { FREE(SHORTUSERHOMESYSTEM); SHORTUSERHOMESYSTEM = NULL; } /* Set SCIHOME environment variable */ snprintf(USERPATHSCILAB, sizeof(USERPATHSCILAB), "%s%s%s", USERHOMESYSTEM, DIR_SEPARATOR, BASEDIR); snprintf(SCIHOMEPATH, sizeof(SCIHOMEPATH), "%s%s%s", USERPATHSCILAB, DIR_SEPARATOR, SCI_VERSION_STRING); /* creates directory if it does not exists */ if (!isdir(SCIHOMEPATH)) { if (!isdir(USERPATHSCILAB)) { createdirectory(USERPATHSCILAB); } if (createdirectory(SCIHOMEPATH)) { return TRUE; } } else { return TRUE; } return FALSE; }
bool atcommand_createnavigationlua_sub(void) { int global_mob_idx = 17104; int n=0; int m; int mobidx, npcidx, warpidx; FILE *fp_mob, *fp_map, *fp_link, *fp_npc, *fp_npcdist, *fp_linkdist; int nlink = 0, nnpc = 0; struct s_map_npcdata *map_npcdata = NULL; struct walkpath_data_navi wpd; memset(&wpd, '\0', sizeof(wpd)); ShowStatus("Creating navigation LUA files. This can take several minutes.\n"); if (!createdirectory(DIRECTORYNAME)) { ShowError("do_navigationlua: Unable to create output directory.\n"); return false; } fp_mob = fopen(DIRECTORYNAME PATHSEP_STR "navi_mob_" NAMESUFFIX ".lua", "wt+"); fp_map = fopen(DIRECTORYNAME PATHSEP_STR "navi_map_" NAMESUFFIX ".lua", "wt+"); fp_link = fopen(DIRECTORYNAME PATHSEP_STR "navi_link_" NAMESUFFIX ".lua", "wt+"); fp_npc = fopen(DIRECTORYNAME PATHSEP_STR "navi_npc_" NAMESUFFIX ".lua", "wt+"); fp_npcdist = fopen(DIRECTORYNAME PATHSEP_STR "navi_npcdistance_" NAMESUFFIX ".lua", "wt+"); fp_linkdist = fopen(DIRECTORYNAME PATHSEP_STR "navi_linkdistance_" NAMESUFFIX ".lua", "wt+"); if( !fp_mob || !fp_map || !fp_link || !fp_npc || !fp_npcdist || !fp_linkdist ) { ShowError("do_navigationlua: Unable to open output file.\n"); return false; } map_npcdata = (struct s_map_npcdata *)aCalloc(sizeof(struct s_map_npcdata), map->count); ShowStatus("Stage 1: creating maps and objects list...\n"); writeheader(fp_map, "Navi_Map"); writeheader(fp_mob, "Navi_Mob"); writeheader(fp_npc, "Navi_Npc"); writeheader(fp_link, "Navi_Link"); writeheader(fp_npcdist, "Navi_NpcDistance"); writeheader(fp_linkdist, "Navi_Distance"); for( m=0; m < map->count; m++ ) { //int nmapnpc=0; atcommand_createnavigationlua_sub_map(fp_map, m); // Warps/NPCs for( npcidx = 0; npcidx < map->list[m].npc_num; npcidx++ ) { TBL_NPC *nd = map->list[m].npc[npcidx]; struct npc_data_append *nda; if( !nd ) continue; if( !(nda = getFromNPCD(nd, 0)) ) { CREATE(nda,struct npc_data_append,1); addToNPCD(nd, nda, 0, true); } if( nd->subtype == WARP ) { int mnext = map->mapindex2mapid(nd->u.warp.mapindex); if( mnext < 0 ) continue; nda->npcid = 13350 + nlink; atcommand_createnavigationlua_sub_warp(fp_link, nd, mnext, nlink); map_npcdata[mnext].inner_warps[map_npcdata[mnext].ninner_warps++] = nd; map_npcdata[m].outer_warps[map_npcdata[m].nouter_warps++] = nd; nlink++; } else { if( nd->class_ == -1 || nd->class_ == INVISIBLE_CLASS || nd->class_ == HIDDEN_WARP_CLASS || nd->class_ == FLAG_CLASS ) continue; nda->npcid = 11984 + nnpc; atcommand_createnavigationlua_sub_npc(fp_npc, nd, nnpc); map_npcdata[m].npcs[map_npcdata[m].nnpcs] = nd; map_npcdata[m].nnpcs++; nnpc++; } } // Mobs for( mobidx=0; mobidx < MAX_MOB_LIST_PER_MAP; mobidx++ ) { struct mob_db *mobinfo; if( !map->list[m].moblist[mobidx] ) continue; mobinfo = mob->db(map->list[m].moblist[mobidx]->class_); if( mobinfo == mob->dummy ) continue; atcommand_createnavigationlua_sub_mob(fp_mob, m, mobinfo, map->list[m].moblist[mobidx]->num, global_mob_idx+n); n++; } ShowStatus("Created %s objects list (%d/%d)\n", map->list[m].name, m+1, map->count); }