ASWinCommandParamCode set_WinCommandParam( ASWinCommandState *state, const char *param, const char *val ) { int val_used = 0 ; if( state == NULL || param == NULL ) return ASWC_BadParam; if( param[0] == '-' ) ++param ; if( mystrcasecmp ( param, "x") == 0) { if( val == NULL || !isdigit(val[0]) ) return ASWC_BadVal; state->x_dest = atopixel( val, Scr.MyDisplayWidth); ++val_used; }else if( mystrcasecmp ( param, "y") == 0) { if( val == NULL || !isdigit(val[0]) ) return ASWC_BadVal; state->y_dest = atopixel( val, Scr.MyDisplayHeight); ++val_used; }else /* Resize */ if( mystrcasecmp ( param, "width") == 0 ) { if( val == NULL || !isdigit(val[0]) ) return ASWC_BadVal; state->new_width = atopixel ( val, Scr.MyDisplayWidth); ++val_used; }else if( mystrcasecmp ( param, "height") == 0 ) { if( val == NULL || !isdigit(val[0]) ) return ASWC_BadVal; state->new_height = atopixel ( val, Scr.MyDisplayHeight); ++val_used; }else if( mystrcasecmp ( param, "new_desk") == 0 ) { if( val == NULL || !isdigit(val[0]) ) return ASWC_BadVal; state->desk = atoi( val ); ++val_used; } /* generic */ else if( mystrcasecmp( param, "all") == 0) set_flags( state->flags, WINCOMMAND_ActOnAll ); else if( mystrcasecmp( param, "alldesks") == 0) set_flags( state->flags, WINCOMMAND_AllDesks ); else if( mystrcasecmp( param, "desk") == 0) set_flags( state->flags, WINCOMMAND_Desk ); else if( mystrcasecmp( param, "pattern") == 0 ) { if( val == NULL ) return ASWC_BadVal; destroy_string( &(state->pattern) ); state->pattern = mystrdup(val); ++val_used; }else { return ASWC_BadParam; } return ( val_used > 0 )?ASWC_Ok_ValUsed:ASWC_Ok_ValUnused; }
void parse_args(char *s, int argc, char *argv[], int argi) { int nsargc = 0; /* parse args */ for (; argi < argc; ++argi) { if (!strcmp(argv[argi], "-tile") || !strcmp(argv[argi], "-cascade")) { /* ignore */ } else if (!strcmp(argv[argi], "-u")) { untitled = 1; } else if (!strcmp(argv[argi], "-t")) { transients = 1; } else if (!strcmp(argv[argi], "-a")) { all = untitled = transients = maximized = 1; if (FvwmCascade) sticky_page = 1; sticky_desk = 1; } else if (!strcmp(argv[argi], "-r")) { reversed = 1; } else if (!strcmp(argv[argi], "-noraise")) { raise_window = 0; } else if (!strcmp(argv[argi], "-noresize")) { resize = 0; } else if (!strcmp(argv[argi], "-nostretch")) { nostretch = 1; } else if (!strcmp(argv[argi], "-desk")) { desk = 1; } else if (!strcmp(argv[argi], "-flatx")) { flatx = 1; } else if (!strcmp(argv[argi], "-flaty")) { flaty = 1; } else if (!strcmp(argv[argi], "-r")) { reversed = 1; } else if (!strcmp(argv[argi], "-h")) { horizontal = 1; } else if (!strcmp(argv[argi], "-m")) { maximized = 1; } else if (!strcmp(argv[argi], "-s")) { sticky_page = 1; sticky_desk = 1; } else if (!strcmp(argv[argi], "-sp")) { sticky_page = 1; } else if (!strcmp(argv[argi], "-sd")) { sticky_desk = 1; } else if (!strcmp(argv[argi], "-mn") && ((argi + 1) < argc)) { maxnum = atoi(argv[++argi]); } else if (!strcmp(argv[argi], "-resize")) { resize = 1; } else if (!strcmp(argv[argi], "-nostretch")) { nostretch = 1; } else if (!strcmp(argv[argi], "-incx") && ((argi + 1) < argc)) { incx = atopixel(argv[++argi], dwidth); } else if (!strcmp(argv[argi], "-incy") && ((argi + 1) < argc)) { incy = atopixel(argv[++argi], dheight); } else if (!strcmp(argv[argi], "-maximize")) { do_maximize = 1; } else if (!strcmp(argv[argi], "-nomaximize")) { do_maximize = 0; } else if (!strcmp(argv[argi], "-animate")) { do_animate = 1; } else if (!strcmp(argv[argi], "-noanimate")) { do_animate = 0; } else { if (++nsargc > 4) { fprintf(console, "%s: %s: ignoring unknown arg %s\n", module->name, s, argv[argi]); continue; } if (nsargc == 1) { ofsx = atopixel(argv[argi], dwidth); } else if (nsargc == 2) { ofsy = atopixel(argv[argi], dheight); } else if (nsargc == 3) { if (FvwmCascade) maxw = atopixel(argv[argi], dwidth); else /* FvwmTile */ maxx = atopixel(argv[argi], dwidth); } else if (nsargc == 4) { if (FvwmCascade) maxh = atopixel(argv[argi], dheight); else /* FvwmTile */ maxy = atopixel(argv[argi], dheight); } } } ofsx += dx; ofsy += dy; maxx += dx; maxy += dy; }