| #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; |
| } |