Esempio n. 1
0
static int tta_set_opt(const char *unused, const char *values)
{
	int argc, i;
	char **argv;

	g_io_buffer_size = WVPACK_BUFFERED_READER_BUFFER_SIZE;

	dbg_printf(d, "%s: options are %s", __func__, values);

	build_args(values, &argc, &argv);

	for (i = 0; i < argc; ++i) {
		if (!strncasecmp
			(argv[i], "tta_buffer_size", sizeof("tta_buffer_size") - 1)) {
			const char *p = argv[i];

			if ((p = strrchr(p, '=')) != NULL) {
				p++;

				g_io_buffer_size = atoi(p);

				if (g_io_buffer_size < 8192) {
					g_io_buffer_size = 8192;
				}
			}
		}
	}

	clean_args(argc, argv);

	return 0;
}
Esempio n. 2
0
static gchar *
gnuindent (GrindBackendGNUIndent *self,
           GeanyDocument         *doc,
           const gchar           *input,
           GError               **error)
{
  GPid    pid;
  int     input_fd;
  int     output_fd;
  int     error_fd;
  gchar  *output = NULL;
  gchar **argv;
  
  argv = build_args (self, doc);
  if (g_spawn_async_with_pipes (NULL, argv, NULL,
                                G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD,
                                NULL, NULL, &pid, &input_fd, &output_fd,
                                &error_fd, error)) {
    GSource      *source;
    GMainContext *ctx = g_main_context_new ();
    BlockData     data;
    
    data.error = NULL;
    data.loop = g_main_loop_new (ctx, FALSE);
    data.output_str = g_string_new (NULL);
    data.error_str = g_string_new (NULL);
    
    source = g_child_watch_source_new (pid);
    g_source_set_callback (source, (GSourceFunc)child_watch_handler,
                           &data, NULL);
    g_source_attach (source, ctx);
    g_source_unref (source);
    
    /* output */
    add_watch_fd (output_fd,
                  G_IO_IN | G_IO_PRI | G_IO_ERR | G_IO_HUP | G_IO_NVAL, ctx,
                  (GIOFunc)output_ready_handler, &data);
    /* error */
    add_watch_fd (error_fd,
                  G_IO_IN | G_IO_PRI | G_IO_ERR | G_IO_HUP | G_IO_NVAL, ctx,
                  (GIOFunc)error_ready_handler, &data);
    
    if (write_input (input_fd, input, &data.error)) {
      g_main_loop_run (data.loop);
    }
      
    if (! data.error) {
      output = g_string_free (data.output_str, FALSE);
    } else {
      g_string_free (data.output_str, TRUE);
      g_propagate_error (error, data.error);
    }
    g_string_free (data.error_str, TRUE);
    g_main_loop_unref (data.loop);
    g_main_context_unref (ctx);
  }
  g_strfreev (argv);
  
  return output;
}
Esempio n. 3
0
int generic_set_opt(const char *unused, const char *values)
{
	int argc;
	char **argv;

	build_args(values, &argc, &argv);
	clean_args(argc, argv);

	return 0;
}
Esempio n. 4
0
static int mp3_set_opt(const char *unused, const char *values)
{
	int argc, i;
	char **argv;

	init_default_option();

	dbg_printf(d, "%s: options are %s", __func__, values);

	build_args(values, &argc, &argv);

	for (i = 0; i < argc; ++i) {
		if (!strncasecmp
			(argv[i], "mp3_brute_mode", sizeof("mp3_brute_mode") - 1)) {
			if (opt_is_on(argv[i])) {
				use_brute_method = true;
			} else {
				use_brute_method = false;
			}
		} else
			if (!strncasecmp(argv[i], "mp3_use_me", sizeof("mp3_use_me") - 1)) {
			if (opt_is_on(argv[i])) {
				use_me = true;
			} else {
				use_me = false;
			}
		} else if (!strncasecmp
				   (argv[i], "mp3_check_crc", sizeof("mp3_check_crc") - 1)) {
			if (opt_is_on(argv[i])) {
				check_crc = true;
			} else {
				check_crc = false;
			}
		} else if (!strncasecmp
				   (argv[i], "mp3_buffer_size",
					sizeof("mp3_buffer_size") - 1)) {
			const char *p = argv[i];

			if ((p = strrchr(p, '=')) != NULL) {
				p++;

				g_io_buffer_size = atoi(p);

				if (g_io_buffer_size < 8192) {
					g_io_buffer_size = 8192;
				}
			}
		}
	}

	clean_args(argc, argv);

	return 0;
}
Esempio n. 5
0
/**
 * Slot : Button Start Rare
 */
void KdeStartImpl::slotStartRace()
{
  int iLaps = SpinLaps->value();
  int iRandom = SpinRandom->value();
  const char * sTrackName = ComboTrack->currentText();
  const char * sMovie = ComboMovie->currentText();
  const char * sOpenGL = ComboOpenGL->currentText();
  const char * sFollowCar = ComboFollowCar->currentText();
  int iRadioQualif = (RadioRaceRandom->isChecked()?0:1);
  int iQualifLaps = SpinQualifLaps->value();
  int iQualifNumber = SpinQualifNumber->value();
  int iNumSelectedDrivers = ListSelected->count();
  int iSurface = ComboSurface->currentItem();

  if( iNumSelectedDrivers==0 )
  {
    QMessageBox::warning( 0, "Error", "No driver has been selected." );
    return;
  }
  const char ** aDrivers = (const char**) new char**[ iNumSelectedDrivers ];
  for( int i=0; i<iNumSelectedDrivers; i++ )
  {
    aDrivers[i] = ListSelected->text( i );
  }

  build_args(
    iNumSelectedDrivers,
    iLaps,
    iRandom,
    iSurface,
    sTrackName,
    sMovie,
    sOpenGL,
    iRadioQualif,
    iQualifLaps,
    iQualifNumber,
    sFollowCar,
    aDrivers
  );

  g_kde_rars = new KdeRars;
  this->hide();
  g_kde_rars->show();
}
Esempio n. 6
0
static Atom* parse_line(const gchar* ln)
{
    static GRegex* re = NULL;
    GMatchInfo*    mi = NULL;
    Atom*          rv = NULL;

    if ( !re ) {
        re = g_regex_new("(-*)([A-Z]+)(?:\\((.+)*\\))?", G_REGEX_OPTIMIZE, G_REGEX_MATCH_NOTEMPTY, NULL);
    }

    if ( g_regex_match(re, ln, 0, &mi) ) {
        gchar* dashes = g_match_info_fetch(mi, 1);

        rv = atom_new(
            identify(g_match_info_fetch(mi, 2)),
            dashes ? strlen(dashes) : 0,
            build_args(g_match_info_fetch(mi, 3)));

        g_match_info_free(mi);
    }
    
    return rv;
}
Esempio n. 7
0
 static exe_cmd_init cmd     (std::string && cmd)
 {
     auto args = build_args(cmd);
     return exe_cmd_init({}, std::move(args));
 }
Esempio n. 8
0
File: start.c Progetto: bilboed/wine
int wmain (int argc, WCHAR *argv[])
{
	SHELLEXECUTEINFOW sei;
	WCHAR *args = NULL;
	int i;
	int unix_mode = 0;
	int progid_open = 0;
	WCHAR *dos_filename = NULL;
	WCHAR *parent_directory = NULL;
	DWORD binary_type;

	static const WCHAR openW[] = { 'o', 'p', 'e', 'n', 0 };
	static const WCHAR unixW[] = { 'u', 'n', 'i', 'x', 0 };
	static const WCHAR progIDOpenW[] =
		{ 'p', 'r', 'o', 'g', 'I', 'D', 'O', 'p', 'e', 'n', 0};

	memset(&sei, 0, sizeof(sei));
	sei.cbSize = sizeof(sei);
	sei.lpVerb = openW;
	sei.nShow = SW_SHOWNORMAL;
	/* Dunno what these mean, but it looks like winMe's start uses them */
	sei.fMask = SEE_MASK_FLAG_DDEWAIT|
	            SEE_MASK_FLAG_NO_UI|
	            SEE_MASK_NO_CONSOLE;

	/* Canonical Microsoft commandline flag processing:
	 * flags start with /, are case insensitive,
	 * and may be run together in same word.
	 */
	for (i=1; i<argc; i++) {
		int ci;

		if (argv[i][0] != '/')
			break;

		/* Unix paths can start with / so we have to assume anything following /U is not a flag */
		if (unix_mode || progid_open)
			break;

		/* Handle all options in this word */
		for (ci=0; argv[i][ci]; ) {
			/* Skip slash */
			ci++;
			switch(argv[i][ci]) {
			case 'b':
			case 'B':
				break; /* FIXME: should stop new window from being created */
			case 'i':
			case 'I':
				break; /* FIXME: should ignore any changes to current environment */
			case 'l':
			case 'L':
				license();
				break;	/* notreached */
			case 'm':
			case 'M':
				if (argv[i][ci+1] == 'a' || argv[i][ci+1] == 'A')
					sei.nShow = SW_SHOWMAXIMIZED;
				else
					sei.nShow = SW_SHOWMINIMIZED;
				break;
			case 'r':
			case 'R':
				/* sei.nShow = SW_SHOWNORMAL; */
				break;
			case 'u':
			case 'U':
				if (strncmpiW(&argv[i][ci], unixW, 4) == 0)
					unix_mode = 1;
				else {
					WINE_ERR("Option '%s' not recognized\n", wine_dbgstr_w( argv[i]+ci-1));
					usage();
				}
				break;
			case 'p':
			case 'P':
				if (strncmpiW(&argv[i][ci], progIDOpenW, 17) == 0)
					progid_open = 1;
				else {
					WINE_ERR("Option '%s' not recognized\n", wine_dbgstr_w( argv[i]+ci-1));
					usage();
				}
				break;
			case 'w':
			case 'W':
				sei.fMask |= SEE_MASK_NOCLOSEPROCESS;
				break;
			default:
				WINE_ERR("Option '%s' not recognized\n", wine_dbgstr_w( argv[i]+ci-1));
				usage();
			}
			/* Skip to next slash */
			while (argv[i][ci] && (argv[i][ci] != '/'))
				ci++;
		}
	}

	if (i == argc)
		usage();

	if (progid_open) {
		sei.lpClass = argv[i++];
		sei.fMask |= SEE_MASK_CLASSNAME;
	}

	sei.lpFile = argv[i++];

	args = build_args( argc - i, &argv[i] );
	sei.lpParameters = args;

	if (unix_mode || progid_open) {
		LPWSTR (*CDECL wine_get_dos_file_name_ptr)(LPCSTR);
		char* multibyte_unixpath;
		int multibyte_unixpath_len;

		wine_get_dos_file_name_ptr = (void*)GetProcAddress(GetModuleHandleA("KERNEL32"), "wine_get_dos_file_name");

		if (!wine_get_dos_file_name_ptr)
			fatal_string(STRING_UNIXFAIL);

		multibyte_unixpath_len = WideCharToMultiByte(CP_UNIXCP, 0, sei.lpFile, -1, NULL, 0, NULL, NULL);
		multibyte_unixpath = HeapAlloc(GetProcessHeap(), 0, multibyte_unixpath_len);

		WideCharToMultiByte(CP_UNIXCP, 0, sei.lpFile, -1, multibyte_unixpath, multibyte_unixpath_len, NULL, NULL);

		dos_filename = wine_get_dos_file_name_ptr(multibyte_unixpath);

		HeapFree(GetProcessHeap(), 0, multibyte_unixpath);

		if (!dos_filename)
			fatal_string(STRING_UNIXFAIL);

		sei.lpFile = dos_filename;
		sei.lpDirectory = parent_directory = get_parent_dir(dos_filename);
		sei.fMask &= ~SEE_MASK_FLAG_NO_UI;

                if (GetBinaryTypeW(sei.lpFile, &binary_type)) {
                    WCHAR *commandline;
                    STARTUPINFOW startup_info;
                    PROCESS_INFORMATION process_information;
                    static WCHAR commandlineformat[] = {'"','%','s','"','%','s',0};

                    /* explorer on windows always quotes the filename when running a binary on windows (see bug 5224) so we have to use CreateProcessW in this case */

                    commandline = HeapAlloc(GetProcessHeap(), 0, (strlenW(sei.lpFile)+3+strlenW(sei.lpParameters))*sizeof(WCHAR));
                    sprintfW(commandline, commandlineformat, sei.lpFile, sei.lpParameters);

                    ZeroMemory(&startup_info, sizeof(startup_info));
                    startup_info.cb = sizeof(startup_info);

                    if (!CreateProcessW(
                            NULL, /* lpApplicationName */
                            commandline, /* lpCommandLine */
                            NULL, /* lpProcessAttributes */
                            NULL, /* lpThreadAttributes */
                            FALSE, /* bInheritHandles */
                            CREATE_NEW_CONSOLE, /* dwCreationFlags */
                            NULL, /* lpEnvironment */
                            sei.lpDirectory, /* lpCurrentDirectory */
                            &startup_info, /* lpStartupInfo */
                            &process_information /* lpProcessInformation */ ))
                    {
			fatal_string_error(STRING_EXECFAIL, GetLastError(), sei.lpFile);
                    }
                    sei.hProcess = process_information.hProcess;
                    goto done;
                }
	}

        if (!ShellExecuteExW(&sei))
            fatal_string_error(STRING_EXECFAIL, GetLastError(), sei.lpFile);

done:
	HeapFree( GetProcessHeap(), 0, args );
	HeapFree( GetProcessHeap(), 0, dos_filename );
	HeapFree( GetProcessHeap(), 0, parent_directory );

	if (sei.fMask & SEE_MASK_NOCLOSEPROCESS) {
		DWORD exitcode;
		WaitForSingleObject(sei.hProcess, INFINITE);
		GetExitCodeProcess(sei.hProcess, &exitcode);
		ExitProcess(exitcode);
	}

	ExitProcess(0);
}
Esempio n. 9
0
File: emu.c Progetto: Cpasjuste/pgui
void emu_exec(int n)
{
	pid_t childpid;
	int status;

	gui_clean();

	arg = (ARGS *) malloc( sizeof(ARGS));

	int n_args = build_args();

	char exec_rom[512];
	sprintf( exec_rom, "%s/%s", config->roms_path, roms[n] );

	if ((childpid = fork()) == -1)
	{
		printf("Error in the fork");
	}
	else if (childpid == 0)
	{
		printf("childpid OK\n");

		if(n_args == 0)
		{
			if (execl(emu->exec, emu->exec, exec_rom, NULL) < 0) printf("Exec failed");
		}
		else if(n_args == 1)
		{
			if (execl(emu->exec, emu->exec,  arg->value[0], exec_rom, NULL) < 0) printf("Exec failed");
		}
		else if(n_args == 2)
		{
			if (execl(emu->exec, emu->exec,  arg->value[0], arg->value[1], exec_rom, NULL) < 0) printf("Exec failed");
		}
		else if(n_args == 3)
		{
			if (execl(emu->exec, emu->exec,  arg->value[0], arg->value[1], arg->value[2], exec_rom, NULL) < 0) printf("Exec failed");
		}
		else if(n_args == 4)
		{
			printf("args : %s %s %s %s\n", arg->value[0], arg->value[1], arg->value[2], arg->value[3] );
			if (execl(emu->exec, emu->exec,  arg->value[0], arg->value[1], arg->value[2], arg->value[3], exec_rom, NULL) < 0) printf("Exec failed");
		}
		else if(n_args == 5)
		{
			if (execl(emu->exec, emu->exec,  arg->value[0], arg->value[1], arg->value[2], arg->value[3], arg->value[4], exec_rom, NULL) < 0) printf("Exec failed");
		}
		else if(n_args == 6)
		{
			if (execl(emu->exec, emu->exec,  arg->value[0], arg->value[1], arg->value[2], arg->value[3], arg->value[4], arg->value[5], exec_rom, NULL) < 0) printf("Exec failed");
		}
		else if(n_args == 7)
		{
			if (execl(emu->exec, emu->exec,  arg->value[0], arg->value[1], arg->value[2], arg->value[3], arg->value[4], arg->value[5], arg->value[6], exec_rom, NULL) < 0) printf("Exec failed");
		}
		else if(n_args == 8)
		{
			if (execl(emu->exec, emu->exec,   arg->value[0], arg->value[1], arg->value[2], arg->value[3], arg->value[4], arg->value[5], arg->value[6], arg->value[7], exec_rom, NULL) < 0) printf("Exec failed");
		}
		else if(n_args == 9)
		{
			if (execl(emu->exec, emu->exec,  arg->value[0], arg->value[1], arg->value[2], arg->value[3], arg->value[4], arg->value[5], arg->value[6], arg->value[7], arg->value[8], exec_rom, NULL) < 0) printf("Exec failed");
		}
		else if(n_args == 10)
		{
			if (execl(emu->exec, emu->exec,  arg->value[0], arg->value[1], arg->value[2], arg->value[3], arg->value[4], arg->value[5], arg->value[6], arg->value[7], arg->value[8], arg->value[9], exec_rom, NULL) < 0) printf("Exec failed");
		}
		else if(n_args == 11)
		{
			if (execl(emu->exec, emu->exec,  arg->value[0], arg->value[1], arg->value[2], arg->value[3], arg->value[4], arg->value[5], arg->value[6], arg->value[7], arg->value[8], arg->value[9], arg->value[10], exec_rom, NULL) < 0) printf("Exec failed");
		}
		else if(n_args == 12)
		{
			if (execl(emu->exec, emu->exec,  arg->value[0], arg->value[1], arg->value[2], arg->value[3], arg->value[4], arg->value[5], arg->value[6], arg->value[7], arg->value[8], arg->value[9], arg->value[10], arg->value[11], exec_rom, NULL) < 0) printf("Exec failed");
		}
		else if(n_args == 13)
		{
			if (execl(emu->exec, emu->exec,  arg->value[0], arg->value[1], arg->value[2], arg->value[3], arg->value[4], arg->value[5], arg->value[6], arg->value[7], arg->value[8], arg->value[9], arg->value[10], arg->value[11], arg->value[12], exec_rom, NULL) < 0) printf("Exec failed");
		}
		else if(n_args == 14)
		{
			if (execl(emu->exec, emu->exec,  arg->value[0], arg->value[1], arg->value[2], arg->value[3], arg->value[4], arg->value[5], arg->value[6], arg->value[7], arg->value[8], arg->value[9], arg->value[10], arg->value[11], arg->value[12], arg->value[13], exec_rom, NULL) < 0) printf("Exec failed");
		}
	}
	else if (childpid != wait(&status))
	{ 
		printf("A signal occurred before the child exited");
	}

	free(arg);
	gui_init_sdl();
	gui_load();
}