home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / games / volume13 / xsokoban3 / part02 / resources.c < prev    next >
C/C++ Source or Header  |  1992-02-11  |  2KB  |  73 lines

  1. #include "externs.h"
  2. #include "globals.h"
  3.  
  4. extern char *progname;
  5. extern XrmDatabase rdb;
  6. extern Display *dpy;
  7. extern Colormap cmap;
  8.  
  9. /* rewritten slightly from the xantfarm code by Jef Poskanzer */
  10.  
  11. /* get a resource from the specified db.  This helps support the -display
  12.  * code, but could be used to get a resource that should only be specified
  13.  * in a given place (ie either only command line, or only Xresource db)
  14.  */
  15. char *GetDatabaseResource(XrmDatabase db, char *res)
  16. {
  17.   char name[500];
  18.   char class[500];
  19.   char *type;
  20.   XrmValue value;
  21.  
  22.   (void)sprintf(name, "%s.%s", progname, res);
  23.   (void)sprintf(class, "%s.%s", CLASSNAME, res);
  24.  
  25.   if(XrmGetResource(db, name, class, &type, &value) == True)
  26.     if(strcmp(type, "String") == 0)
  27.       return (char *)value.addr;
  28.   return (char *)0;
  29. }
  30.  
  31. /* just calls the above routine with the general combined db */
  32. char *GetResource(char *res)
  33. {
  34.   return GetDatabaseResource(rdb, res);
  35. }
  36.  
  37. /* returns the color pixel for the given resource */
  38. Boolean GetColorResource(char *res, unsigned long *cP)
  39. {
  40.   XColor color;
  41.   char *rval = GetResource(res);
  42.  
  43.   if(rval == (char *)0)
  44.     return _false_;
  45.   if(XParseColor(dpy, cmap, rval, &color) != True)
  46.     return _false_;
  47.   if(XAllocColor(dpy, cmap, &color) != True)
  48.     return _false_;
  49.   *cP = color.pixel;
  50.   return _true_;
  51. }
  52.  
  53. char *boolopts[] = {
  54.   "true",
  55.   "True",
  56.   "on",
  57.   "On",
  58.   "yes",
  59.   "Yes",
  60.   "1"
  61. };
  62.  
  63. /* convert a string to the 'boolean' type (I defined my own, thanks) */
  64. Boolean StringToBoolean(char *str)
  65. {
  66.   int nboolopts = sizeof(boolopts)/sizeof(*boolopts), i;
  67.  
  68.   for(i = 0; i < nboolopts; i++)
  69.     if(strcmp(str, boolopts[i]) == 0)
  70.       return _true_;
  71.   return _false_;
  72. }
  73.