Blame


1 9142d362 2008-06-30 rsc #include <u.h>
2 9142d362 2008-06-30 rsc #include <libc.h>
3 9142d362 2008-06-30 rsc #include <draw.h>
4 9142d362 2008-06-30 rsc #include <memdraw.h>
5 9142d362 2008-06-30 rsc #include "devdraw.h"
6 9142d362 2008-06-30 rsc
7 9142d362 2008-06-30 rsc int
8 9142d362 2008-06-30 rsc parsewinsize(char *s, Rectangle *r, int *havemin)
9 9142d362 2008-06-30 rsc {
10 9142d362 2008-06-30 rsc char c, *os;
11 9142d362 2008-06-30 rsc int i, j, k, l;
12 9142d362 2008-06-30 rsc
13 9142d362 2008-06-30 rsc os = s;
14 9142d362 2008-06-30 rsc *havemin = 0;
15 9142d362 2008-06-30 rsc *r = Rect(0,0,0,0);
16 9142d362 2008-06-30 rsc if(!isdigit((uchar)*s))
17 9142d362 2008-06-30 rsc goto oops;
18 9142d362 2008-06-30 rsc i = strtol(s, &s, 0);
19 9142d362 2008-06-30 rsc if(*s == 'x'){
20 9142d362 2008-06-30 rsc s++;
21 9142d362 2008-06-30 rsc if(!isdigit((uchar)*s))
22 9142d362 2008-06-30 rsc goto oops;
23 9142d362 2008-06-30 rsc j = strtol(s, &s, 0);
24 9142d362 2008-06-30 rsc r->max.x = i;
25 9142d362 2008-06-30 rsc r->max.y = j;
26 9142d362 2008-06-30 rsc if(*s == 0)
27 9142d362 2008-06-30 rsc return 0;
28 9142d362 2008-06-30 rsc if(*s != '@')
29 9142d362 2008-06-30 rsc goto oops;
30 9142d362 2008-06-30 rsc
31 9142d362 2008-06-30 rsc s++;
32 9142d362 2008-06-30 rsc if(!isdigit((uchar)*s))
33 9142d362 2008-06-30 rsc goto oops;
34 9142d362 2008-06-30 rsc i = strtol(s, &s, 0);
35 9142d362 2008-06-30 rsc if(*s != ',' && *s != ' ')
36 9142d362 2008-06-30 rsc goto oops;
37 9142d362 2008-06-30 rsc s++;
38 9142d362 2008-06-30 rsc if(!isdigit((uchar)*s))
39 9142d362 2008-06-30 rsc goto oops;
40 9142d362 2008-06-30 rsc j = strtol(s, &s, 0);
41 9142d362 2008-06-30 rsc if(*s != 0)
42 9142d362 2008-06-30 rsc goto oops;
43 9142d362 2008-06-30 rsc *r = rectaddpt(*r, Pt(i,j));
44 9142d362 2008-06-30 rsc *havemin = 1;
45 9142d362 2008-06-30 rsc return 0;
46 9142d362 2008-06-30 rsc }
47 9142d362 2008-06-30 rsc
48 9142d362 2008-06-30 rsc c = *s;
49 9142d362 2008-06-30 rsc if(c != ' ' && c != ',')
50 9142d362 2008-06-30 rsc goto oops;
51 9142d362 2008-06-30 rsc s++;
52 9142d362 2008-06-30 rsc if(!isdigit((uchar)*s))
53 9142d362 2008-06-30 rsc goto oops;
54 9142d362 2008-06-30 rsc j = strtol(s, &s, 0);
55 9142d362 2008-06-30 rsc if(*s != c)
56 9142d362 2008-06-30 rsc goto oops;
57 9142d362 2008-06-30 rsc s++;
58 9142d362 2008-06-30 rsc if(!isdigit((uchar)*s))
59 9142d362 2008-06-30 rsc goto oops;
60 9142d362 2008-06-30 rsc k = strtol(s, &s, 0);
61 9142d362 2008-06-30 rsc if(*s != c)
62 9142d362 2008-06-30 rsc goto oops;
63 9142d362 2008-06-30 rsc s++;
64 9142d362 2008-06-30 rsc if(!isdigit((uchar)*s))
65 9142d362 2008-06-30 rsc goto oops;
66 9142d362 2008-06-30 rsc l = strtol(s, &s, 0);
67 9142d362 2008-06-30 rsc if(*s != 0)
68 9142d362 2008-06-30 rsc goto oops;
69 9142d362 2008-06-30 rsc *r = Rect(i,j,k,l);
70 9142d362 2008-06-30 rsc *havemin = 1;
71 9142d362 2008-06-30 rsc return 0;
72 9142d362 2008-06-30 rsc
73 9142d362 2008-06-30 rsc oops:
74 9142d362 2008-06-30 rsc werrstr("bad syntax in window size '%s'", os);
75 9142d362 2008-06-30 rsc return -1;
76 9142d362 2008-06-30 rsc }