Ejemplo n.º 1
0
//---------------------------------------------------------------------------
// TVPInitializeBaseSystems
//---------------------------------------------------------------------------
void TVPInitializeBaseSystems()
{
	// set system archive delimiter
	tTJSVariant v;
	if(TVPGetCommandLine(TJS_W("-arcdelim"), &v))
		TVPArchiveDelimiter = ttstr(v)[0];

	// set default current directory
	{
		char drive[MAXDRIVE];
		char dir[MAXDIR];
		fnsplit(_argv[0], drive, dir, NULL, NULL);
		ttstr curdir(ttstr(drive)  + ttstr(dir));
		if(curdir.GetLastChar() != TJS_W('\\')) curdir += TJS_W('\\');
		TVPSetCurrentDirectory(curdir);
	}

	// load message map file
	bool load_msgmap = GetSystemSecurityOption("disablemsgmap") == 0;

	if(load_msgmap)
	{
		const tjs_char name_msgmap [] = TJS_W("msgmap.tjs");
		if(TVPIsExistentStorage(name_msgmap))
			TVPExecuteStorage(name_msgmap, NULL, false, TJS_W(""));
	}
}
Ejemplo n.º 2
0
//------------------------------------------------------------------------------

static int CopySelect(void)                                  //Копирование выбранных файлов
{
   char Name_Dir[260];
   if(Get_Name_Dir((Lan+94)->msg, Name_Dir, 0) < 0) return -1;//Запрос имени папки // if(Get_Name_Dir("Укажите диск или папку для записи", Name_Dir) < 0) return -1;  //Запрос имени папки
   UpdateWindow(MainWin);                                    //Восстановили окно после диалога выбора файла
   InitProgressBar = InitProgressBar1_2;                     //Функция прогресса для одного файла из группы
   ProgressBar = ProgressBar2;
   Close_ProgressBar = Close_ProgressBar1_2;

   char Driv[MAXDRIVE], Dir[MAXPATH], Name[MAXFILE], Ext[MAXEXT], Path[MAXPATH];
   fnsplit(Name_Dir, Driv, Dir, Name, Ext);
   lstrcpy(Path, Driv);
   lstrcat(Path, "\\");
   DWORD SectorsPerCluster, BytesPerSector, NumberOfFreeClusters, TotalNumberOfClusters;
   if(GetDiskFreeSpace(Path, &SectorsPerCluster, &BytesPerSector,
                       &NumberOfFreeClusters, &TotalNumberOfClusters) == 0)
      return ErrorSys1((Lan+46)->msg);                       //return ErrorSys1("Системная ошибка при запросе емкости диска.");
   BytesPerClaster = SectorsPerCluster * BytesPerSector;     //Число байт в кластере
   numAllInCl = 0;                                           //Суммарное число кластеров во всех копируемых файлах
   numAllFi = 0;                                             //Число копируемых файлов
   num_T_Fi = 0;                                             //Номер текущего копируемого файла
   numAllOutCl = 0;                                          //Суммарный число выходных кластеров
   int l = lstrlen(Name_Dir) - 1;
   if(*(Name_Dir + l) == '\\') *(Name_Dir + l) = 0;          //Для имени диска косая всегда есть
   if(Calc_SizeAllFile() < 0) return -1;                     //Вычисления для копирование выбранных файлов на диск ПК
   DWORDLONG allSize = numAllOutCl * BytesPerClaster;
   int ret = DiskFreeSpaceEx_F(Name_Dir, allSize);           //Проверка свободного места
   if(ret < 0) return -1;
   if(ret == 1) return CopySelect();                         //Копирование выбранной файлов на диск ПК (повторный запуск для запроса нового пути)
   InitProgressBar2_2(numAllInCl, (Lan+122)->msg);           //Функция прогресса для нескольких файлов // if(Get_Name_Dir("Укажите диск или папку для записи", Name_Dir) < 0) return -1;  //Запрос имени папки
   ret = Copy_AllFiles(Name_Dir);                            //Копирование выбранных файлов на диск ПК
   Close_ProgressBar2_2();
   return ret;
//------------------------------------------------------------------------------

int Change_Dir_For_File(char *NameF)                         //Изменение каталога (внесение нового файла)
{
   for(; ns_Dir<4*sClSec; ns_Dir++)                          //По всем возможным записям в одном кластере каталога (В каждом секторе 4 записи)
   {  if((s_Kat + ns_Dir)->pf.type == 0) break;              //Конец записей каталога
      WORD NameDel = *((WORD*)&(s_Kat + ns_Dir)->Name);
      if(NameDel == 0xE500 && (s_Kat + ns_Dir)->pf.ClSt == 0) break;//Это удаленное имя т.е. свободная строка
   }
   if(ns_Dir >= 4*sClSec)
      return Error1((Lan+181)->msg);                         //"В каталоге нет места для новой записи."
   ZeroMemory(s_Kat+ns_Dir, sizeof(One_Str_Cat));            //Все очистили
   char Driv[MAXDRIVE], Dir[MAXPATH], Name[MAXFILE], Ext[MAXEXT];

   fnsplit(NameF, Driv, Dir, Name, Ext);
   NameToKat(Name, Ext, s_Kat+ns_Dir);                       //Формирование имени файла в Unicode
   SYSTEMTIME sysTime;
   FILETIME TimeF;                                           //Дата и время входного файла
   FileTimeToLocalFileTime(&Time_inF, &TimeF);
   FileTimeToSystemTime(&TimeF, &sysTime);
   (s_Kat+ns_Dir)->pf.type = 32;                             //Тип файл
   (s_Kat+ns_Dir)->pf.ClSt = nCl_1;                          //Номер кластера начала файла
   (s_Kat+ns_Dir)->pf.Sec = sysTime.wSecond;
   (s_Kat+ns_Dir)->pf.Min = sysTime.wMinute;
   (s_Kat+ns_Dir)->pf.Hour = sysTime.wHour;
   (s_Kat+ns_Dir)->pf.Day = sysTime.wDay;
   (s_Kat+ns_Dir)->pf.Mon = sysTime.wMonth;
   (s_Kat+ns_Dir)->pf.Year = sysTime.wYear;
   (s_Kat+ns_Dir)->pf.SizeF = Size_inF.QuadPart;
   Add_Item_To_Tree(NameF);                                  //Добавления строки в дерево
Ejemplo n.º 4
0
void main(int argc, char **argv) {
	static char base1[64];
	static char base2[64];
	static char full[128];
	ffblk ff;

	if (argc < 2) {
		printf("ra4c <file> ...\n");
		return;
	}

	while (argc > 1) {
		fnsplit(argv[1], base2, base1, NULL, NULL);
		strcat(base2, base1);
		if (findfirst(argv[1], &ff, FA_RDONLY | FA_ARCH | FA_HIDDEN) != 0) {
			printf("no file find. \n");
			return;
		}

		do {
			strcpy(full, base2);
			strcat(full, ff.ff_name);
			printf("--> %s \n", full);
			replace(full, base2);
		} while (findnext(&ff) == 0);
		argc--;
		argv++;
	}
	return;
}
Ejemplo n.º 5
0
Archivo: Main.cpp Proyecto: d3x0r/SACK
//---------------------------------------------------------------------------
void __fastcall TMainForm::mnuSaveClick(TObject *Sender)
{
  if( RichEditReport->Lines->Count == 0 )
  {
    MsgBoxStop( "I can't find anything to save !.");
    return;
  }

  // Grab the graphic's filename and change to "txt" extension
  {
  char    szFile[ MAXFILE ];
  char    szExt[ MAXEXT ];
  char    szDest[ MAXPATH ];
  String  as;

    fnsplit( OpenDialog1->FileName.c_str(), NULL, NULL, szFile, szExt );

    memset( szDest, 0, MAXPATH );
    strcat( szDest, szFile );
    strcat( szDest, "\." );
    strcat( szDest, "txt" );
    as = szDest;

    // Initially create a text file of the same name as the graphic
    // but with "txt" extension
    SaveDialog1->FileName = as;
  }

  if( !SaveDialog1->Execute() )
    return; // Given up hey ?

  RichEditReport->Lines->SaveToFile( SaveDialog1->FileName );
}
Ejemplo n.º 6
0
void static
names( const char *data, char *lookaside , char *quotesUsed )
{

   char drive[FILENAME_MAX],
        dir[FILENAME_MAX],
        file[FILENAME_MAX],
        ext[FILENAME_MAX];

/*--------------------------------------------------------------------*/
/*       Build the lookaside file name from the data file name        */
/*--------------------------------------------------------------------*/

#ifdef __TURBOC__

   fnsplit( data, drive, dir, file, ext);
   fnmerge( lookaside, drive, dir, file, ".las");
   fnmerge( quotesUsed, drive, dir, file, ".qus");

#else

   _splitpath( (char *) data, drive, dir, file, ext);
   _makepath( lookaside, drive, dir, file, ".las");
   _makepath( quotesUsed, drive, dir, file, ".qus");

#endif /* __TURBOC__ */

} /* names */
Ejemplo n.º 7
0
void set_directory( void ) {
	char drive[MAXDRIVE], dir[MAXDIR], name[MAXFILE], ext[MAXEXT];

	/* build cup_dir like this -> c:\edit\cuwriter */
	fnsplit( progname, drive, dir, name, ext );
	sprintf( cup_dir, "%s%s", drive, dir );
	cup_dir[strlen( cup_dir ) - 1] = '\0'; /* clear \ */
}
Ejemplo n.º 8
0
char *fname::ext(const char *e)
  {
   char drive[MAXDRIVE];
   char dir  [MAXDIR];
   char file [MAXFILE];
   fnsplit (e,drive,dir,file,buf);
   return buf;
  };
Ejemplo n.º 9
0
char *fname::jname(const char *jn)
  {
   char drive[MAXDRIVE];
   char dir  [MAXDIR];
   char ext  [MAXEXT];
   fnsplit (jn,drive,dir,buf,ext);
   return buf;
  };
Ejemplo n.º 10
0
/*
	Here's how we do it.

	Rename CONFIGFILENAME to *.CBK.  Then, read line-by-line
	from it, and write line-by-line to the new file, except
	for changing the line which contains VARNAME.

	Returns 1 for success.
*/
int	changevar(char *configfilename, char *varname, char *value)
{
	char	drive[4];
	char	path[64];
	char	name[10];
	char	ext[6];

	char	oldname[80];

	FILE	*i,*o;

	char	linebuf[256];
	int	found;

	fnsplit(configfilename,drive,path,name,ext);
	strcpy(oldname,drive);
	strcat(oldname,path);
	strcat(oldname,name);
	strcat(oldname,".CBK");

	remove(oldname);

	if (rename(configfilename,oldname))
		return 0;

	i=fopen(oldname,"r");
	if (i==NULL)
		return 0;

	o=fopen(configfilename,"w");
	if (o==NULL)
		return 0;

	found=0;
	while (!feof(i))
	{
		fgets(linebuf,256,i);
		if (feof(i))
			break;
		stripln(linebuf);
		if (comment(linebuf) || notvar(linebuf,varname))
			fprintf(o,"%s\n",linebuf);
		else
		{
			fprintf(o,"%s = %s\n",varname,value);
			found=1;
		}
	}
	if (!found)
		fprintf(o,"%s = %s\n",varname,value);

	fclose(i);
	fclose(o);

	return	1;
}
Ejemplo n.º 11
0
char *fname::path(const char *p)
  {
   char drive[MAXDRIVE];
   char dir  [MAXDIR];
   char file [MAXFILE];
   char ext  [MAXEXT];
   fnsplit (p,drive,dir,file,ext);
   strcpy(buf,drive);
   strcat(buf,dir);
   return buf;
  };
Ejemplo n.º 12
0
char *fname::name(const char *n)
  {
   char drive[MAXDRIVE];
   char dir  [MAXDIR];
   char file [MAXFILE];
   char ext  [MAXEXT];
   fnsplit (n,drive,dir,file,ext);
   strcpy(buf,file);
   strcat(buf,ext);
   return buf;
  };
static int Mk_NewName(char *NameF)                           //Автоматическое формирование нового имени
{
   char Driv[MAXDRIVE+3], Dir[MAXPATH], Name[MAXFILE], Ext[MAXEXT];
   fnsplit(NameF, Driv, Dir, Name, Ext);
   int l = lstrlen(Name);
   for(DWORD i=1; i<0xFFFFFFFF; i++)
   {  sprintf(Name+l, ".%03d", i);
      fnmerge(NameF, Driv, Dir, Name, Ext);
      if(CtrlFileYesNo(NameF) == 0) return 0;                //Файла нет - Проверка наличия файла
  }
  return 0;
}
Ejemplo n.º 14
0
//---------------------------------------------------------------------------
AnsiString __fastcall CIniFile::GetFileNameWithoutExt(char *strFileName)
{
    char drive[MAXDRIVE];
    char dir[MAXDIR];
    char file[MAXFILE];
    char ext[MAXEXT];
    int flags;

    flags=fnsplit(strFileName,drive,dir,file,ext);

    return file;
}
Ejemplo n.º 15
0
int
main(void)
{
  char arg[81], drive[81], dir[81], fname[81], ext[81];

  fputs("> ", stdout); fflush(stdout);
  gets(arg);

  printf("`%s' (%x): `%s' `%s' `%s' `%s'\n", arg,
         fnsplit(arg, drive, dir, fname, ext), drive, dir, fname, ext);

  return 0;
}
//------------------------------------------------------------------------------

static int Add_Item_To_Tree(char *NameF)                     //Добавления строки в дерево
{
   char Driv[MAXDRIVE], Dir[MAXPATH], Name[MAXFILE], Ext[MAXEXT];

   fnsplit(NameF, Driv, Dir, Name, Ext);
   if((s_Kat+ns_Dir)->pf.type == 48)                         //Это папка
   {  lstrcat(Name, Ext);                                    //У папки расширения нет как такового
      *Ext = *(Ext+1) = 0;
   }
   int l = lstrlen(Name);
   if(l > 38) *(Name + 38) = 0;
Ejemplo n.º 17
0
//---------------------------------------------------------------------------
AnsiString __fastcall CIniFile::GetFileNameWithNewPath(char *strFileName,char *strPathName)
{
    char drive[MAXDRIVE];
    char dir[MAXDIR];
    char file[MAXFILE];
    char ext[MAXEXT];
    int flags;

    flags=fnsplit(strFileName,drive,dir,file,ext);
    AnsiString strName;
    strName.sprintf("%s%s.%s",strPathName,file,ext);

    return strName;
}
Ejemplo n.º 18
0
listbatch()
{
char s[80],drive[MAXDRIVE],dir[MAXDIR],filename[MAXFILE],ext[MAXEXT],*s1;
long d;
int i,totalfp;

i=totalt=totalfp=0;

if(que.files==0)
	{
	nl();
	pl("4No files in batch.");
	return;
	}


nl();
nl();
pl("2       Name      Cost    # DL      Uploader        Time4");
pl("   ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄ ÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄ");

while(i < que.files)
	{
	d=((((que.fstruct[i].bytes)+127)/128)) * (1620.0) / ((baud));
	if(i < 9)
		print("%d. ",i+1);
	else
		print("%d.",i+1);
	fnsplit(que.fstruct[i].name,drive,dir,filename,ext);
	print("4[2%-8s",filename);
	print("%-3s",ext);
	if(fstruct.filepoints==0)
		print("4] [2Free");
	if(fstruct.status!=0 && que.fstruct[i].filepoints!=0)
		{
		print("4] [3 %-3d",que.fstruct[i].filepoints);
		totalfp+=que.fstruct[i].filepoints;
		}
	print("4] [3%-3d",que.fstruct[i].timesdl);
	print("4] [3 %-15s ",que.fstruct[i].uploader);
	sprintf(s,"%ld",d/60);
	totalt+=d/60;
	print("4] [3%-4s4]",s);
	nl();
	i++;
	}
nl();
print("Total: %d file(s)     %d                 %ld mins",que.files,totalfp,totalt);
nl();
}
Ejemplo n.º 19
0
//---------------------------------------------------------
void __fastcall CEVision::LoadPatMatch(char *strFileName,int nIndex,EMatch &theMatch)
{
        char drive[MAXDRIVE];
        char dir[MAXDIR];
        char file[MAXFILE];
        char ext[MAXEXT];
        int flags;

        flags=fnsplit(strFileName,drive,dir,file,ext);
        AnsiString strName;
        strName.sprintf("%s%s%s_%d.mch",drive,dir,file,nIndex);

        theMatch.Load( strName.c_str());
}
Ejemplo n.º 20
0
void main(int Argc, char *Argv[])
{
 int i;
 int autre_entree;
 char lecteur[MAXDRIVE];
 char repertoire[MAXDIR];
 char nom_fichier[MAXFILE];
 char extension[MAXEXT];
 if(Argc==1)
 {
  printf("Syntaxe : GO <Lecteur>:<R‚pertoire>");
  exit(0);
 }
 else printf("Go Directory\n");
 niveau=1;
 autre_entree=1;
 strcpy(Argv[1],strupr(Argv[1]));
 fnsplit(Argv[1],lecteur,repertoire,nom_fichier,extension);
 strcpy(chemin_cours,lecteur);
 strcat(nom_fichier,extension);
 probleme=Init_repert();
 while(autre_entree)
 {
  if(!probleme && !autre_repert())
  {
   derniere_entree[niveau++]=entree_actuelle;
   strcat(chemin_cours,"\\");
   strcat(chemin_cours,entree_actuelle.ff_name);
   if(strcmp(entree_actuelle.ff_name,nom_fichier)==0)
   {
    setdisk((int)lecteur[0]-65);
    chdir(chemin_cours);
    autre_entree=0; break;
   }
   probleme=Init_repert();
  }
  else
  {
   if(niveau==1)
   {
    printf("Aucune entr‚e trouv‚e ...");
    autre_entree=0;
    break;
   }
   *strrchr(chemin_cours,'\\')='\0';
   entree_actuelle=derniere_entree[--niveau];
   probleme=findnext(&entree_actuelle);
  }
 }
}
Ejemplo n.º 21
0
int fullsplit( const char* path )
{
#ifdef _WIN32
// FIXME: 2008 Upgrades needed here?
#if defined( _MSC_VER ) && ( _MSC_VER <= 1310 )  // up to VS2003
  _splitpath( path, temp_drive, temp_dir, temp_fname, temp_ext );
#else  // VS2005 using MS STL, boooooo
  _splitpath_s( path, temp_drive, MAXDRIVE, temp_dir, MAXDIR, temp_fname, MAXFILE, temp_ext,
                MAXEXT );
#endif
  return 0;
#else
  return fnsplit( path, temp_drive, temp_dir, temp_fname, temp_ext );
#endif
}
Ejemplo n.º 22
0
streng *os2_filespec( tsd_t *TSD, cparamboxptr parms )
{
   streng *result=NULL ;
   streng *inpath=NULL;
   char format = '?' ;
#if defined(DJGPP)
   char fdrive[MAXDRIVE], fdir[MAXDIR], fname[MAXFILE], fext[MAXEXT];
#elif defined(__EMX__)
   char fdrive[_MAX_DRIVE], fdir[_MAX_DIR], fname[_MAX_FNAME], fext[_MAX_EXT];
#elif defined(HAVE__SPLITPATH2)
   char fpath[_MAX_PATH2], *fdrive=NULL, *fdir=NULL, *fname=NULL, *fext=NULL;
#elif defined(HAVE__SPLITPATH)
   char fdrive[_MAX_PATH], fdir[_MAX_PATH], fname[_MAX_PATH], fext[_MAX_PATH];
#else
   char fpath[REXX_PATH_MAX+5],*fdrive=NULL,*fdir=NULL,*fname=NULL,*fext=NULL;
#endif

   checkparam(  parms,  2,  2 , "FILESPEC" ) ;
   format = getoptionchar( TSD, parms->value, "FILESPEC", 1, "DNP", "?" ) ;
   inpath = Str_dupstrTSD( parms->next->value ) ;
#if defined(DJGPP)
   fnsplit( inpath->value, fdrive, fdir, fname, fext );
#elif defined(__EMX__)
   _splitpath( inpath->value, fdrive, fdir, fname, fext );
#elif defined(HAVE__SPLITPATH2)
   _splitpath2( inpath->value, fpath, &fdrive, &fdir, &fname, &fext );
#elif defined(HAVE__SPLITPATH)
   _splitpath( inpath->value, fdrive, fdir, fname, fext );
#else
   my_splitpath2( inpath->value, fpath, &fdrive, &fdir, &fname, &fext );
#endif
   switch( format )
   {
      case 'D':
         result = Str_creTSD( fdrive );
         break;
      case 'N':
         result = Str_makeTSD( strlen( fname) + strlen( fext ) );
         Str_catstrTSD( result, fname );
         Str_catstrTSD( result, fext );
         break;
      case 'P':
         result = Str_creTSD( fdir );
         break;
   }
   FreeTSD( inpath );
   return result;
}
Ejemplo n.º 23
0
void get_programname (char const *argv0)
{
#ifdef __MSDOS__
    char
        name [MAXFILE];
    fnsplit (argv0, NULL, NULL, name, NULL);
    programname = strdup (name);
#else
    char
        *p;
    p = strrchr (argv0, my_PATH_SEP);
    if (p)
        programname = strdup (p + 1);
    else
        programname = strdup (argv0);
#endif
}
Ejemplo n.º 24
0
int filebkup( const char *input )
{
   char fdrive[FILENAME_MAX];
   char fpath[FILENAME_MAX];
   char fname[FILENAME_MAX];
   char ftype[FILENAME_MAX];
   char backup[FILENAME_MAX];

   if ( !bflag[F_BACKUP] )    /* Are we to not back it up?            */
      return 1;               /* Yes --> Report we did not            */

#ifdef __TURBOC__
   fnsplit( input, fdrive, fpath, fname, ftype );

   if ( E_backup == NULL )
      strcpy(ftype, ".bak" );
   else if ( *E_backup == '.' )
      strcpy( ftype, E_backup );
   else {
      *ftype = '.';
      strcpy(  ftype + 1 , E_backup );
   } /* else */

   fnmerge( backup, fdrive, fpath, fname, ftype );
#else

   if ( E_backup == NULL )
      E_backup = ".bak";

   _splitpath( (char *) input , fdrive, fpath, fname, ftype );
   _makepath( backup , fdrive, fpath, fname, E_backup );
#endif /* __TURBOC__ */

   REMOVE( backup );

   if (rename( input, backup ))
   {
      printerr( backup );
      printmsg(1,"Unable to rename %s to %s", input, backup );
      return 1;

   } /* if (rename( input, backup )) */
   else
      return 0;

} /* filebkup */
Ejemplo n.º 25
0
char *replaceExt( char *fileName, char *nExt, Boolean force )
{
    char dir[MAXPATH]; 
    char name[MAXFILE];
    char ext[MAXEXT];
    char drive[MAXDRIVE];
    char buffer[MAXPATH];
    ostrstream os(buffer, MAXPATH);

    fnsplit(fileName, drive, dir, name, ext);
    if (force || (strlen(ext) == 0))
        {
        os << dir << name << nExt << ends;
        return os.str();
        }
    else
        return fileName;
}
Ejemplo n.º 26
0
int Folder_ToHDD(void)                                       //Запись папок на диск LG
{
   char NameDir[256], Driv[MAXDRIVE], Dir[MAXPATH], Ext[MAXEXT];

   if(Get_Name_Dir((Lan+186)->msg, NameDir, 1) < 0) return -1;//Запрос имени папки
   fnsplit(NameDir, Driv, Dir, NameFoFi, Ext);
   lstrcat(NameFoFi, Ext);                                   //У папки расширения нет как такового
   if(Create_New_Folder_ToHDD() < 0) return -1;              //Cоздание папки на диске LG
   ClStDir = nCl_1;                                          //Номер кластера каталога в который выполняется запись, т.е. вновь созданный каталог
   spisF = (char *)MyAllocMem(MAX_SP + MAX_NAME_S * sizeof(DWORD));
   if(spisF == NULL) return -1;                              //Нет памяти
   pozNameF = (DWORD*)(spisF + MAX_SP);                      //Таблица смещений к именам файла в списке
   lstrcpy(spisF, NameDir);
   int sm = lstrlen(spisF) + 1;
   int n = 0;
   if(Make_Spis(&n) < 0) return -1;                          //Создание списка файлов
   if(n == 0) return 0;                                      //Нет ни одного имени в списке
   return Copy_File_ToHDD(sm);                               //Запись нескольких файлов на HDD рекордера
}
Ejemplo n.º 27
0
int getname(char textst[],unsigned x,unsigned y,unsigned maxlen,char attr)
{
    int i;
    char drv[MAXDRIVE],dir[MAXDIR],name[MAXFILE],ext[MAXEXT];
    char textst2[80];
    do {
      i = getstring(textst,x,y,maxlen,attr,ENGUPCASE);
    } while ((i != YES) && (i != ESCKEY) && (i != NO));
    if (i == YES) {
      fnsplit(textst,drv,dir,name,ext);
      fnmerge(textst2,drv,dir,name,ext);
      if (strcmp(textst,textst2) != 0) {
	blockmsg(10);
	dispstrhgc("������������żԴ��Ҵ ! �� <ESC> ���ͷӧҹ���",27,10,REVERSEATTR);
        while (bioskey(0) != ESCKEY);
        return(ESCKEY);
      }
    }
    return(i);
}
Ejemplo n.º 28
0
Boolean validFileName( const char *fileName )
{
    static const char * const illegalChars = ";,=+<>|\"[]\\";

    char path[MAXPATH];
    char dir[MAXDIR];
    char name[MAXFILE];
    char ext[MAXEXT];

    fnsplit( fileName, path, dir, name, ext );
    strcat( path, dir );
    if( *dir != EOS && !pathValid( path ) )
        return False;
    if( strpbrk( name, illegalChars ) != 0 ||
        strpbrk( ext+1, illegalChars) != 0 ||
        strchr( ext+1, '.' ) != 0
      )
        return False;
    return True;
}
Ejemplo n.º 29
0
Boolean TFileEditor::saveFile()
{
    char drive[MAXDRIVE];
    char dir[MAXDIR];
    char file[MAXFILE];
    char ext[MAXEXT];

    if( (editorFlags & efBackupFiles) != 0 )
        {
        fnsplit( fileName, drive, dir, file, ext );
        char backupName[MAXPATH];
        fnmerge( backupName, drive, dir, file, backupExt );
        unlink( backupName );
        rename( fileName, backupName );
        }

    ofstream f( fileName, ios::out | ios::binary );

    if( !f )
        {
        editorDialog( edCreateError, fileName );
        return False;
        }
    else
        {
        writeBlock( f, buffer, curPtr );
        writeBlock( f, buffer+curPtr+gapLen, bufLen-curPtr );

        if( !f )
            {
            editorDialog( edWriteError, fileName );
            return False;
            }
        else
            {
            modified = False;
            update(ufUpdate);
            }
        }
    return True;
}
Ejemplo n.º 30
0
static int Make_Spis(int *n)                                 //Создание списка файлов
{
   char NameF[256];
   char Driv[MAXDRIVE], Dir[MAXPATH], Name[MAXFILE], Ext[MAXEXT];

   WIN32_FIND_DATA Data;
   HANDLE File;

   int l = lstrlen(spisF) + 1;
   lstrcpy(NameF, spisF);
   lstrcat(NameF, "\\*.*");
   if((File = FindFirstFile(NameF, &Data)) == INVALID_HANDLE_VALUE)  return -1; //Файл не найден (папка пустая)
   for(;;)
   {
      fnsplit(Data.cFileName, Driv, Dir, Name, Ext);
      if(!(lstrcmp(Data.cFileName, ".") == 0 ||              //Имя файла  "." нас не интересует
           lstrcmp(Data.cFileName, "..") == 0))              //Имя файла  ".." нас не интересует
      {  //lstrcpy(NameF+l, Data.cFileName);                 //Сделали полное имя с путем
         if((Data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0) //Текущее имя это вложенная папка
         {
   //Если внутри папки есть другие папки, то повторить все для внутренний папок, т.е. писать все дерево
         }
         else
         {  OneExt *ExtE = ExtEn + pExt[prFolder];
            for(int i=0; i<nExt[prFolder]; i++)
              if(lstrcmpi(ExtE[i], Ext) == 0)
              {  lstrcpy(spisF+l, Data.cFileName);
                 l += lstrlen(spisF+l) + 1;
                 (*n)++;
                 break;
              }
         }
      }
      if(FindNextFile(File, &Data) == 0)
        if(GetLastError() == ERROR_NO_MORE_FILES) break;
   }
   FindClose(File);
   *(spisF+l) = 0;
   return 0;
}