예제 #1
1
파일: iofunc.cpp 프로젝트: chanpi/MyLisp
CELLP open_f(CELLP args)	// ファイルを開く
{
	char type, fname[NAMELEN] = {0};
	int i;
	FILE *lfp = NULL;
	NUMP np;
	STR mode;

	if (args->id != _CELL) {
		return error(NEA);
	}
	if (args->car->id != _ATOM) {
		return error(IAA);
	}
	getfname((STR)fname, (ATOMP)(args->car));
	if ((args = args->cdr)->id != _CELL) {
		mode = (STR)"r";
	} else if (args->car->id != _ATOM) {
		return error(IAA);
	} else {
		mode = ((ATOMP)(args->car))->name;
	}
	for (i = 3; i < NFILES; ++i) {
		if (fp[i].ptr == NULL) {
			switch (*mode) {
			case 'w':
				type = WRITEFILE;
				break;
			case 'a':
				type = APPENDFILE;
				break;
			default:
				type = READFILE;
			}
			if (*(mode+1) == 'b') {
				type |= BINF;
			}
			lfp = fopen(fname, modestr[type]);
			if (lfp == NULL) {
				return error(FNA);
			}
			fp[i].mode = type;
			fp[i].ptr = lfp;
			np = newnum(); ec;
			np->value.fix = (long)i;
			return (CELLP)np;
		}
	}
	return error(TMF);
}
예제 #2
0
void DLLCALL js_PrepareToExecute(JSContext *cx, JSObject *obj, const char *filename, const char* startup_dir)
{
	JSString*	str;
	jsval		val;

	if(JS_GetProperty(cx, obj, "js", &val) && JSVAL_IS_OBJECT(val)) {
		JSObject* js = JSVAL_TO_OBJECT(val);
		char	dir[MAX_PATH+1];

		if(filename!=NULL) {
			char* p;

			if((str=JS_NewStringCopyZ(cx, filename)) != NULL)
				JS_DefineProperty(cx, js, "exec_path", STRING_TO_JSVAL(str)
					,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY);
			if((str=JS_NewStringCopyZ(cx, getfname(filename))) != NULL)
				JS_DefineProperty(cx, js, "exec_file", STRING_TO_JSVAL(str)
					,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY);
			SAFECOPY(dir,filename);
			p=getfname(dir);
			*p=0;
			if((str=JS_NewStringCopyZ(cx, dir)) != NULL)
				JS_DefineProperty(cx, js, "exec_dir", STRING_TO_JSVAL(str)
					,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY);
		}
		if(startup_dir==NULL)
			startup_dir="";
		if((str=JS_NewStringCopyZ(cx, startup_dir)) != NULL)
			JS_DefineProperty(cx, js, "startup_dir", STRING_TO_JSVAL(str)
				,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY);
	}
#if defined(_MSC_VER)
	_set_invalid_parameter_handler(msvc_invalid_parameter_handler);
#endif
}
예제 #3
0
파일: file.cpp 프로젝트: ftnapps/pkg-sbbs
void sbbs_t::fileinfo(file_t* f)
{
	char	ext[513];
	char 	tmp[512];
	char	path[MAX_PATH+1];
	char	fpath[MAX_PATH+1];
	uint	i,j;

	for(i=0;i<usrlibs;i++)
		if(usrlib[i]==cfg.dir[f->dir]->lib)
			break;
	for(j=0;j<usrdirs[i];j++)
		if(usrdir[i][j]==f->dir)
			break;

	getfilepath(&cfg,f,path);
	bprintf(text[FiLib],i+1,cfg.lib[cfg.dir[f->dir]->lib]->lname);
	bprintf(text[FiDir],j+1,cfg.dir[f->dir]->lname);
	bprintf(text[FiFilename],getfname(path));
	SAFECOPY(fpath,path);
	fexistcase(fpath);
	if(strcmp(path,fpath) && strcmp(f->desc,getfname(fpath)))	/* Different "actual" filename */
		bprintf(text[FiFilename],getfname(fpath));

	if(f->size!=-1L)
		bprintf(text[FiFileSize],ultoac(f->size,tmp));
	bprintf(text[FiCredits]
		,(cfg.dir[f->dir]->misc&DIR_FREE || !f->cdt) ? "FREE" : ultoac(f->cdt,tmp));
	bprintf(text[FiDescription],f->desc);
	bprintf(text[FiUploadedBy],f->misc&FM_ANON ? text[UNKNOWN_USER] : f->uler);
	if(f->date)
		bprintf(text[FiFileDate],timestr(&f->date));
	bprintf(text[FiDateUled],timestr(&f->dateuled));
	bprintf(text[FiDateDled],f->datedled ? timestr(&f->datedled) : "Never");
	bprintf(text[FiTimesDled],f->timesdled);
	if(f->size!=-1L)
		bprintf(text[FiTransferTime],sectostr(f->timetodl,tmp));
	if(f->altpath) {
		if(f->altpath<=cfg.altpaths) {
			if(SYSOP)
				bprintf(text[FiAlternatePath],cfg.altpath[f->altpath-1]); 
		}
		else
			bprintf(text[InvalidAlternatePathN],f->altpath); 
	}
	CRLF;
	if(f->misc&FM_EXTDESC) {
		getextdesc(&cfg,f->dir,f->datoffset,ext);
		CRLF;
		putmsg(ext,P_NOATCODES);
		CRLF; }
	if(f->size==-1L)
		bprintf(text[FileIsNotOnline],f->name);
	if(f->opencount)
		bprintf(text[FileIsOpen],f->opencount,f->opencount>1 ? "s" : nulstr);

}
예제 #4
0
파일: iofunc.cpp 프로젝트: chanpi/MyLisp
CELLP load_f(CELLP arg)
{
	FILE *lfp, *bak;
	char fname[NAMELEN] = {0};

	if (arg->id != _CELL) {
		return error(NEA);
	}
	bak = cur_fpi;
	pushbuf();
	for (;;) {
		if (arg->car->id != _ATOM) {
			return error(IAA);
		}
		getfname((STR)fname, (ATOMP)(arg->car));
		fprintf(cur_fpo, "\nloading... %s\n", fname);
		if ((lfp = fopen(fname, "r")) == NULL) {
			return error(FNA);
		}
		cur_fpi = lfp;
		toplevel_function();	// トップレベルループを呼んでS式の読み込みと評価を行う
		fclose(lfp);	ec;
		*txtp = '\0';
		if ((arg = arg->cdr)->id != _CELL) {
			break;
		}
	}
	cur_fpi = bak;
	return (CELLP)t;
}
예제 #5
0
파일: getmail.c 프로젝트: ftnapps/pkg-sbbs
void DLLCALL delfattach(scfg_t* cfg, smbmsg_t* msg)
{
    char str[MAX_PATH+1];
	char str2[MAX_PATH+1];
	char *tp,*sp,*p;

	if(msg->idx.to==0) {	/* netmail */
		sprintf(str,"%sfile/%04u.out/%s"
			,cfg->data_dir,msg->idx.from,getfname(msg->subj));
		remove(str);
		sprintf(str,"%sfile/%04u.out"
			,cfg->data_dir,msg->idx.from);
		rmdir(str);
		return;
	}
		
	strcpy(str,msg->subj);
	tp=str;
	while(1) {
		p=strchr(tp,' ');
		if(p) *p=0;
		sp=strrchr(tp,'/');              /* sp is slash pointer */
		if(!sp) sp=strrchr(tp,'\\');
		if(sp) tp=sp+1;
		sprintf(str2,"%sfile/%04u.in/%s"  /* str2 is path/fname */
			,cfg->data_dir,msg->idx.to,tp);
		remove(str2);
		if(!p)
			break;
		tp=p+1; }
	sprintf(str,"%sfile/%04u.in",cfg->data_dir,msg->idx.to);
	rmdir(str);                     /* remove the dir if it's empty */
}
예제 #6
0
int usage(const char* fname)
{
	printf("usage: %s [ini file] [options]\n"
		"\nOptions:"
		"\n"
		"\n-null                 No 'AT commands' sent to modem"
		"\n-com <device>         Specify communications port device"
		"\n-baud <rate>          Specify baud rate for communications port"
		"\n-live [handle]        Communications port is already open/connected"
		"\n-nohangup             Do not hangup (drop DTR) after call"
		"\n-host <addr | name>   Specify TCP server hostname or IP address"
		"\n-port <number>        Specify TCP port number"
		"\n-debug                Enable debug log output"
#if defined(_WIN32)
		"\n\nNT Service\n"
		"\n-install              install and enable NT service (%s)"
		"\n-service              run as an NT service (background execution)"
		"\n-remove               remove NT service"
		"\n-enable               enable NT service (auto-start during boot)"
		"\n-disable              disable NT service"
#endif
		"\n"
		,getfname(fname)
		,NAME);

	return 0;
}
예제 #7
0
파일: cmdsub.cpp 프로젝트: dworkin/dgd
/*
 * NAME:	cmdbuf->read()
 * DESCRIPTION:	insert a file in the current edit buffer
 */
int cb_read(cmdbuf *cb)
{
    char buffer[STRINGSZ];
    io iob;

    not_in_global(cb);

    if (!getfname(cb, buffer)) {
	if (cb->fname[0] == '\0') {
	    error("No current filename");
	}
	/* read current file, by default. I don't know why, but ex has it
	   that way. */
	strcpy(buffer, cb->fname);
    }

    cb_do(cb, cb->first);
    output("\"%s\" ", buffer);
    if (!io_load(cb->edbuf, buffer, cb->first, &iob)) {
	error("is unreadable");
    }
    io_show(&iob);

    cb->edit++;
    cb->cthis = cb->first + iob.lines;

    return 0;
}
예제 #8
0
파일: cmdsub.cpp 프로젝트: dworkin/dgd
/*
 * NAME:	cmdbuf->file()
 * DESCRIPTION:	get/set the file name & current line, etc.
 */
int cb_file(cmdbuf *cb)
{
    not_in_global(cb);

    if (getfname(cb, cb->fname)) {
	/* file name is changed: mark the file as "not edited" */
	cb->flags |= CB_NOIMAGE;
    }

    /* give statistics */
    if (cb->fname[0] == '\0') {
	output("No file");
    } else {
	output("\"%s\"", cb->fname);
    }
    if (cb->flags & CB_NOIMAGE) {
	output(" [Not edited]");
    }
    if (cb->edit > 0) {
	output(" [Modified]");
    }
    output(" line %ld of %ld --%d%%--\012", /* LF */
	   (long) cb->cthis, (long) cb->edbuf->lines,
	   (cb->edbuf->lines == 0) ? 0 :
				(int) ((100 * cb->cthis) / cb->edbuf->lines));

    return 0;
}
예제 #9
0
/*
Open the output file, initialize the output stream, and return the file's
length. If reload is true, first truncate any preexisting file
*/
unsigned long Download::openfile(char *url, bool reload, ofstream &fout, char *name)
{
    char fname[MAX_FILENAME_SIZE];

    if(!getfname(url, fname))
        throw DLExc("File name error");

    for(int i = 0; i < 5 && (!fout.is_open() || !fout); ++i)
    {
         if(!reload)
            fout.open(fname, ios::binary | ios::out | ios::app | ios::ate);
        else
            fout.open(fname, ios::binary | ios::out | ios::trunc);

         if(!fout.is_open() || !fout)
         {
            char buff[MAX_FILENAME_SIZE];
            strcpy(buff, fname);
            sprintf(fname, "%s-%u", buff, time(0)-i);
            fout.clear();
         }
    }

    if(!fout)
        throw DLExc("Could not open TEMP file!");

    strcpy(name, fname);

    // get current file length
    return fout.tellp();
}
예제 #10
0
void subfunc2(void)
{
    char fname[MAXSTRLEN];

    strcpy(fname, FNAME);
    if (getfname ("File to browse:", fname, 50))
        showfile(fname);
}
예제 #11
0
void sbbs_t::errormsg(int line, const char *source, const char* action, const char *object
					  ,ulong access, const char *extinfo)
{
	const char*	src;
    char	str[2048];

	/* prevent recursion */
	if(errormsg_inside)
		return;
	errormsg_inside=true;

	/* Don't log path to source code */
	src=getfname(source);
	safe_snprintf(str,sizeof(str),"ERROR %d (%s) "
#ifdef _WIN32
		"(WinError %u) "
#endif
		"in %s line %u %s \"%s\" access=%ld %s%s"
		,errno,STRERROR(errno)
#ifdef _WIN32
		,GetLastError()
#endif
		,src, line, action, object, access
		,extinfo==NULL ? "":"info="
		,extinfo==NULL ? "":extinfo);
	if(online==ON_LOCAL)
		eprintf(LOG_ERR,"%s",str);
	else {
		int savatr=curatr;
		lprintf(LOG_ERR,"Node %d !%s",cfg.node_num, str);
		attr(cfg.color[clr_err]);
		bprintf("\7\r\n!ERROR %s %s\r\n", action, object);   /* tell user about error */
		bputs("\r\nThe sysop has been notified.\r\n");
		pause();
		attr(savatr);
		CRLF;
	}
	safe_snprintf(str,sizeof(str),"ERROR %s %s", action, object);
	if(cfg.node_num>0) {
		getnodedat(cfg.node_num,&thisnode,1);
		if(thisnode.errors<UCHAR_MAX)
			thisnode.errors++;
		criterrs=thisnode.errors;
		putnodedat(cfg.node_num,&thisnode);
	}
	now=time(NULL);

	if(logfile_fp!=NULL) {
		if(logcol!=1)
			fprintf(logfile_fp,"\r\n");
		fprintf(logfile_fp,"!! %s\r\n",str);
		logcol=1;
		fflush(logfile_fp);
	}

	errormsg_inside=false;
}
예제 #12
0
int	DLLCALL	glob(const char *pattern, int flags, void* unused, glob_t* glob)
{
    struct	_finddata_t ff;
	long	ff_handle;
	size_t	found=0;
	char	path[MAX_PATH+1];
	char*	p;
	char**	new_pathv;

	if(!(flags&GLOB_APPEND)) {
		glob->gl_pathc=0;
		glob->gl_pathv=NULL;
	}

	ff_handle=_findfirst((char*)pattern,&ff);
	while(ff_handle!=-1) {
		if((flags&GLOB_PERIOD || (ff.name[0]!='.' && !(ff.attrib&_A_HIDDEN))) &&
			(!(flags&GLOB_ONLYDIR) || ff.attrib&_A_SUBDIR)) {
			if((new_pathv=(char**)realloc(glob->gl_pathv
				,(glob->gl_pathc+1)*sizeof(char*)))==NULL) {
				globfree(glob);
				return(GLOB_NOSPACE);
			}
			glob->gl_pathv=new_pathv;

			/* build the full pathname */
			SAFECOPY(path,pattern);
			p=getfname(path);
			*p=0;
			strcat(path,ff.name);

			if((glob->gl_pathv[glob->gl_pathc]=(char*)malloc(strlen(path)+2))==NULL) {
				globfree(glob);
				return(GLOB_NOSPACE);
			}
			strcpy(glob->gl_pathv[glob->gl_pathc],path);
			if(flags&GLOB_MARK && ff.attrib&_A_SUBDIR)
				strcat(glob->gl_pathv[glob->gl_pathc],"/");

			glob->gl_pathc++;
			found++;
		}
		if(_findnext(ff_handle, &ff)!=0) {
			_findclose(ff_handle);
			ff_handle=-1;
		}
	}

	if(found==0)
		return(GLOB_NOMATCH);

	if(!(flags&GLOB_NOSORT)) {
		qsort(glob->gl_pathv,found,sizeof(char*),glob_compare);
	}

	return(0);	/* success */
}
예제 #13
0
char* DLLCALL getfext(const char* path)
{
	char *fname;
	char *fext;

	fname=getfname(path);
	fext=strrchr(fname,'.');
	if(fext==NULL || fext==fname)
		return(NULL);
	return(fext);
}
예제 #14
0
파일: MAPC.C 프로젝트: Mikelle02/GameMaker
int loadmap(void)
  {
  FILE *fp;
  char fname[MAXFILENAMELEN]="";
 
  if (!getfname(5,7,"Enter map file to load:",ext,fname)) return(FALSE);
  fp=fopen(fname,"rb"); // must exist because getfname searches for it.
  fread( (char*) &map,sizeof(mapstruct),MLEN*MWID,fp);
  fread( (char*) &mm,sizeof(monmapstruct),LASTMM,fp); 
  fclose(fp);
  strcpy((char*)mapcurfile,(char*)fname);
  return(TRUE);
  }
예제 #15
0
파일: file.c 프로젝트: smaclennan/zedit
void Zwrite_file(void)
{
	char path[PATHMAX + 1];
	const char *prompt = Argp ? "Write Region: " : "Write File: ";

	Arg = 0;
	*path = '\0';
	if (getfname(prompt, path) == 0) {
		free(Curbuff->fname);
		Curbuff->fname = strdup(path);
		Curbuff->mtime = 0;	/* this is no longer valid */
		Zsave_file();
		Curwdo->modeflags = INVALID;
	}
}
예제 #16
0
파일: genwrapper.cpp 프로젝트: tell/pbkz
    mat_ZZ getbasis(int n,int seed,double bit=10) {
        initialize();
        std::ostringstream fname;
        fname << getfname(n,seed,bit,0);

        mat_ZZ L;
        if (FileExists(fname)==true) {
            LoadLattice(L,fname.str());
        } else {
            gen_svpchallenge(L,n,to_ZZ(seed),bit);
#ifdef _allow_cachefiles
            SaveLattice(L,fname.str());
#endif
        }
        return L;
    }
예제 #17
0
파일: file.c 프로젝트: smaclennan/zedit
bool filesave(void)
{
	char path[PATHMAX + 1];

	Arg = 0;
	if (Curbuff->fname == NULL) {
		*path = '\0';
		if (getfname("File Name: ", path) == 0)
			Curbuff->fname = strdup(path);
		else
			return false;
		Curwdo->modeflags = INVALID;
	}
	putpaw("Writing %s", lastpart(Curbuff->fname));
	return zwritefile(Curbuff->fname);
}
예제 #18
0
파일: mime.c 프로젝트: K6BSD/SBBSUnstable
BOOL mimeattach(SOCKET socket, char* boundary, char* pathfile)
{
    char* fname = getfname(pathfile);

    sockprintf(socket,"--%s",boundary);
    sockprintf(socket,"Content-Type: application/octet-stream;");
    sockprintf(socket," name=\"%s\"",fname);
    sockprintf(socket,"Content-Transfer-Encoding: base64");
    sockprintf(socket,"Content-Disposition: attachment;");
    sockprintf(socket," filename=\"%s\"",fname);
    sockprintf(socket,"");
    if(!base64out(socket,pathfile))
        return(FALSE);
    sockprintf(socket,"");
    return(TRUE);
}
예제 #19
0
파일: file.c 프로젝트: smaclennan/zedit
static int get_findfile(const char *prompt)
{
	struct stat sbuf;

	if (!*Fname)
		zgetcwd(Fname, PATHMAX);
	else if (stat(Fname, &sbuf) == 0)
		/* If Fname is a file, convert to directory */
		if (sbuf.st_mode & S_IFREG) {
			char *p = strrchr(Fname, '/');
			if (p)
				*(p + 1) = '\0';
		}

	return getfname(prompt, Fname);
}
예제 #20
0
파일: cmdsub.cpp 프로젝트: dworkin/dgd
/*
 * NAME:	cmdbuf->write()
 * DESCRIPTION:	write a range of lines to a file
 */
int cb_write(cmdbuf *cb)
{
    char buffer[STRINGSZ];
    bool append;
    io iob;

    not_in_global(cb);

    if (strncmp(cb->cmd, ">>", 2) == 0) {
	append = TRUE;
	cb->cmd = skipst(cb->cmd + 2);
    } else {
	append = FALSE;
    }

    /* check if write can be done */
    if (!getfname(cb, buffer)) {
	if (cb->fname[0] == '\0') {
	    error("No current filename");
	}
	strcpy(buffer, cb->fname);
    }
    if (strcmp(buffer, cb->fname) == 0) {
	if (cb->first == 1 && cb->last == cb->edbuf->lines) {
	    if ((cb->flags & (CB_NOIMAGE|CB_EXCL)) == CB_NOIMAGE) {
		error("File is changed (use w! to override)");
	    }
	} else if (!(cb->flags & CB_EXCL)) {
	    error("Use w! to write partial buffer");
	}
    }

    output("\"%s\" ", buffer);
    if (!io_save(cb->edbuf, buffer, cb->first, cb->last, append, &iob)) {
	error("write failed");
    }
    io_show(&iob);

    if (cb->first == 1 && cb->last == cb->edbuf->lines) {
	/* file is now perfect image of editbuffer in memory */
	cb->flags &= ~CB_NOIMAGE;
	cb->edit = 0;
    }

    return 0;
}
예제 #21
0
파일: genwrapper.cpp 프로젝트: tell/pbkz
    mat_ZZ getlllbasis(int n,int seed,double bit=10) {
        initialize();
        std::ostringstream fname;
        fname << getfname(n,seed,bit,1);
        mat_ZZ L;
        
        if (FileExists(fname)==true) {
            LoadLattice(L,fname.str());
        } else {
            L = getbasis(n,seed,bit);
            ::BigLLL(L,0,0.999,VL1);
#ifdef _allow_cachefiles
            SaveLattice(L,fname.str());
#endif
        }
        return L;
    }
예제 #22
0
// load the contents of 290.rec and store in value_out. Returns 0 on success.
// If there is no such file or an error occurs, writes 0 to value_out.
bool niku_load(uint32_t *value_out)
{
FILE *fp;
uint8_t buffer[20];
uint32_t *result = (uint32_t *)buffer;
int i, j;

	const char *fname = getfname();
	fp = fopen(fname, "rb");
	if (!fp)
	{
		stat("niku_load: couldn't open file '%s'", fname);
		if (value_out) *value_out = 0;
		return 1;
	}
	
	fread(buffer, 20, 1, fp);
	fclose(fp);
	
	for(i=0;i<4;i++)
	{
		uint8_t key = buffer[i+16];
		
		j = i * 4;
		buffer[j] -= key;
		buffer[j+1] -= key;
		buffer[j+2] -= key;
		buffer[j+3] -= (key / 2);
	}
	
	if ((result[0] != result[1]) || \
		(result[0] != result[2]) || \
		(result[0] != result[3]))
	{
		stat("niku_load: value mismatch; '%s' corrupt", fname);
		if (value_out) *value_out = 0;
	}
	else
	{
		stat("niku_load: loaded value 0x%x from %s", *result, fname);
		if (value_out) *value_out = *result;
	}
	
	return 0;
}
예제 #23
0
// save the timestamp in value to 290.rec.
bool niku_save(uint32_t value)
{
uint8_t buf_byte[20];
uint32_t *buf_dword = (uint32_t *)buf_byte;

	// place values
	buf_dword[0] = value;
	buf_dword[1] = value;
	buf_dword[2] = value;
	buf_dword[3] = value;
	
	// generate keys
	buf_byte[16] = random(0, 255);
	buf_byte[17] = random(0, 255);
	buf_byte[18] = random(0, 255);
	buf_byte[19] = random(0, 255);
	
	// encode each copy
	for(int i=0;i<4;i++)
	{
		uint8_t *ptr = (uint8_t *)&buf_dword[i];
		uint8_t key = buf_byte[i+16];
		
		ptr[0] += key;
		ptr[1] += key;
		ptr[2] += key;
		ptr[3] += key / 2;
	}
	
	const char *fname = getfname();
	FILE *fp = fopen(fname, "wb");
	if (!fp)
	{
		staterr("niku_save: failed to open '%s'", fname);
		return 1;
	}
	
	fwrite(buf_byte, 20, 1, fp);
	fclose(fp);
	
	stat("niku_save: wrote value 0x%08x", value);
	return 0;
}
예제 #24
0
void DLLCALL _splitpath(const char *path, char *drive, char *dir, char *fname, char *ext)
{
	char*	p;

	ext[0]=0;
	drive[0]=0;			/* no drive letters on Unix */

	strcpy(dir,path);	/* Optional directory path, including trailing slash. */
	p=getfname(dir);
	strcpy(fname,p);	/* Base filename (no extension) */
	if(p==dir)
		dir[0]=0;		/* no directory specified in path */
	else
		*p=0;			/* truncate dir at filename */
	p=getfext(fname);
	if(p!=NULL) {
		strcpy(ext,p);	/* Optional filename extension, including leading period (.) */
		*p=0;
	}
}
예제 #25
0
파일: cmdsub.cpp 프로젝트: dworkin/dgd
/*
 * NAME:	cmdbuf->edit()
 * DESCRIPTION:	edit a new file
 */
int cb_edit(cmdbuf *cb)
{
    io iob;

    not_in_global(cb);

    if (cb->edit > 0 && !(cb->flags & CB_EXCL)) {
	error("No write since last change (edit! overrides)");
    }

    getfname(cb, cb->fname);
    if (cb->fname[0] == '\0') {
	error("No current filename");
    }

    Alloc::staticMode();
    eb_clear(cb->edbuf);
    Alloc::dynamicMode();
    cb->flags &= ~CB_NOIMAGE;
    cb->edit = 0;
    cb->first = cb->cthis = 0;
    memset(cb->mark, '\0', sizeof(cb->mark));
    cb->buf = 0;
    memset(cb->zbuf, '\0', sizeof(cb->zbuf));
    cb->undo = (block) -1;	/* not 0! */

    output("\"%s\" ", cb->fname);
    if (!io_load(cb->edbuf, cb->fname, cb->first, &iob)) {
	error("is unreadable");
    }
    io_show(&iob);
    if (iob.zero > 0 || iob.split > 0 || iob.ill) {
	/* the editbuffer in memory is not a perfect image of the file read */
	cb->flags |= CB_NOIMAGE;
    }

    cb->cthis = iob.lines;

    return 0;
}
예제 #26
0
파일: genwrapper.cpp 프로젝트: tell/pbkz
    mat_ZZ getbasis(int n,int seed,vec_ZZ& phi,double bit=10) {
        initialize();
        
        std::ostringstream fname;
        fname << getfname(n,seed,bit,0);

        mat_ZZ L;
        if (FileExists(fname)==true) {
            LoadLattice(L,fname.str());
            fname << ".phi";
            LoadElement(phi,fname.str());
        } else {
            vec_ZZ phi;
            //n stands for index
            gen_idealsvpchallenge(L,n,to_ZZ(seed),phi); 
#ifdef _allow_cachefiles
            SaveLattice(L,fname.str());
            fname << ".phi";
            SaveElement(phi,fname.str());
#endif
        }
        return L;
    }
예제 #27
0
파일: sexyz.c 프로젝트: ftnapps/pkg-sbbs
char* dszlog_filename(char* str)
{
	char*		p=str;
	static char	path[MAX_PATH+1];

#ifdef _WIN32
	char sfpath[MAX_PATH+1];
	if(dszlog_short) {
		SAFECOPY(sfpath,str);
		GetShortPathName(str,sfpath,sizeof(sfpath));
		p=sfpath;
	}
#endif

	if(!dszlog_path)
		p=getfname(p);

	if(!dszlog_quotes)
		return(p);

	SAFEPRINTF(path,"\"%s\"",p);
	return(path);
}
예제 #28
0
int removecase(const char *path)
{
	char inpath[MAX_PATH+1];
	char fname[MAX_PATH*4+1];
	char tmp[5];
	char *p;
	int  i;

	if(strchr(path,'?') || strchr(path,'*'))
		return(-1);
	SAFECOPY(inpath,path);
	p=getfname(inpath);
	fname[0]=0;
	for(i=0;p[i];i++)  {
		if(isalpha(p[i]))
			sprintf(tmp,"[%c%c]",toupper(p[i]),tolower(p[i]));
		else
			sprintf(tmp,"%c",p[i]);
		strncat(fname,tmp,MAX_PATH*4);
	}
	*p=0;

	return(delfiles(inpath,fname)?-1:0);
}
예제 #29
0
BOOL DLLCALL fexistcase(char *path)
{
#if defined(_WIN32)

	char*	fname;
	long	handle;
	struct _finddata_t f;

	if(access(path,0)==-1 && !strchr(path,'*') && !strchr(path,'?'))
		return(FALSE);

	if((handle=_findfirst((char*)path,&f))==-1)
		return(FALSE);

 	_findclose(handle);

 	if(f.attrib&_A_SUBDIR)
		return(FALSE);

	fname=getfname(path);	/* Find filename in path */
	strcpy(fname,f.name);	/* Correct filename */

	return(TRUE);

#else /* Unix or OS/2 */

	char globme[MAX_PATH*4+1];
	char fname[MAX_PATH+1];
	char tmp[5];
	char *p;
	int  i;
	glob_t	glb;

	if(path[0]==0)		/* work around glibc bug 574274 */
		return FALSE;

	if(!strchr(path,'*') && !strchr(path,'?') && fnameexist(path))
		return(TRUE);

	SAFECOPY(globme,path);
	p=getfname(globme);
	SAFECOPY(fname,p);
	*p=0;
	for(i=0;fname[i];i++)  {
		if(isalpha(fname[i]))
			sprintf(tmp,"[%c%c]",toupper(fname[i]),tolower(fname[i]));
		else
			sprintf(tmp,"%c",fname[i]);
		strncat(globme,tmp,MAX_PATH*4);
	}
#if 0
	if(strcspn(path,"?*")!=strlen(path))  {
		sprintf(path,"%.*s",MAX_PATH,globme);
		return(fexist(path));
	}
#endif

	if(glob(globme,GLOB_MARK,NULL,&glb) != 0)
		return(FALSE);

	if(glb.gl_pathc>0)  {
		for(i=0;i<glb.gl_pathc;i++)  {
			if(*lastchar(glb.gl_pathv[i]) != '/')
				break;
		}
		if(i<glb.gl_pathc)  {
			sprintf(path,"%.*s",MAX_PATH,glb.gl_pathv[i]);
			globfree(&glb);
			return TRUE;
		}
	}

	globfree(&glb);
	return FALSE;

#endif
}
예제 #30
0
int main(int argc, char** argv)
{
	int		argn;
	char*	arg;
	char*	p;
	char	path[MAX_PATH+1];
	char	fname[MAX_PATH+1];
	char	ini_fname[MAX_PATH+1];

	/*******************************/
	/* Generate and display banner */
	/*******************************/
	sscanf("$Revision$", "%*s %s", revision);

	sprintf(banner,"\n%s v%s-%s"
		" Copyright %s Rob Swindell"
		,TITLE
		,revision
		,PLATFORM_DESC
		,__DATE__+7
		);

	fprintf(stdout,"%s\n\n", banner);

	/**********************/
	/* Parse command-line */
	/**********************/

	for(argn=1; argn<argc; argn++) {
		arg=argv[argn];
		while(*arg=='-') 
			arg++;
		if(stricmp(arg,"help")==0 || *arg=='?')
			return usage(argv[0]);
#ifdef _WIN32
		else if(stricmp(arg,"service")==0)
			daemonize=TRUE;
		else if(stricmp(arg,"install")==0)
			return install();
		else if(stricmp(arg,"remove")==0)
			return uninstall();
		else if(stricmp(arg,"disable")==0)
			return enable(FALSE);
		else if(stricmp(arg,"enable")==0)
			return enable(TRUE);
#endif
	}

	/******************/
	/* Read .ini file */
	/******************/
	/* Generate path/sexpots[.host].ini from path/sexpots[.exe] */
	SAFECOPY(path,argv[0]);
	p=getfname(path);
	SAFECOPY(fname,p);
	*p=0;
	if((p=getfext(fname))!=NULL) 
		*p=0;
	strcat(fname,".ini");

	iniFileName(ini_fname,sizeof(ini_fname),path,fname);
	parse_ini_file(ini_fname);

#if defined(_WIN32)
	if(daemonize) {

		SERVICE_TABLE_ENTRY  ServiceDispatchTable[] = 
		{ 
			{ NAME,	(void(WINAPI*)(DWORD, char**))service_loop	}, 
			{ NULL,			NULL										}	/* Terminator */
		};

		printf("Starting service control dispatcher.\n" );
		printf("This may take several seconds.  Please wait.\n" );

		if(!StartServiceCtrlDispatcher(ServiceDispatchTable)) {
			lprintf(LOG_ERR,"StartServiceCtrlDispatcher ERROR %d",GetLastError());
			return -1;
		}
		return 0;
	}
	SetConsoleCtrlHandler(ControlHandler, TRUE /* Add */);

#endif

	service_loop(argc,argv);

	return 0;
}