Esempio n. 1
0
void CommandData::ProcessCommand()
{
#ifndef SFX_MODULE

  const char *SingleCharCommands="FUADPXETK";
  if (Command[0]!=0 && Command[1]!=0 && strchr(SingleCharCommands,*Command)!=NULL || *ArcName==0)
    OutHelp(*Command==0 ? RARX_SUCCESS:RARX_USERERROR); // Return 'success' for 'rar' without parameters.

#ifdef _UNIX
  if (GetExt(ArcName)==NULL && (!FileExist(ArcName) || IsDir(GetFileAttr(ArcName))))
    strncatz(ArcName,".rar",ASIZE(ArcName));
#else
  if (GetExt(ArcName)==NULL)
    strncatz(ArcName,".rar",ASIZE(ArcName));
#endif

  if (strchr("AFUMD",*Command)==NULL)
  {
    if (GenerateArcName)
      GenerateArchiveName(ArcName,ArcNameW,ASIZE(ArcName),GenerateMask,false);

    StringList ArcMasks;
    ArcMasks.AddString(ArcName);
    ScanTree Scan(&ArcMasks,Recurse,SaveLinks,SCAN_SKIPDIRS);
    FindData FindData;
    while (Scan.GetNext(&FindData)==SCAN_SUCCESS)
      AddArcName(FindData.Name,FindData.NameW);
  }
  else
    AddArcName(ArcName,NULL);
#endif

  switch(Command[0])
  {
    case 'P':
    case 'X':
    case 'E':
    case 'T':
    case 'I':
      {
        CmdExtract Extract;
        Extract.DoExtract(this);
      }
      break;
#ifndef SILENT
    case 'V':
    case 'L':
      ListArchive(this);
      break;
    default:
      OutHelp(RARX_USERERROR);
#endif
  }
  if (!BareOutput)
    mprintf("\n");
}
Esempio n. 2
0
/*-----------------------------------------------------------------*/
FILE *createDumpFile (int id) {
  struct _dumpFiles *dumpFilesPtr=dumpFiles;
  static int dumpIndex=0;
  static char dumpIndexStr[32];

  while (dumpFilesPtr->id) {
    if (dumpFilesPtr->id==id)
      break;
    dumpFilesPtr++;
  }

  if (!dumpFilesPtr->id) {
    fprintf (stdout, "internal error: createDumpFile: unknown dump file.\n");
    exit (1);
  }

  sprintf(dumpIndexStr, ".%d", dumpIndex);
  dumpIndex++;

  if (!dumpFilesPtr->filePtr) {
    // not used before, create it
    strncpyz (scratchFileName, dstFileName, PATH_MAX);
#if 0
    strncatz (scratchFileName, dumpIndexStr, PATH_MAX);
#endif
    strncatz (scratchFileName, dumpFilesPtr->ext, PATH_MAX);
    if (!(dumpFilesPtr->filePtr = fopen (scratchFileName, "w"))) {
      werror (E_FILE_OPEN_ERR, scratchFileName);
      exit (1);
    }
  }

#if 0
  fprintf(dumpFilesPtr->filePtr, "Dump file index: %d\n", dumpIndex);
#endif

  return dumpFilesPtr->filePtr;
}
Esempio n. 3
0
File: main.c Progetto: dinkc64/mame
static void listoptions(const option_guide *opt_guide, const char *opt_spec)
{
	char opt_name[32];
	const char *opt_desc;
	struct OptionRange range[32];
	char range_buffer[512];
	char buf[32];
	int i;

	assert(opt_guide);

	fprintf(stdout, "Option           Allowed values                 Description\n");
	fprintf(stdout, "---------------- ------------------------------ -----------\n");

	while(opt_guide->option_type != OPTIONTYPE_END)
	{
		range_buffer[0] = 0;
		snprintf(opt_name, ARRAY_LENGTH(opt_name), "--%s", opt_guide->identifier);
		opt_desc = opt_guide->display_name;

		/* is this option relevant? */
		if (!strchr(opt_spec, opt_guide->parameter))
		{
			opt_guide++;
			continue;
		}

		switch(opt_guide->option_type) {
		case OPTIONTYPE_INT:
			option_resolution_listranges(opt_spec, opt_guide->parameter,
				range, ARRAY_LENGTH(range));

			for (i = 0; range[i].max >= 0; i++)
			{
				if (range[i].min == range[i].max)
					snprintf(buf, ARRAY_LENGTH(buf), "%i", range[i].min);
				else
					snprintf(buf, ARRAY_LENGTH(buf), "%i-%i", range[i].min, range[i].max);

				if (i > 0)
					strncatz(range_buffer, "/", sizeof(range_buffer));
				strncatz(range_buffer, buf, sizeof(range_buffer));
			}
			break;

		case OPTIONTYPE_ENUM_BEGIN:
			i = 0;
			while(opt_guide[1].option_type == OPTIONTYPE_ENUM_VALUE)
			{
				if (i > 0)
					strncatz(range_buffer, "/", sizeof(range_buffer));
				strncatz(range_buffer, opt_guide[1].identifier, sizeof(range_buffer));

				opt_guide++;
				i++;
			}
			break;

		case OPTIONTYPE_STRING:
			snprintf(range_buffer, sizeof(range_buffer), "(string)");
			break;
		default:
			assert(0);
			break;
		}

		fprintf(stdout, "%16s %-30s %s\n",
			opt_name,
			range_buffer,
			opt_desc);
		opt_guide++;
	}
}