home *** CD-ROM | disk | FTP | other *** search
- /* ReSize ©1995 P.Marquardt, crippled SUXX-WARE */
-
- #define __USE_SYSBASE
-
- #include <stdlib.h>
- #include <string.h>
- #include <clib/dos_protos.h>
- #include <clib/alib_stdio_protos.h>
- #include <clib/graphics_protos.h>
- #include <intuition/intuitionbase.h>
- #include <proto/dos.h>
- #include <proto/intuition.h>
- #include <proto/graphics.h>
- #include "version.h"
-
- CHARVERSTAG;
-
- struct ReSizeArgs {
- LONG Local,Global,Save,Verbose;
- };
-
- char *Template = "SET/S,SETENV/S,SAVE/S,VERBOSE=V/S";
-
- char *Options[] = {
- "set local",
- "set global ENV:",
- "save in ENVARC:",
- "be verbose"
- };
-
- char *Errlist[] = {
- "n/a"
- };
-
- char *cols_name = "COLS";
- char *colm_name = "COLUMNS";
- char *rows_name = "LINES";
- char *mode_name = "SCREENMODE";
- char *enva_name = "ENVARC:";
-
- static void Help(int err)
- {
- if (!err) {
- char *p,**o;
- Printf("Purpose: show/set/save $%s/$%s/$%s vars\n",cols_name,rows_name,mode_name);
- Printf("Usage:\nReSize %s\n",Template);
- o=&Options[0];
- for (p=strtok(Template,",");p;p=strtok(NULL,","))
- Printf("%12s %s\n",p,*o++);
- }
- else
- Printf("Error: %s\n",Errlist[err-1]);
- }
-
- void DoVar(char *Where, char *Var, char *Fmt, LONG SetTo, ULONG flag)
- {
- char VarBuf[64];
- char NameBuf[64];
-
- sprintf(NameBuf,"%s%s",Where,Var);
- sprintf(VarBuf,Fmt,SetTo);
- if (flag&GVF_GLOBAL_ONLY)
- SetVar(NameBuf,VarBuf,-1,GVF_GLOBAL_ONLY);
- if (flag&GVF_LOCAL_ONLY)
- SetVar(NameBuf,VarBuf,-1,GVF_LOCAL_ONLY);
- }
-
- LONG __saveds main(void)
- {
- struct Window *win;
- struct Screen *scr;
- ULONG m;
- WORD rows , cols;
- LONG ret;
-
- struct RDArgs *RDArgs;
- struct ReSizeArgs Args = {0};
- LONG NoArg = NULL;
-
- if ((RDArgs=ReadArgs(Template,(LONG *)&Args,NULL))==NULL) {
- PrintFault (IoErr(),NULL);
- ret = 1;
- goto quit;
- }
-
- ret = 0;
-
- NoArg = !(Args.Local || Args.Global || Args.Save);
-
- if (NoArg && !Args.Verbose) {
- FreeArgs (RDArgs);
- Help(0);
- goto quit;
- }
-
- win = IntuitionBase->ActiveWindow;
- scr = IntuitionBase->FirstScreen;
- m = GetVPModeID(&scr->ViewPort);
-
- rows = (win->Height - win->BorderTop - win->BorderBottom) / (win->RPort->Font->tf_YSize);
- cols = (win->Width - win->BorderLeft - win->BorderRight) / (win->RPort->Font->tf_XSize);
-
- if (Args.Verbose) {
- Printf ("%s=%ld\n%s=%ld\n%s=%ld\n%s=0x%lx\n",rows_name,rows,cols_name,cols,colm_name,cols,mode_name,m);
- }
-
- if (!NoArg) {
- ULONG flag = NULL;
- char loops = 1;
- char *funky = "";
-
- if (Args.Local) flag = GVF_LOCAL_ONLY;
- if (Args.Global || Args.Save) flag |= GVF_GLOBAL_ONLY;
- if (Args.Save) loops = 2;
-
- while (loops) {
- DoVar(funky,rows_name,"%ld",rows,flag);
- DoVar(funky,cols_name,"%ld",cols,flag);
- DoVar(funky,colm_name,"%ld",cols,flag);
- DoVar(funky,mode_name,"0x%lx",m,flag);
- loops--;
- funky=enva_name;
- }
- }
-
- FreeArgs (RDArgs);
- quit:
- return ret;
- }
-
-