135 lines
4.4 KiB
C
135 lines
4.4 KiB
C
#include "../config.h"
|
|
|
|
/*
|
|
Best viewed with vim5, using ts=4
|
|
|
|
wmgeneral was taken from wmppp.
|
|
|
|
It has a lot of routines which most of the wm* programs use.
|
|
|
|
------------------------------------------------------------
|
|
|
|
Author: Martijn Pieterse (pieterse@xs4all.nl)
|
|
|
|
---
|
|
CHANGES:
|
|
---
|
|
11/08/2002 (Brad Jorsch, anomie@users.sourceforge.net)
|
|
* Moved all the rc-file related stuff to rcfile.[ch]
|
|
|
|
28/08/2001 (Brad Jorsch, anomie@users.sourceforge.net)
|
|
* Added EnableMouseRegion and DisableMouseRegion
|
|
* Got annoyed with the 81-character lines. Fixed it. If you don't like
|
|
it, find a different copy of wmgeneral.c ;)
|
|
* GraphicsExpose events are enabled here.
|
|
* GetXPM is exported. It optionally takes an XpmColorSymbol array.
|
|
* GetColor is exported.
|
|
|
|
30/09/2000 (Brad Jorsch, anomie@users.sourceforge.net)
|
|
* You know, wmgen.mask sounds like a much nicer place to store the
|
|
mask... why don't we do that?
|
|
|
|
21/09/1999 (Brad Jorsch, anomie@users.sourceforge.net)
|
|
* Changed openXwindow to use only the filename, sans path,
|
|
as the name and class properties of the app.
|
|
|
|
14/09/1998 (Dave Clark, clarkd@skyia.com)
|
|
* Updated createXBMfromXPM routine
|
|
* Now supports >256 colors
|
|
11/09/1998 (Martijn Pieterse, pieterse@xs4all.nl)
|
|
* Removed a bug from parse_rcfile. You could
|
|
not use "start" in a command if a label was
|
|
also start.
|
|
* Changed the needed geometry string.
|
|
We don't use window size, and don't support
|
|
negative positions.
|
|
03/09/1998 (Martijn Pieterse, pieterse@xs4all.nl)
|
|
* Added parse_rcfile2
|
|
02/09/1998 (Martijn Pieterse, pieterse@xs4all.nl)
|
|
* Added -geometry support (untested)
|
|
28/08/1998 (Martijn Pieterse, pieterse@xs4all.nl)
|
|
* Added createXBMfromXPM routine
|
|
* Saves a lot of work with changing xpm's.
|
|
02/05/1998 (Martijn Pieterse, pieterse@xs4all.nl)
|
|
* changed the read_rc_file to parse_rcfile, as suggested by Marcelo E. Magallon
|
|
* debugged the parse_rc file.
|
|
30/04/1998 (Martijn Pieterse, pieterse@xs4all.nl)
|
|
* Ripped similar code from all the wm* programs,
|
|
and put them in a single file.
|
|
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
|
|
#include "rcfile.h"
|
|
|
|
/******************************************************************************\
|
|
|* parse_rcfile *|
|
|
\******************************************************************************/
|
|
|
|
void parse_rcfile(const char *filename, rckeys *keys) {
|
|
|
|
char *p,*q;
|
|
char temp[128];
|
|
char *tokens = " :\t\n";
|
|
FILE *fp;
|
|
int i,key;
|
|
|
|
fp = fopen(filename, "r");
|
|
if (fp) {
|
|
while (fgets(temp, 128, fp)) {
|
|
key = 0;
|
|
q = strdup(temp);
|
|
q = strtok(q, tokens);
|
|
while (key >= 0 && keys[key].label) {
|
|
if ((!strcmp(q, keys[key].label))) {
|
|
p = strstr(temp, keys[key].label);
|
|
p += strlen(keys[key].label);
|
|
p += strspn(p, tokens);
|
|
if ((i = strcspn(p, "#\n"))) p[i] = 0;
|
|
free(*keys[key].var);
|
|
*keys[key].var = strdup(p);
|
|
key = -1;
|
|
} else key++;
|
|
}
|
|
free(q);
|
|
}
|
|
fclose(fp);
|
|
}
|
|
}
|
|
|
|
/******************************************************************************\
|
|
|* parse_rcfile2 *|
|
|
\******************************************************************************/
|
|
|
|
void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
|
|
|
char *p;
|
|
char temp[128];
|
|
char *tokens = " :\t\n";
|
|
FILE *fp;
|
|
int i,key;
|
|
char *family = NULL;
|
|
|
|
fp = fopen(filename, "r");
|
|
if (fp) {
|
|
while (fgets(temp, 128, fp)) {
|
|
key = 0;
|
|
while (key >= 0 && keys[key].label) {
|
|
if ((p = strstr(temp, keys[key].label))) {
|
|
p += strlen(keys[key].label);
|
|
p += strspn(p, tokens);
|
|
if ((i = strcspn(p, "#\n"))) p[i] = 0;
|
|
free(*keys[key].var);
|
|
*keys[key].var = strdup(p);
|
|
key = -1;
|
|
} else key++;
|
|
}
|
|
}
|
|
fclose(fp);
|
|
}
|
|
free(family);
|
|
}
|