static int helpBufferLoad(meBuffer *hbp) { if(!meModeTest(hbp->mode,MDLOCK)) { meUByte fname[meBUF_SIZE_MAX] ; meModeSet(hbp->mode,MDLOCK) ; if(!fileLookup(helpFileName,NULL,meFL_CHECKDOT|meFL_USESRCHPATH,fname)) return mlwrite(MWABORT,(meUByte *)"[Help file \"%s\" is not on-line]",helpFileName); /* and read the stuff in */ meModeClear(hbp->mode,MDVIEW) ; ffReadFile(fname,meRWFLAG_SILENT,hbp,hbp->baseLine,0,0,0) ; helpBufferReset(hbp) ; } return true ; }
/* * regRead * Open the specified registory. * Mode options are:- * * default - Exists in memory * meREGMODE_RELOAD - Delete the existing file, * meREGMODE_MERGE - Merge the existing file. */ meRegNode * regRead(meUByte *rname, meUByte *fname, int mode) { meLine hlp, *lp ; meUByte *fn ; meRegNode *rnp; /* Root node pointer */ meUInt flags ; /* Find the registry entry */ if(*rname == '/') rname++; if ((rnp = rnodeFind (&root, rname)) != NULL) { /* if not merging or reloading then we've can use the existing node */ if (!(mode & (meREGMODE_MERGE|meREGMODE_RELOAD))) goto finished; fn = rnp->value ; } else fn = NULL ; if(mode & meREGMODE_FROOT) { /* find the registry file */ /* have we been given a valid file name ? */ if ((fname != NULL) && (fname [0] != '\0')) { meUByte filename[meBUF_SIZE_MAX] ; /* Filename */ if(fileLookup(fname,(meUByte *)".erf",meFL_CHECKDOT|meFL_USESRCHPATH,filename)) fn = meStrdup(filename) ; else fn = meStrdup(fname) ; } /* else use the old file name (if there is one) else fail */ else if(fn == NULL) { mlwrite(MWABORT|MWWAIT,(meUByte *)"[No file name given to load]") ; return NULL ; } /* Load in the registry file */ flags = meRWFLAG_SILENT ; hlp.next = &hlp ; hlp.prev = &hlp ; if(mode & meREGMODE_CRYPT) { meUByte s1[meBUF_SIZE_MAX], *s2 ; int len ; meCrypt(NULL,0); meStrcpy(s1,getFileBaseName(fn)) ; len = meStrlen(s1) + 1 ; meCrypt(s1,len) ; if((s2=meUserName) == NULL) s2 = (meUByte *) "" ; meStrcpy(s1+len,s2) ; meCrypt(s1,len+meStrlen(s1+len)+1) ; flags |= meRWFLAG_CRYPT ; } if((ffReadFile(fn,flags,NULL,&hlp,0,0,0) == meABORT) && !(mode & meREGMODE_CREATE)) { mlwrite (MWABORT|MWWAIT,(meUByte *)"[Cannot load registry file %s]", fname); return NULL ; } lp = &hlp ; } else lp = frameCur->bufferCur->baseLine ; if ((rnp != NULL) && (mode & meREGMODE_RELOAD)) { /* Want to replace with new one. so delete old */ if(fn == rnp->value) rnp->value = NULL ; rnodeUnlink (rnp); rnodeDelete (rnp); rnp = NULL; } /* Construct the node for the file node */ if (rnp == NULL) { /* Construct the node */ if((rnp = regSet (&root, rname, NULL)) == NULL) return NULL ; rnp->mode = 0; } /* set the new file name */ if(rnp->value != fn) { meNullFree(rnp->value) ; rnp->value = fn ; } /* Now parse the registry file */ parseFile(rnp, lp) ; if(mode & meREGMODE_FROOT) meLineLoopFree(lp,0) ; finished: rnp->mode |= mode & meREGMODE_STORE_MASK ; return rnp ; }