int fly_main (int argc, char *argv[], char **envp) { char *wintitle, *filename = NULL; int startpos = 0; // initialize FLY subsystems fly_initialize (); fly_process_args (&argc, &argv, &envp); // require one and only one argument if (argc != 2 && argc != 3) goto usage; // we must make a copy as fly_init() will destroy argv if (argc == 2) { filename = strdup (argv[1]); } if (argc == 3) { if (argv[1][0] != '+') goto usage; startpos = atoi (argv[1]+1); filename = strdup (argv[2]); } // set some parameters fl_opt.appname = "ef"; // set app name fl_clr.background = _BackWhite + _Black; // fire FLY fly_init (-1, -1, -1, -1, NULL); fly_mouse (1); // turn mouse on video_cursor_state (1); // turn cursor on // set window title to the name of the file being edited wintitle = get_window_name (); set_window_name ("%s", filename); // edit the file editor (filename, startpos); // restore window title set_window_name (wintitle); // close FLY and return screen to its previous state fly_terminate (); return 0; usage: fly_error ("usage: %s [+POSITION] filename\n", argv[0]); return 1; }
char * fe_xmpp_status_get_window_name(XMPP_SERVER_REC *server) { WINDOW_REC *window; char *name; g_return_val_if_fail(IS_XMPP_SERVER(server), NULL); if ((name = get_window_name(server)) == NULL) return NULL; window = window_find_name(name); g_free(name); return (window != NULL) ? window->name : NULL; }
WINDOW_REC * fe_xmpp_status_get_window(XMPP_SERVER_REC *server) { WINDOW_REC *window; char *name; g_return_val_if_fail(IS_XMPP_SERVER(server), NULL); name = get_window_name(server); if ((window = window_find_name(name)) == NULL) { window = window_create(NULL, TRUE); window_set_name(window, name); window_change_server(window, server); } g_free(name); return window; }
int init (int argc, char *argv[]) { char *p; int rc = 0, oldmode, i; url_t u; int x0=-1, y0=-1, r=-1, c=-1; struct hostent *remote; char buffer[MAX_PATH]; if (action == ACTION_TESTONLY) exit (0); if (action == ACTION_BADARGS) { usage (); exit (1); } if (options.keep_winsize) { r = cfg_get_integer (CONFIG_NFTP, fl_opt.platform_nick, "rows"); c = cfg_get_integer (CONFIG_NFTP, fl_opt.platform_nick, "cols"); if (r == 0 && c == 0) r = -1, c = -1; } if (options.keep_winpos) { x0 = cfg_get_integer (CONFIG_NFTP, fl_opt.platform_nick, "x0"); y0 = cfg_get_integer (CONFIG_NFTP, fl_opt.platform_nick, "y0"); if (x0 == 0 || y0 == 0) x0 = -1, y0 = -1; } p = cfg_get_string (CONFIG_NFTP, fl_opt.platform_nick, "font"); if (p[0] == '\0') p = NULL; fly_init (x0, y0, r, c, p); fly_mouse (options.mouse); wintitle = get_window_name (); if (fl_opt.platform == PLATFORM_OS2_VIO) { strcpy (buffer, paths.system_libpath); str_cats (buffer, "nftp.ico"); if (access (buffer, R_OK) == 0) set_icon (buffer); } if (main_menu != NULL) { menu_activate (main_menu); } display.rshift = 0; display.lshift = 0; display.tabsize = 8; display.view[V_LEFT] = -1; display.view[V_RIGHT] = -1; display.cursor = V_LEFT; display.parsed = TRUE; for (i=0; i<MAX_SITE; i++) { site[i].set_up = FALSE; site[i].CC.na = 0; site[i].CC.n = 0; } // ignore "broken PIPE" signals signal (SIGPIPE, SIG_IGN); set_window_name ("NFTP%s(C) Copyright Sergey Ayukov", NFTP_VERSION); lcache.lda = 0; lcache.ld = 0; lcache.L = NULL; local[V_LEFT].dir.name = NULL; local[V_LEFT].dir.files = NULL; local[V_LEFT].dir.nfiles = 0; local[V_LEFT].sortmode = abs (options.default_localsort); if (options.default_localsort >= 0) local[V_LEFT].sortdirection = 1; else local[V_LEFT].sortdirection = -1; l_chdir (V_LEFT, NULL); local[V_RIGHT].dir.name = NULL; local[V_RIGHT].dir.files = NULL; local[V_RIGHT].dir.nfiles = 0; local[V_RIGHT].sortmode = abs (options.default_localsort); if (options.default_localsort >= 0) local[V_RIGHT].sortdirection = 1; else local[V_RIGHT].sortdirection = -1; l_chdir (V_RIGHT, NULL); PutLineIntoResp (RT_COMM, 0, "NFTP Version%s(%s, %s) -- %s", NFTP_VERSION, __DATE__, __TIME__, fl_opt.platform_name); PutLineIntoResp (RT_RESP, 0, "Copyright (C) 1994--2000 Sergey Ayukov <*****@*****.**>"); PutLineIntoResp (RT_RESP, 0, "Portions Copyright (C) Eric Young <*****@*****.**>"); status.usage_interval = 0; if (!fl_opt.has_osmenu) PutLineIntoResp (RT_RESP, 0, MSG(M_RESP_F9_FOR_MENU)); update (1); if (options.firewall_type != 0) { if (options.fire_server[0] == '\0') { fly_ask_ok (ASK_WARN, MSG(M_PROXY_ISNT_SPECIFIED)); options.firewall_type = 0; } else { if (strspn (options.fire_server, " .0123456789") == strlen (options.fire_server)) { firewall.fwip = inet_addr (options.fire_server); } else { PutLineIntoResp (RT_COMM, 0, MSG(M_RESP_LOOKING_UP), options.fire_server); remote = gethostbyname (options.fire_server); if (remote == NULL) { PutLineIntoResp (RT_COMM, 0, MSG(M_RESP_CANNOT_RESOLVE), options.fire_server); options.firewall_type = 0; } else { firewall.fwip = *((unsigned long *)(remote->h_addr)); PutLineIntoResp (RT_COMM,0, MSG(M_RESP_FOUND), remote->h_name); } } } } // read password cache psw_read (); // analyze arguments switch (action) { case ACTION_NONE: if (options.download_path != NULL) { l_chdir (V_RIGHT, options.download_path); } else { p = cfg_get_string (CONFIG_NFTP, "", "local-directory-left"); if (p[0] != '\0') { l_chdir (V_LEFT, p); } p = cfg_get_string (CONFIG_NFTP, "", "local-directory-right"); if (p[0] != '\0') { l_chdir (V_RIGHT, p); } } switch (options.start_prompt) { case 1: return FMSG_BASE_MENU + KEY_GEN_LOGIN; case 2: return FMSG_BASE_MENU + KEY_GEN_BOOKMARKS; case 3: return FMSG_BASE_MENU + KEY_GEN_HISTORY; case 5: return FMSG_BASE_MENU + KEY_MENU; } return 0; case ACTION_DOWNLOAD: case ACTION_UPLOAD: oldmode = status.batch_mode; status.batch_mode = TRUE; if (action == ACTION_DOWNLOAD) rc = do_get (optarg1); if (action == ACTION_UPLOAD) rc = do_put (optarg1); //set_view_mode (VIEW_CONTROL); //update (1); if (rc && !cmdline.batchmode) fly_ask_ok (0, MSG(M_TRANSFER_FAILED), optarg1); if ((disc_after && rc == 0) || cmdline.batchmode) { Logoff (0); terminate (); exit (0); } status.batch_mode = oldmode; return 0; //case ACTION_CMDLIST: // rc = runscript (optarg1); // return 0; case ACTION_NICK_BOOK: case ACTION_NICK_HIST: if (action == ACTION_NICK_BOOK && bookmark_nickname (optarg1, &u) == 0) return 0; if (action == ACTION_NICK_HIST && history_nickname (optarg1, &u) == 0) return 0; rc = Login (-1, &u, V_LEFT); if (rc) return 0; if ((action == ACTION_NICK_BOOK && MAX_SITE > 1 && optarg2 != NULL && bookmark_nickname (optarg2, &u) == 1) || (action == ACTION_NICK_HIST && MAX_SITE > 1 && optarg2 != NULL && history_nickname (optarg2, &u) == 1)) { rc = Login (-1, &u, V_RIGHT); } if (options.login_bell) Bell (3); return 0; case ACTION_OPEN_BOOKMARKS: return FMSG_BASE_MENU + KEY_GEN_BOOKMARKS; case ACTION_OPEN_HISTORY: return FMSG_BASE_MENU + KEY_GEN_HISTORY; case ACTION_LOGIN: // if download_path was specified in nftp.ini, set it now if (options.download_path != NULL) { l_chdir (V_LEFT, options.download_path); l_chdir (V_RIGHT, options.download_path); } dmsg ("optarg1 is [%s]\n", optarg1); parse_url (optarg1, &u); rc = Login (-1, &u, V_LEFT); if (MAX_SITE > 1 && optarg2 != NULL) { parse_url (optarg2, &u); rc = Login (-1, &u, V_RIGHT); } // attempt to download file if chdir failed /*if (site.set_up && strcmp (site.u.pathname, RCURDIR.name) != 0) { rc = do_get (optarg1); } if (rc) return 0; */ if (options.login_bell) Bell (3); return 0; case ACTION_TESTONLY: terminate (); exit (0); } fly_error ("internal error in init()"); return 0; }
void fly_launch (char *command, int wait, int pause) { char failbuf[512], *cmd, *p, que_name[64], *w; int rc; PID pid; ULONG sess_id, datalen; void *data; STARTDATA sdata; HQUEUE hq; REQUESTDATA rd; BYTE prty; if (wait) { debug_tools ("entered fly_launch(%s)\n", command); w = get_window_name (); set_window_name (command); snprintf1 (que_name, sizeof(que_name), "\\QUEUES\\FLY\\%u\\LAUNCH", getpid ()); rc = DosCreateQueue (&hq, QUE_FIFO, que_name); debug_tools ("rc = %d after DosCreateQueue\n", rc); if (rc != 0) { set_window_name (w); return; } cmd = strdup (command); p = strchr (cmd, ' '); if (p != NULL) *p = '\0'; sdata.Length = sizeof (STARTDATA); sdata.Related = SSF_RELATED_CHILD; sdata.FgBg = SSF_FGBG_FORE; sdata.TraceOpt = SSF_TRACEOPT_NONE; sdata.PgmTitle = NULL; sdata.PgmName = cmd; sdata.PgmInputs = (p == NULL) ? NULL : p+1; sdata.TermQ = que_name; sdata.Environment = NULL; sdata.InheritOpt = SSF_INHERTOPT_SHELL; sdata.SessionType = SSF_TYPE_DEFAULT; sdata.IconFile = NULL; sdata.PgmHandle = 0; sdata.PgmControl = 0; sdata.InitXPos = 0; sdata.InitYPos = 0; sdata.InitXSize = 100; sdata.InitYSize = 100; sdata.Reserved = 0; sdata.ObjectBuffer = failbuf; sdata.ObjectBuffLen = sizeof (failbuf); debug_tools ("going for DosStartSession()\n"); rc = DosStartSession (&sdata, &sess_id, &pid); debug_tools ("rc = %d, failbuf: [%s]\n", rc, failbuf); if (rc == 0) { datalen = sizeof (rd); prty = 0; DosReadQueue (hq, &rd, &datalen, &data, 0, DCWW_WAIT, &prty, 0); } DosCloseQueue (hq); free (cmd); set_window_name (w); } else { cmd = malloc (strlen (command)+32); snprintf1 (cmd, strlen (command)+32, "detach %s >nul 2>&1", command); str_translate (cmd, '/', '\\'); debug_tools ("detaching [%s]\n", cmd); system (cmd); free (cmd); } }
void fill_window_data() { ASWindowData *wd; INT32 encoding; char *name, *names[5]; static char buf[4096], buf2[4096]; ASRawHints raw ; ASDatabaseRecord db_rec ; wd = fetch_window_by_id( MyArgs.src_window ); LOCAL_DEBUG_OUT( "src_window = %lX, wd = %p", MyArgs.src_window, wd ); encoding = AS_Text_ASCII ; name = get_window_name(wd, ASN_Name, &encoding ); add_property( "Window name:", name, encoding, True ); name = get_window_name(wd, ASN_NameMatched, &encoding ); add_property( "Window name matched:", name, encoding, True ); name = get_window_name(wd, ASN_IconName, &encoding ); add_property( "Icon name:", name, encoding, True ); name = get_window_name(wd, ASN_ResClass, &encoding ); add_property( "Resource class:", name, encoding, False ); name = get_window_name(wd, ASN_ResName, &encoding ); add_property( "Resource name:", name, encoding, False ); sprintf( buf, "0x%lX ( %ld )", wd->client, wd->client ); add_property("Client Window ID:", buf, AS_Text_ASCII, False); sprintf( buf, "0x%lX ( %ld )", wd->frame, wd->frame ); add_property("Frame Window ID:", buf, AS_Text_ASCII, False); sprintf( buf, "%ldx%ld%+ld%+ld", wd->frame_rect.width, wd->frame_rect.height, wd->frame_rect.x, wd->frame_rect.y ); add_property("Frame Geometry:", buf, AS_Text_ASCII, False); #define SHOW_FLAG(flags,flg) \ do{ if( get_flags( flags, AS_##flg)){ if( buf[0] != '\0' ) strcat( buf, ", "); strcat( buf, #flg );}}while(0) #define SHOW_WM_FLAG(flags,flg) \ do{ if( get_flags( flags, flg)){ if( buf[0] != '\0' ) strcat( buf, ", "); strcat( buf, #flg );}}while(0) #define SHOW_MWM_FLAG(flags,type,flg) \ do{ if( get_flags( flags, MWM_##type##_##flg)){ if( buf[0] != '\0' ) strcat( buf, ", "); strcat( buf, #flg );}}while(0) #define SHOW_EXTWM_FLAG(flags,type,flg) \ do{ if( get_flags( flags, EXTWM_##type##flg)){ if( buf[0] != '\0' ) strcat( buf, ", "); strcat( buf, #flg );}}while(0) #define SHOW_GNOME_FLAG(flags,type,flg) \ do{ if( get_flags( flags, WIN_##type##_##flg)){ if( buf[0] != '\0' ) strcat( buf, ", "); strcat( buf, #flg );}}while(0) buf[0] = '\0' ; if( (wd->state_flags & (AS_MaximizedX|AS_MaximizedY)) == (AS_MaximizedX|AS_MaximizedY) ) { strcpy( buf, "Maximized"); }else { SHOW_FLAG(wd->state_flags,MaximizedX); SHOW_FLAG(wd->state_flags,MaximizedY); } SHOW_FLAG(wd->state_flags,Iconic); SHOW_FLAG(wd->state_flags,Fullscreen); SHOW_FLAG(wd->state_flags,Sticky); SHOW_FLAG(wd->state_flags,Shaded); SHOW_FLAG(wd->state_flags,Withdrawn); SHOW_FLAG(wd->state_flags,Dead); SHOW_FLAG(wd->state_flags,Mapped); SHOW_FLAG(wd->state_flags,IconMapped); SHOW_FLAG(wd->state_flags,Hidden); SHOW_FLAG(wd->state_flags,Shaped); SHOW_FLAG(wd->state_flags,ShapedDecor); SHOW_FLAG(wd->state_flags,ShapedIcon); SHOW_FLAG(wd->state_flags,Urgent); add_property("Current state flags:", buf, AS_Text_ASCII, True); buf[0] = '\0' ; SHOW_FLAG(wd->flags,Iconic); SHOW_FLAG(wd->flags,Transient); SHOW_FLAG(wd->flags,AcceptsFocus); SHOW_FLAG(wd->flags,ClickToFocus); SHOW_FLAG(wd->flags,Titlebar); SHOW_FLAG(wd->flags,VerticalTitle); SHOW_FLAG(wd->flags,Border); SHOW_FLAG(wd->flags,Handles); SHOW_FLAG(wd->flags,Frame); SHOW_FLAG(wd->flags,SkipWinList); SHOW_FLAG(wd->flags,DontCirculate); SHOW_FLAG(wd->flags,AvoidCover); SHOW_FLAG(wd->flags,IconTitle); SHOW_FLAG(wd->flags,Icon); SHOW_FLAG(wd->client_icon_flags,ClientIcon); SHOW_FLAG(wd->client_icon_flags,ClientIconPixmap); SHOW_FLAG(wd->client_icon_flags,ClientIconPosition); SHOW_FLAG(wd->flags,FocusOnMap); SHOW_FLAG(wd->flags,ShortLived); SHOW_FLAG(wd->flags,Module); SHOW_FLAG(wd->flags,IgnoreConfigRequest); SHOW_FLAG(wd->flags,IgnoreRestackRequest); SHOW_FLAG(wd->flags,WMDockApp); add_property("Current hints flags:", buf, AS_Text_ASCII, True); buf[0] = '\0' ; SHOW_FLAG(wd->flags,Windowbox); SHOW_FLAG(wd->flags,Aspect); SHOW_FLAG(wd->flags,PID); SHOW_FLAG(wd->flags,MinSize); SHOW_FLAG(wd->flags,MaxSize); SHOW_FLAG(wd->flags,SizeInc); SHOW_FLAG(wd->flags,BaseSize); SHOW_FLAG(wd->flags,Gravity); add_property("Specified hint values:", buf, AS_Text_ASCII, True); if( collect_hints( ASDefaultScr, wd->client, HINT_ANY, &raw ) ) { ExtendedWMHints *eh = &(raw.extwm_hints); GnomeHints *gh = &(raw.gnome_hints); if (raw.wm_hints) { if( raw.wm_hints->flags != 0 ) { buf[0] = '\0' ; SHOW_WM_FLAG(raw.wm_hints->flags,UrgencyHint ); SHOW_WM_FLAG(raw.wm_hints->flags,InputHint); SHOW_WM_FLAG(raw.wm_hints->flags,StateHint); SHOW_WM_FLAG(raw.wm_hints->flags,IconPixmapHint); SHOW_WM_FLAG(raw.wm_hints->flags,IconWindowHint); SHOW_WM_FLAG(raw.wm_hints->flags,IconPositionHint); SHOW_WM_FLAG(raw.wm_hints->flags,IconMaskHint); SHOW_WM_FLAG(raw.wm_hints->flags,WindowGroupHint); add_property("WM Hints flags:", buf, AS_Text_ASCII, True); if( get_flags (raw.wm_hints->flags, WindowGroupHint) ) { sprintf( buf, "0x%lX ( %ld )", raw.wm_hints->window_group, raw.wm_hints->window_group ); add_property("WM Group leader:", buf, AS_Text_ASCII, True); } } } if (raw.wm_normal_hints) { if( raw.wm_normal_hints->flags != 0 ) { buf[0] = '\0' ; SHOW_WM_FLAG(raw.wm_normal_hints->flags,USPosition ); SHOW_WM_FLAG(raw.wm_normal_hints->flags,USSize ); SHOW_WM_FLAG(raw.wm_normal_hints->flags,PPosition ); SHOW_WM_FLAG(raw.wm_normal_hints->flags,PSize ); SHOW_WM_FLAG(raw.wm_normal_hints->flags,PMinSize ); SHOW_WM_FLAG(raw.wm_normal_hints->flags,PMaxSize ); SHOW_WM_FLAG(raw.wm_normal_hints->flags,PResizeInc ); SHOW_WM_FLAG(raw.wm_normal_hints->flags,PAspect ); SHOW_WM_FLAG(raw.wm_normal_hints->flags,PBaseSize ); SHOW_WM_FLAG(raw.wm_normal_hints->flags,PWinGravity ); add_property("WM Size Hints flags:", buf, AS_Text_ASCII, True); } if( get_flags(raw.wm_normal_hints->flags, PWinGravity ) && raw.wm_normal_hints->win_gravity >= 0 && raw.wm_normal_hints->win_gravity <= StaticGravity ) { static char *gravity_types[] = {"Forget","NorthWest","North","NorthEast","West", "Center","East","SouthWest","South","SouthEast", "Static" }; add_property("Gravity:", gravity_types[raw.wm_normal_hints->win_gravity], AS_Text_ASCII, True); } } if( raw.transient_for) { sprintf( buf, "0x%lX", raw.transient_for->flags ); add_property("flags:", buf, AS_Text_ASCII, False); sprintf( buf, "0x%lX ( %ld )", raw.transient_for->parent, raw.transient_for->parent ); add_property("Transient For:", buf, AS_Text_ASCII, False); sprintf( buf, "%+d%+d", raw.transient_for->viewport_x, raw.transient_for->viewport_y); add_property("Transient viewport:", buf, AS_Text_ASCII, False); sprintf( buf, "%d", raw.transient_for->desktop ); add_property("Transient desktop:", buf, AS_Text_ASCII, False); } if (raw.motif_hints) { buf[0] = '\0' ; if (get_flags (raw.motif_hints->flags, MWM_HINTS_INPUT_MODE)) { INT32 input_mode = raw.motif_hints->inputMode; if (input_mode == MWM_INPUT_SYSTEM_MODAL) add_property("Motif Input mode:", "System modal", AS_Text_ASCII, False); else if (input_mode == MWM_INPUT_FULL_APPLICATION_MODAL) add_property("Motif Input mode:", "Full application modal", AS_Text_ASCII, False); } check_motif_hints_sanity( raw.motif_hints ); if (get_flags (raw.motif_hints->flags, MWM_HINTS_FUNCTIONS)) { ASFlagType funcs = raw.motif_hints->functions; buf[0] = '\0' ; SHOW_MWM_FLAG(funcs,FUNC,RESIZE); SHOW_MWM_FLAG(funcs,FUNC,MOVE); SHOW_MWM_FLAG(funcs,FUNC,MINIMIZE); SHOW_MWM_FLAG(funcs,FUNC,MAXIMIZE); SHOW_MWM_FLAG(funcs,FUNC,CLOSE); add_property("Motif Functionality hints:", buf, AS_Text_ASCII, False); } if (get_flags (raw.motif_hints->flags, MWM_HINTS_DECORATIONS)) { ASFlagType decor = raw.motif_hints->decorations; buf[0] = '\0' ; SHOW_MWM_FLAG(decor,DECOR,BORDER); SHOW_MWM_FLAG(decor,DECOR,RESIZEH); SHOW_MWM_FLAG(decor,DECOR,TITLE); SHOW_MWM_FLAG(decor,DECOR,MENU); SHOW_MWM_FLAG(decor,DECOR,MINIMIZE); SHOW_MWM_FLAG(decor,DECOR,MAXIMIZE); add_property("Motif decor hints:", buf, AS_Text_ASCII, False); } } /* window state hints : */ if (get_flags (eh->state_flags, EXTWM_StateEverything)) { buf[0] = '\0' ; SHOW_EXTWM_FLAG(eh->state_flags,State,Modal ); SHOW_EXTWM_FLAG(eh->state_flags,State,Sticky ); SHOW_EXTWM_FLAG(eh->state_flags,State,MaximizedV ); SHOW_EXTWM_FLAG(eh->state_flags,State,MaximizedH ); SHOW_EXTWM_FLAG(eh->state_flags,State,Shaded ); SHOW_EXTWM_FLAG(eh->state_flags,State,SkipTaskbar ); SHOW_EXTWM_FLAG(eh->state_flags,State,SkipPager ); SHOW_EXTWM_FLAG(eh->state_flags,State,Fullscreen ); SHOW_EXTWM_FLAG(eh->state_flags,State,Above ); SHOW_EXTWM_FLAG(eh->state_flags,State,Below ); SHOW_EXTWM_FLAG(eh->state_flags,State,Hidden ); SHOW_EXTWM_FLAG(eh->state_flags,State,DemandsAttention ); add_property("Extended WM status flags:", buf, AS_Text_ASCII, True); } /* window type hints : */ if (get_flags (eh->type_flags, EXTWM_TypeEverything)) { buf[0] = '\0' ; SHOW_EXTWM_FLAG(eh->type_flags,Type,Desktop); SHOW_EXTWM_FLAG(eh->type_flags,Type,Dock); SHOW_EXTWM_FLAG(eh->type_flags,Type,Toolbar); SHOW_EXTWM_FLAG(eh->type_flags,Type,Menu); SHOW_EXTWM_FLAG(eh->type_flags,Type,Dialog); SHOW_EXTWM_FLAG(eh->type_flags,Type,Normal); SHOW_EXTWM_FLAG(eh->type_flags,Type,Utility); SHOW_EXTWM_FLAG(eh->type_flags,Type,Splash); add_property("Extended WM type flags:", buf, AS_Text_ASCII, True); } if (get_flags (eh->flags, EXTWM_PID)) { sprintf( buf, "%d", (int)eh->pid ); add_property("Extended WM PID:", buf, AS_Text_ASCII, False); } if (get_flags (eh->flags, EXTWM_DoesWMPing)) add_property("Extended WM protocols:", "DoesWMPing", AS_Text_ASCII, False); if (get_flags (eh->flags, EXTWM_WINDOW_OPACITY)) { sprintf( buf, "%d", (int)eh->window_opacity ); add_property("ExtWM Window Opacity :", buf, AS_Text_ASCII, False); } if (get_flags (eh->flags, EXTWM_DESKTOP)) { if (eh->desktop == 0xFFFFFFFF) strcpy(buf, "sticky"); else sprintf( buf, "%d", (int)eh->desktop ); add_property("Extended WM desktop:", buf, AS_Text_ASCII, False); } if (get_flags (gh->flags, GNOME_LAYER)) { sprintf( buf, "%d", (int)gh->layer ); add_property("Gnome hints layer:", buf, AS_Text_ASCII, False); } if (get_flags (gh->flags, GNOME_WORKSPACE)) { sprintf( buf, "%d", (int)gh->workspace ); add_property("Gnome hints desktop:", buf, AS_Text_ASCII, False); } if (get_flags (gh->flags, GNOME_STATE) && gh->state != 0) { buf[0] = '\0' ; SHOW_GNOME_FLAG(gh->state,STATE,STICKY); SHOW_GNOME_FLAG(gh->state,STATE,MINIMIZED); SHOW_GNOME_FLAG(gh->state,STATE,MAXIMIZED_VERT); SHOW_GNOME_FLAG(gh->state,STATE,MAXIMIZED_HORIZ); SHOW_GNOME_FLAG(gh->state,STATE,SHADED); add_property("Gnome state flags:", buf, AS_Text_ASCII, False); } if (get_flags (gh->flags, GNOME_HINTS) && gh->hints != 0) { buf[0] = '\0' ; SHOW_GNOME_FLAG(gh->state,HINTS,SKIP_FOCUS); SHOW_GNOME_FLAG(gh->state,HINTS,SKIP_WINLIST); SHOW_GNOME_FLAG(gh->state,HINTS,SKIP_TASKBAR); SHOW_GNOME_FLAG(gh->state,HINTS,FOCUS_ON_CLICK); add_property("Gnome hints flags:", buf, AS_Text_ASCII, False); } } names[0] = get_window_name(wd, ASN_NameMatched, &encoding ); names[1] = get_window_name(wd, ASN_IconName, &encoding ); names[2] = get_window_name(wd, ASN_ResClass, &encoding ); names[3] = get_window_name(wd, ASN_ResName, &encoding ); names[4] = NULL ; #define APPEND_DBSTYLE_TEXT(text) \ do { if( !first ) strcat( buf, ", "); else first = False ; strcat( buf, text); } while(0) if ( fill_asdb_record (Database, names, &db_rec, False) != NULL ) { int i ; add_property("Matched Styles:", "", AS_Text_ASCII, True); for( i = 0 ; Database->match_list[i] >= 0 ; ++i ) { ASDatabaseRecord *dr = get_asdb_record (Database, Database->match_list[i]); int f ; Bool first = True ; if( is_default_asdb_record(Database, dr) ) sprintf(buf, "\"*\" \t"); else if( dr->regexp ) sprintf( buf, "\"%s\" \t", dr->regexp->raw ); else sprintf( buf, "\"(none)\" \t" ); for( f = 0 ; DatabaseFlagsList[f].name_set != NULL ; ++f ) { if( get_flags( dr->set_flags, DatabaseFlagsList[f].flag ) ) { name = get_flags( dr->flags, DatabaseFlagsList[f].flag )? DatabaseFlagsList[f].name_set : DatabaseFlagsList[f].name_unset ; APPEND_DBSTYLE_TEXT(name); } } if( get_flags( dr->set_data_flags, STYLE_ICON ) ) { sprintf( buf2, "Icon \"%s\"", dr->icon_file ); APPEND_DBSTYLE_TEXT(buf2); } #if 1 if( get_flags( dr->set_data_flags, STYLE_STARTUP_DESK ) ) { sprintf( buf2, "StartsOnDesk %d", dr->desk ); APPEND_DBSTYLE_TEXT(buf2); } if( get_flags( dr->set_data_flags, STYLE_BORDER_WIDTH ) ) { sprintf( buf2, "BorderWidth %d", dr->border_width ); APPEND_DBSTYLE_TEXT(buf2); } if( get_flags( dr->set_data_flags, STYLE_HANDLE_WIDTH ) ) { sprintf( buf2, "HandleWidth %d", dr->resize_width ); APPEND_DBSTYLE_TEXT(buf2); } if( get_flags( dr->set_data_flags, STYLE_DEFAULT_GEOMETRY ) ) { sprintf( buf2, "DefaultGeometry %dx%d%+d%+d", dr->default_geometry.width, dr->default_geometry.height, dr->default_geometry.x, dr->default_geometry.y ); APPEND_DBSTYLE_TEXT(buf2); } if( get_flags( dr->set_data_flags, STYLE_VIEWPORTX ) ) { sprintf( buf2, "ViewportX %d", dr->viewport_x ); APPEND_DBSTYLE_TEXT(buf2); } if( get_flags( dr->set_data_flags, STYLE_VIEWPORTY ) ) { sprintf( buf2, "ViewportY %d", dr->viewport_y ); APPEND_DBSTYLE_TEXT(buf2); } if( get_flags( dr->set_data_flags, STYLE_GRAVITY ) ) { sprintf( buf2, "OverrideGravity %s", Gravity2text[dr->gravity] ); APPEND_DBSTYLE_TEXT(buf2); } if( get_flags( dr->set_data_flags, STYLE_LAYER ) ) { sprintf( buf2, "Layer %d", dr->layer ); APPEND_DBSTYLE_TEXT(buf2); } if( get_flags( dr->set_data_flags, STYLE_FRAME ) ) { sprintf( buf2, "Frame \"%s\"", dr->frame_name ); APPEND_DBSTYLE_TEXT(buf2); } if( get_flags( dr->set_data_flags, STYLE_WINDOWBOX ) ) { sprintf( buf2, "WindowBox \"%s\"", dr->windowbox_name ); APPEND_DBSTYLE_TEXT(buf2); } #endif add_property("Style:", buf, AS_Text_ASCII, True); } } { ASDesktopEntry *de = fetch_desktop_entry( CombinedCategories, names[2]); if( de == NULL ) de = fetch_desktop_entry( CombinedCategories, names[3]); if( de ) { char *categories = make_desktop_entry_categories( de ); add_property("Categories:", categories?categories:"<none>", AS_Text_ASCII, False); destroy_string( &categories ) ; add_property(".desktop Entry Name:", de->Name, AS_Text_ASCII, False); add_property(".desktop Entry Comment:", de->Comment, AS_Text_ASCII, True); add_property(".desktop Entry Icon:", de->Icon, AS_Text_ASCII, True); } } }
int init (int argc, char *argv[]) { char *p; int rc = 0, oldmode; url_t u; int x0=-1, y0=-1, r=-1, c=-1; struct hostent *remote; char buffer[MAX_PATH]; if (action == ACTION_TESTONLY) exit (0); if (action == ACTION_BADAGS) { usage (); exit (1); } if (options.keep_winsize) { r = cfg_get_integer (CONFIG_NFTP, fl_opt.platform_nick, "rows"); c = cfg_get_integer (CONFIG_NFTP, fl_opt.platform_nick, "cols"); if (r == 0 && c == 0) r = -1, c = -1; } if (options.keep_winpos) { x0 = cfg_get_integer (CONFIG_NFTP, fl_opt.platform_nick, "x0"); y0 = cfg_get_integer (CONFIG_NFTP, fl_opt.platform_nick, "y0"); if (x0 == 0 || y0 == 0) x0 = -1, y0 = -1; } p = cfg_get_string (CONFIG_NFTP, fl_opt.platform_nick, "font"); if (p[0] == '\0') p = NULL; fly_init (x0, y0, r, c, p); if (options.show_hw_cursor) video_cursor_state (1); fly_mouse (options.mouse); wintitle = get_window_name (); if (fl_opt.platform == PLATFORM_OS2_VIO) { strcpy (buffer, paths.system_libpath); str_cats (buffer, "nftp.ico"); if (access (buffer, R_OK) == 0) set_icon (buffer); } if (main_menu != NULL) { menu_activate (main_menu); adjust_menu_status (); } display.dir_mode = options.defaultdirmode; display.view_mode = VIEW_CONTROL; display.rshift = 0; display.lshift = 0; display.tabsize = 8; if (options.slowlink) set_view_mode (VIEW_REMOTE); else set_view_mode (VIEW_CONTROL); site.maxndir = 1024; site.dir = malloc (sizeof(directory)*site.maxndir); // ignore "broken PIPE" signals signal (SIGPIPE, SIG_IGN); set_window_name ("NFTP%s(C) Copyright Sergey Ayukov", NFTP_VERSION); local.dir.files = NULL; local.sortmode = abs (options.default_localsort); if (options.default_localsort >= 0) local.sortdirection = 1; else local.sortdirection = -1; build_local_filelist (NULL); site.batch_mode = FALSE; site.chunks = NULL; PutLineIntoResp2 ("NFTP Version%s(%s, %s) -- %s", NFTP_VERSION, __DATE__, __TIME__, fl_opt.platform_name); PutLineIntoResp1 ("Copyright (C) 1994-2003 Sergey Ayukov <*****@*****.**>"); PutLineIntoResp1 ("Portions Copyright (C) Eric Young <*****@*****.**>"); //PutLineIntoResp1 ("Portions Copyright (C) Martin Nicolay <*****@*****.**>"); status.usage_interval = 0; if (!fl_opt.has_osmenu) PutLineIntoResp1 (M("Press F9 or Ctrl-F for menu")); update (1); if (options.firewall_type != 0) { if (options.fire_server[0] == '\0') { fly_ask_ok (ASK_WARN, M("Firewall proxy host isn't specified in NFTP.INI")); options.firewall_type = 0; } else { if (strspn (options.fire_server, " .0123456789") == strlen (options.fire_server)) { firewall.fwip = inet_addr (options.fire_server); } else { PutLineIntoResp2 (M("Looking up '%s'"), options.fire_server); remote = gethostbyname (options.fire_server); if (remote == NULL) { PutLineIntoResp2 (M("Cannot find '%s'"), options.fire_server); options.firewall_type = 0; } else { firewall.fwip = *((unsigned long *)(remote->h_addr)); PutLineIntoResp2 (M("Found '%s'"), remote->h_name); } } } } // read password cache psw_read (); // analyze arguments switch (action) { case 0: if (options.download_path != NULL) { set_local_path (options.download_path); } else { p = cfg_get_string (CONFIG_NFTP, "", "local-directory"); if (p[0] != '\0') set_local_path (p); } build_local_filelist (NULL); switch (options.start_prompt) { case 1: return FMSG_BASE_MENU + KEY_GEN_LOGIN; case 2: return FMSG_BASE_MENU + KEY_GEN_BOOKMARKS; case 3: return FMSG_BASE_MENU + KEY_GEN_HISTORY; case 5: return FMSG_BASE_MENU + KEY_MENU; } return 0; case ACTION_DOWNLOAD: case ACTION_UPLOAD: oldmode = site.batch_mode; site.batch_mode = TRUE; if (action == ACTION_DOWNLOAD) rc = do_get (optarg1); if (action == ACTION_UPLOAD) rc = do_put (optarg1); //set_view_mode (VIEW_CONTROL); //update (1); if (rc && !cmdline.batchmode) fly_ask_ok (0, M("Transfer of '%s' has failed"), optarg1); if ((disc_after && rc == 0) || cmdline.batchmode) { Logoff (); terminate (); exit (0); } site.batch_mode = oldmode; return 0; case ACTION_CMDLIST: rc = runscript (optarg1); return 0; case ACTION_NICK_BOOK: case ACTION_NICK_HIST: if (action == ACTION_NICK_BOOK && bookmark_nickname (optarg1, &u) == 0) return 0; if (action == ACTION_NICK_HIST && history_nickname (optarg1, &u) == 0) return 0; rc = Login (&u); if (rc) return 0; if (options.login_bell) Bell (3); return 0; case ACTION_OPEN_BOOKMARKS: return FMSG_BASE_MENU + KEY_GEN_BOOKMARKS; case ACTION_OPEN_HISTORY: return FMSG_BASE_MENU + KEY_GEN_HISTORY; case ACTION_LOGIN: // if download_path was specified in nftp.ini, set it now if (options.download_path != NULL) set_local_path (options.download_path); build_local_filelist (NULL); parse_url (optarg1, &u); rc = Login (&u); // attempt to download file if chdir failed /*if (site.set_up && strcmp (site.u.pathname, RCURDIR.name) != 0) { rc = do_get (optarg1); } if (rc) return 0; */ if (options.login_bell) Bell (3); return 0; case ACTION_TESTONLY: terminate (); exit (0); } fly_error ("internal error in init()"); return 0; }