#include <u.h> | |
#include <libc.h> | |
#include <draw.h> | |
#include <memdraw.h> | |
#include "devdraw.h" | |
int | |
parsewinsize(char *s, Rectangle *r, int *havemin) | |
{ | |
char c, *os; | |
int i, j, k, l; | |
os = s; | |
*havemin = 0; | |
*r = Rect(0,0,0,0); | |
if(!isdigit((uchar)*s)) | |
goto oops; | |
i = strtol(s, &s, 0); | |
if(*s == 'x'){ | |
s++; | |
if(!isdigit((uchar)*s)) | |
goto oops; | |
j = strtol(s, &s, 0); | |
r->max.x = i; | |
r->max.y = j; | |
if(*s == 0) | |
return 0; | |
if(*s != '@') | |
goto oops; | |
s++; | |
if(!isdigit((uchar)*s)) | |
goto oops; | |
i = strtol(s, &s, 0); | |
if(*s != ',' && *s != ' ') | |
goto oops; | |
s++; | |
if(!isdigit((uchar)*s)) | |
goto oops; | |
j = strtol(s, &s, 0); | |
if(*s != 0) | |
goto oops; | |
*r = rectaddpt(*r, Pt(i,j)); | |
*havemin = 1; | |
return 0; | |
} | |
c = *s; | |
if(c != ' ' && c != ',') | |
goto oops; | |
s++; | |
if(!isdigit((uchar)*s)) | |
goto oops; | |
j = strtol(s, &s, 0); | |
if(*s != c) | |
goto oops; | |
s++; | |
if(!isdigit((uchar)*s)) | |
goto oops; | |
k = strtol(s, &s, 0); | |
if(*s != c) | |
goto oops; | |
s++; | |
if(!isdigit((uchar)*s)) | |
goto oops; | |
l = strtol(s, &s, 0); | |
if(*s != 0) | |
goto oops; | |
*r = Rect(i,j,k,l); | |
*havemin = 1; | |
return 0; | |
oops: | |
werrstr("bad syntax in window size '%s'", os); | |
return -1; | |
} |