Esempio n. 1
0
int
DoAutoRecovery (int inquire)
{
  char buffer[1025];
  char *recoverdir = getAutoDirName (buffer);
  DIR *dir;
  struct dirent *entry;
  int any = false;
  SplineFont *sf;
  int inquire_state = 0;

  if (recoverdir == NULL)
    return false;
  if ((dir = opendir (recoverdir)) == NULL)
    return false;
  while ((entry = readdir (dir)) != NULL)
    {
      if (strcmp (entry->d_name, ".") == 0 || strcmp (entry->d_name, "..") == 0)
        continue;
      sprintf (buffer, "%s/%s", recoverdir, entry->d_name);
      fprintf (stderr, "Recovering from %s... ", buffer);
      if ((sf = SFRecoverFile (buffer, inquire, &inquire_state)))
        {
          any = true;
          if (sf->fv == NULL)   /* Doesn't work, cli arguments not parsed yet */
            FontViewCreate (sf, false);
        }
      fprintf (stderr, " Done\n");
    }
  closedir (dir);
  return any;
}
Esempio n. 2
0
void
CleanAutoRecovery (void)
{
  char buffer[1025];
  char *recoverdir = getAutoDirName (buffer);
  DIR *dir;
  struct dirent *entry;

  if (recoverdir == NULL)
    return;
  if ((dir = opendir (recoverdir)) == NULL)
    return;
  while ((entry = readdir (dir)) != NULL)
    {
      if (strcmp (entry->d_name, ".") == 0 || strcmp (entry->d_name, "..") == 0)
        continue;
      sprintf (buffer, "%s/%s", recoverdir, entry->d_name);
      if (unlink (buffer) != 0)
        {
          fprintf (stderr, "Failed to clean ");
          perror (buffer);
        }
    }
  closedir (dir);
}
Esempio n. 3
0
static void MakeAutoSaveName(SplineFont *sf) {
    char buffer[1025];
    char *autosavedir;
    static int cnt=0;

    if ( sf->autosavename )
return;
    autosavedir = getAutoDirName(buffer);
    if ( autosavedir==NULL )
return;
    while ( 1 ) {
	sprintf( buffer, "%s/auto%06x-%d.asfd", autosavedir, getpid(), ++cnt );
	if ( access(buffer,F_OK)==-1 ) {
	    sf->autosavename = copy(buffer);
return;
	}
    }
}