/*---------------------------------------------------------------------------*/ void doView(char *directory, char *fname) { char path[MAXPATHLEN]; char **argv; if (resources.default_viewer) { sprintf(path, "siagrun editor"); strcat(path, " "); strcat(path, fname); argv = (char **) XtMalloc(4 * sizeof(char *)); argv[0] = user.shell; argv[1] = "-c"; argv[2] = path; argv[3] = NULL; executeApplication(user.shell, directory, argv); XTFREE(argv); } else error("No default viewer", ""); }
int Launcher::exec() { init(); if (cLaunchMode() == LaunchModeFixPrevious) { return psFixPrevious(); } else if (cLaunchMode() == LaunchModeCleanup) { return psCleanup(); } // both are finished in Application::closeApplication Logs::start(this); // must be started before Platform is started Platform::start(); // must be started before QApplication is created auto result = executeApplication(); DEBUG_LOG(("Telegram finished, result: %1").arg(result)); if (!UpdaterDisabled() && cRestartingUpdate()) { DEBUG_LOG(("Application Info: executing updater to install update...")); if (!launchUpdater(UpdaterLaunch::PerformUpdate)) { psDeleteDir(cWorkingDir() + qsl("tupdates/temp")); } } else if (cRestarting()) { DEBUG_LOG(("Application Info: executing Telegram, because of restart...")); launchUpdater(UpdaterLaunch::JustRelaunch); } CrashReports::Finish(); Platform::finish(); Logs::finish(); return result; }
/*---------------------------------------------------------------------------*/ void doComHere(char *directory, char *fname) { char path[MAXPATHLEN]; char **argv; char default_term[1000]; if (resources.default_term) { strcpy(path, "cd "); strcat(path, fname); strcat(path, "&&"); sprintf(default_term, "siagrun terminal"); strcat(path, default_term); argv = (char **) XtMalloc(4 * sizeof(char *)); argv[0] = user.shell; argv[1] = "-c"; argv[2] = path; argv[3] = NULL; executeApplication(user.shell, directory, argv); XTFREE(argv); } else error("No default terminal program", ""); }
void fileExecFile(Widget w, XEvent *event, String *params, Cardinal *num_params) { int i, l; char *path; char **argv; FileWindowRec *fw; i = findWidget(w, &fw); if (i == -1 || !fw) { /* error("Internal error:","widget not found in fileExecFile"); */ return; } l = strlen(fw->directory); path = (char *)alloca(l+strlen(fw->files[i]->name)+2); strcpy(path, fw->directory); if (path[l-1] != '/') path[l++] = '/'; strcpy(path+l, fw->files[i]->name); argv = (char **) XtMalloc(2 * sizeof(char *)); argv[0] = XtNewString(fw->files[i]->name); argv[1] = NULL; executeApplication(path, fw->directory, argv); freeArgv(argv); }
void ExecExternalApplication(Display *dpy, int x, int y, char *label, char *icon, char *cmd, char *drop, char *dir) { char path[1024]; char *p; char **argv; if (dir) { newFileWindow(dir,resources.initial_display_type,True,False); return; } strcpy(path, cmd); p= path+strlen(path); while(*p--!='/'); p++; p[0] = '\0'; argv = (char **) XtMalloc(2 * sizeof(char *)); argv[0] = XtNewString(cmd); argv[1] = NULL; executeApplication(cmd, path, argv); freeArgv(argv); }
void fileOpenCb(Widget w, XEvent *event, String *params, Cardinal *num_params) { FileWindowRec *fw; FileRec *file; int item; char path[MAXPATHLEN]; String *argv, push_action; if (!(fw = findFileWidget(w, &item))) return; zzz(); file = fw->files[item]; strcpy(path, fw->directory); if (path[strlen(path)-1] != '/') strcat(path, "/"); strcat(path, file->name); if (S_ISDIR(file->stats.st_mode)) { contractPath(path); chFileDir(fw, path); } else if (file->stats.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)) { String arguments = XtNewString(file->name); String action = (String) XtMalloc((strlen(path) + 6) * sizeof(char)); strcat(strcpy(action, "exec "), path); argv = makeArgv(action, 1, &arguments); executeApplication(user.shell, fw->directory, argv); XTFREE(action); freeArgv(argv); } else if (file->type) { if (*(push_action = file->type->push_action)) { if (!(strcmp(push_action, "EDIT"))) doEdit(fw->directory, file->name); else if (!(strcmp(push_action, "VIEW"))) doView(fw->directory, file->name); else if (!(strcmp(push_action, "LOAD"))) { zzz(); newApplicationWindow(path, NULL); wakeUp(); } else { argv = (String *) XtMalloc(sizeof(String)); argv[0] = XtNewString(file->name); performAction(fw->shell, file->type->icon_pm.bm, push_action, fw->directory, 1, argv); XTFREE(argv); } } } else doEdit(fw->directory, file->name); wakeUp(); }
/*---------------------------------------------------------------------------*/ void fileExecAction(Widget w, XEvent *event, String *params, Cardinal *num_params) { int i; FileWindowRec *fw; char **argv; i = findWidget(w, &fw); if (i == -1 || !fw) { /* error("Internal error:","widget not found in fileExecAction"); */ return; } if (fw->files[i]->type) { if (*fw->files[i]->type->push_action) if (!strcmp(fw->files[i]->type->push_action, "EDIT")) doEdit(fw->directory, fw->files[i]->name); else if (!strcmp(fw->files[i]->type->push_action, "VIEW")) doView(fw->directory, fw->files[i]->name); else if (!strcmp(fw->files[i]->type->push_action, "IMAGE")) doImage(fw->directory, fw->files[i]->name); else if (!strcmp(fw->files[i]->type->push_action, "SIAGHELP")) doSiaghelp(fw->directory, fw->files[i]->name); else { int k = 0; char *action = varPopup(fw->files[i]->type->icon_bm, fw->files[i]->type->push_action); if (!action) return; argv = (char **) XtMalloc( (user.arg0flag ? 6 : 5) * sizeof(char *)); argv[k++] = user.shell; argv[k++] = "-c"; argv[k++] = action; if (user.arg0flag) argv[k++] = user.shell; argv[k++] = fw->files[i]->name; argv[k] = NULL; executeApplication(user.shell, fw->directory, argv); XTFREE(argv); } } else doEdit(fw->directory, fw->files[i]->name); }
void xtermCb(Widget w, XtPointer client_data, XtPointer call_data) { FileWindowRec *fw = (FileWindowRec *) client_data; String *argv; zzz(); argv = (String *) XtMalloc(4 * sizeof(String)); argv[0] = user.shell; argv[1] = "-c"; argv[2] = resources.xterm; argv[3] = NULL; executeApplication(user.shell, fw->directory, argv); XTFREE(argv); wakeUp(); }
/*---------------------------------------------------------------------------*/ void doOpenWith(char *directory, char *fname, char *with) { char path[MAXPATHLEN]; char **argv; strcpy(path, with); strcat(path, " "); strcat(path, fname); argv = (char **) XtMalloc(4 * sizeof(char *)); argv[0] = user.shell; argv[1] = "-c"; argv[2] = path; argv[3] = NULL; executeApplication(user.shell, directory, argv); XTFREE(argv); }