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: }

Defined functions

XParseGeometry defined in line 34; used 2 times
strscan defined in line 10; used 2 times
Last modified: 1986-02-01
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 923
Valid CSS Valid XHTML 1.0 Strict