|
|
1.1 ! root 1: #include <X/mit-copyright.h> ! 2: ! 3: /* Copyright Massachusetts Institute of Technology 1985 */ ! 4: /* $Header: XParseGeom.c,v 10.9 86/02/01 15:37:45 tony Rel $ */ ! 5: #include "XlibInternal.h" ! 6: ! 7: /* ! 8: *Returns pointer to first char ins search which is also in what, else NULL. ! 9: */ ! 10: static char *strscan (search, what) ! 11: char *search, *what; ! 12: { ! 13: int i, len = strlen (what); ! 14: char c; ! 15: ! 16: while ((c = *(search++)) != NULL) ! 17: for (i = 0; i < len; i++) ! 18: if (c == what [i]) return (--search); ! 19: return (NULL); ! 20: } ! 21: ! 22: /* ! 23: * XParseGeometry parses strings of the form ! 24: * "=<width>x<height>{+-}<xoffset>{+-}<yoffset>", where ! 25: * width, height, xoffset, and yoffset are unsigned integers. ! 26: * Example: "=80x24+300-49" ! 27: * The equal sign is optional. ! 28: * It returns a bitmask that indicates which of the four values ! 29: * were actually found in the string. For each value found, ! 30: * the corresponding argument is updated; for each value ! 31: * not found, the corresponding argument is left unchanged. ! 32: */ ! 33: ! 34: int XParseGeometry (string, x, y, width, height) ! 35: char *string; ! 36: int *x, *y, *width, *height; /* RETURN */ ! 37: { ! 38: int mask = NoValue; ! 39: char *strind; ! 40: char *index(); ! 41: ! 42: if ( (string == NULL) || (*string == '\0')) return(mask); ! 43: if (*string == '=') ! 44: string++; /* ignore possible '=' at beginning of geometry spec */ ! 45: ! 46: strind = string; ! 47: if (*strind != '+' && *strind != '-' && *strind != 'x') { ! 48: *width = atoi (strind); ! 49: mask |= WidthValue; ! 50: } ! 51: ! 52: if (strind = index (string, 'x')) { ! 53: *height = atoi (++strind); ! 54: mask |= HeightValue; ! 55: } ! 56: else strind = string; ! 57: ! 58: if (strind = strscan (strind, "+-")) { ! 59: if (*strind == '-') mask |= XNegative; ! 60: *x = atoi (strind++); ! 61: mask |= XValue; ! 62: if (strind = strscan (strind, "+-")) { ! 63: if (*strind == '-') mask |= YNegative; ! 64: *y = atoi (strind); ! 65: mask |= YValue; ! 66: } ! 67: } ! 68: return (mask); ! 69: } ! 70:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.