Blob


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