wmgeneral: Merge 2003-10-10 version from wmmon and wmtime.
Note that this was a fork of the earlier 1998-05-02 version and didn't contain the later changes. Therefore we merge the best of both versions. wmtime had some additional unnecessary dummy variables, so we use the wmmon version.
This commit is contained in:
parent
a680f87666
commit
6dc4716c29
|
@ -11,7 +11,9 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
CHANGES:
|
CHANGES:
|
||||||
---
|
---
|
||||||
|
10/10/2003 (Simon Law, sfllaw@debian.org)
|
||||||
|
* changed the parse_rcfile function to use getline instead of fgets.
|
||||||
14/09/1998 (Dave Clark, clarkd@skyia.com)
|
14/09/1998 (Dave Clark, clarkd@skyia.com)
|
||||||
* Updated createXBMfromXPM routine
|
* Updated createXBMfromXPM routine
|
||||||
* Now supports >256 colors
|
* Now supports >256 colors
|
||||||
|
@ -134,7 +136,8 @@ void parse_rcfile(const char *filename, rckeys *keys) {
|
||||||
void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
||||||
|
|
||||||
char *p;
|
char *p;
|
||||||
char temp[128];
|
char *line = NULL;
|
||||||
|
size_t line_size = 0;
|
||||||
char *tokens = " :\t\n";
|
char *tokens = " :\t\n";
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
int i,key;
|
int i,key;
|
||||||
|
@ -142,10 +145,10 @@ void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
||||||
|
|
||||||
fp = fopen(filename, "r");
|
fp = fopen(filename, "r");
|
||||||
if (fp) {
|
if (fp) {
|
||||||
while (fgets(temp, 128, fp)) {
|
while (getline(&line, &line_size, fp) >= 0) {
|
||||||
key = 0;
|
key = 0;
|
||||||
while (key >= 0 && keys[key].label) {
|
while (key >= 0 && keys[key].label) {
|
||||||
if ((p = strstr(temp, keys[key].label))) {
|
if ((p = strstr(line, keys[key].label))) {
|
||||||
p += strlen(keys[key].label);
|
p += strlen(keys[key].label);
|
||||||
p += strspn(p, tokens);
|
p += strspn(p, tokens);
|
||||||
if ((i = strcspn(p, "#\n"))) p[i] = 0;
|
if ((i = strcspn(p, "#\n"))) p[i] = 0;
|
||||||
|
@ -383,14 +386,10 @@ void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bit
|
||||||
int i, wx, wy;
|
int i, wx, wy;
|
||||||
|
|
||||||
for (i=1; argv[i]; i++) {
|
for (i=1; argv[i]; i++) {
|
||||||
if (!strcmp(argv[i], "-display")) {
|
if (!strcmp(argv[i], "-display"))
|
||||||
display_name = argv[i+1];
|
display_name = argv[++i];
|
||||||
i++;
|
else if (!strcmp(argv[i], "-geometry"))
|
||||||
}
|
geometry = argv[++i];
|
||||||
if (!strcmp(argv[i], "-geometry")) {
|
|
||||||
geometry = argv[i+1];
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(display = XOpenDisplay(display_name))) {
|
if (!(display = XOpenDisplay(display_name))) {
|
||||||
|
@ -416,6 +415,9 @@ void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bit
|
||||||
|
|
||||||
XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
|
XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
|
||||||
&mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy);
|
&mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy);
|
||||||
|
if (geometry)
|
||||||
|
XParseGeometry(geometry, &mysizehints.x, &mysizehints.y,
|
||||||
|
(unsigned int *) &mysizehints.width, (unsigned int *) &mysizehints.height);
|
||||||
|
|
||||||
mysizehints.width = 64;
|
mysizehints.width = 64;
|
||||||
mysizehints.height = 64;
|
mysizehints.height = 64;
|
||||||
|
|
|
@ -11,7 +11,9 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
CHANGES:
|
CHANGES:
|
||||||
---
|
---
|
||||||
|
10/10/2003 (Simon Law, sfllaw@debian.org)
|
||||||
|
* changed the parse_rcfile function to use getline instead of fgets.
|
||||||
14/09/1998 (Dave Clark, clarkd@skyia.com)
|
14/09/1998 (Dave Clark, clarkd@skyia.com)
|
||||||
* Updated createXBMfromXPM routine
|
* Updated createXBMfromXPM routine
|
||||||
* Now supports >256 colors
|
* Now supports >256 colors
|
||||||
|
@ -134,7 +136,8 @@ void parse_rcfile(const char *filename, rckeys *keys) {
|
||||||
void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
||||||
|
|
||||||
char *p;
|
char *p;
|
||||||
char temp[128];
|
char *line = NULL;
|
||||||
|
size_t line_size = 0;
|
||||||
char *tokens = " :\t\n";
|
char *tokens = " :\t\n";
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
int i,key;
|
int i,key;
|
||||||
|
@ -142,10 +145,10 @@ void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
||||||
|
|
||||||
fp = fopen(filename, "r");
|
fp = fopen(filename, "r");
|
||||||
if (fp) {
|
if (fp) {
|
||||||
while (fgets(temp, 128, fp)) {
|
while (getline(&line, &line_size, fp) >= 0) {
|
||||||
key = 0;
|
key = 0;
|
||||||
while (key >= 0 && keys[key].label) {
|
while (key >= 0 && keys[key].label) {
|
||||||
if ((p = strstr(temp, keys[key].label))) {
|
if ((p = strstr(line, keys[key].label))) {
|
||||||
p += strlen(keys[key].label);
|
p += strlen(keys[key].label);
|
||||||
p += strspn(p, tokens);
|
p += strspn(p, tokens);
|
||||||
if ((i = strcspn(p, "#\n"))) p[i] = 0;
|
if ((i = strcspn(p, "#\n"))) p[i] = 0;
|
||||||
|
@ -383,14 +386,10 @@ void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bit
|
||||||
int i, wx, wy;
|
int i, wx, wy;
|
||||||
|
|
||||||
for (i=1; argv[i]; i++) {
|
for (i=1; argv[i]; i++) {
|
||||||
if (!strcmp(argv[i], "-display")) {
|
if (!strcmp(argv[i], "-display"))
|
||||||
display_name = argv[i+1];
|
display_name = argv[++i];
|
||||||
i++;
|
else if (!strcmp(argv[i], "-geometry"))
|
||||||
}
|
geometry = argv[++i];
|
||||||
if (!strcmp(argv[i], "-geometry")) {
|
|
||||||
geometry = argv[i+1];
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(display = XOpenDisplay(display_name))) {
|
if (!(display = XOpenDisplay(display_name))) {
|
||||||
|
@ -416,6 +415,9 @@ void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bit
|
||||||
|
|
||||||
XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
|
XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
|
||||||
&mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy);
|
&mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy);
|
||||||
|
if (geometry)
|
||||||
|
XParseGeometry(geometry, &mysizehints.x, &mysizehints.y,
|
||||||
|
(unsigned int *) &mysizehints.width, (unsigned int *) &mysizehints.height);
|
||||||
|
|
||||||
mysizehints.width = 64;
|
mysizehints.width = 64;
|
||||||
mysizehints.height = 64;
|
mysizehints.height = 64;
|
||||||
|
|
|
@ -11,7 +11,9 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
CHANGES:
|
CHANGES:
|
||||||
---
|
---
|
||||||
|
10/10/2003 (Simon Law, sfllaw@debian.org)
|
||||||
|
* changed the parse_rcfile function to use getline instead of fgets.
|
||||||
14/09/1998 (Dave Clark, clarkd@skyia.com)
|
14/09/1998 (Dave Clark, clarkd@skyia.com)
|
||||||
* Updated createXBMfromXPM routine
|
* Updated createXBMfromXPM routine
|
||||||
* Now supports >256 colors
|
* Now supports >256 colors
|
||||||
|
@ -134,7 +136,8 @@ void parse_rcfile(const char *filename, rckeys *keys) {
|
||||||
void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
||||||
|
|
||||||
char *p;
|
char *p;
|
||||||
char temp[128];
|
char *line = NULL;
|
||||||
|
size_t line_size = 0;
|
||||||
char *tokens = " :\t\n";
|
char *tokens = " :\t\n";
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
int i,key;
|
int i,key;
|
||||||
|
@ -142,10 +145,10 @@ void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
||||||
|
|
||||||
fp = fopen(filename, "r");
|
fp = fopen(filename, "r");
|
||||||
if (fp) {
|
if (fp) {
|
||||||
while (fgets(temp, 128, fp)) {
|
while (getline(&line, &line_size, fp) >= 0) {
|
||||||
key = 0;
|
key = 0;
|
||||||
while (key >= 0 && keys[key].label) {
|
while (key >= 0 && keys[key].label) {
|
||||||
if ((p = strstr(temp, keys[key].label))) {
|
if ((p = strstr(line, keys[key].label))) {
|
||||||
p += strlen(keys[key].label);
|
p += strlen(keys[key].label);
|
||||||
p += strspn(p, tokens);
|
p += strspn(p, tokens);
|
||||||
if ((i = strcspn(p, "#\n"))) p[i] = 0;
|
if ((i = strcspn(p, "#\n"))) p[i] = 0;
|
||||||
|
@ -383,14 +386,10 @@ void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bit
|
||||||
int i, wx, wy;
|
int i, wx, wy;
|
||||||
|
|
||||||
for (i=1; argv[i]; i++) {
|
for (i=1; argv[i]; i++) {
|
||||||
if (!strcmp(argv[i], "-display")) {
|
if (!strcmp(argv[i], "-display"))
|
||||||
display_name = argv[i+1];
|
display_name = argv[++i];
|
||||||
i++;
|
else if (!strcmp(argv[i], "-geometry"))
|
||||||
}
|
geometry = argv[++i];
|
||||||
if (!strcmp(argv[i], "-geometry")) {
|
|
||||||
geometry = argv[i+1];
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(display = XOpenDisplay(display_name))) {
|
if (!(display = XOpenDisplay(display_name))) {
|
||||||
|
@ -416,6 +415,9 @@ void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bit
|
||||||
|
|
||||||
XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
|
XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
|
||||||
&mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy);
|
&mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy);
|
||||||
|
if (geometry)
|
||||||
|
XParseGeometry(geometry, &mysizehints.x, &mysizehints.y,
|
||||||
|
(unsigned int *) &mysizehints.width, (unsigned int *) &mysizehints.height);
|
||||||
|
|
||||||
mysizehints.width = 64;
|
mysizehints.width = 64;
|
||||||
mysizehints.height = 64;
|
mysizehints.height = 64;
|
||||||
|
|
|
@ -11,7 +11,9 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
CHANGES:
|
CHANGES:
|
||||||
---
|
---
|
||||||
|
10/10/2003 (Simon Law, sfllaw@debian.org)
|
||||||
|
* changed the parse_rcfile function to use getline instead of fgets.
|
||||||
14/09/1998 (Dave Clark, clarkd@skyia.com)
|
14/09/1998 (Dave Clark, clarkd@skyia.com)
|
||||||
* Updated createXBMfromXPM routine
|
* Updated createXBMfromXPM routine
|
||||||
* Now supports >256 colors
|
* Now supports >256 colors
|
||||||
|
@ -134,7 +136,8 @@ void parse_rcfile(const char *filename, rckeys *keys) {
|
||||||
void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
||||||
|
|
||||||
char *p;
|
char *p;
|
||||||
char temp[128];
|
char *line = NULL;
|
||||||
|
size_t line_size = 0;
|
||||||
char *tokens = " :\t\n";
|
char *tokens = " :\t\n";
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
int i,key;
|
int i,key;
|
||||||
|
@ -142,10 +145,10 @@ void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
||||||
|
|
||||||
fp = fopen(filename, "r");
|
fp = fopen(filename, "r");
|
||||||
if (fp) {
|
if (fp) {
|
||||||
while (fgets(temp, 128, fp)) {
|
while (getline(&line, &line_size, fp) >= 0) {
|
||||||
key = 0;
|
key = 0;
|
||||||
while (key >= 0 && keys[key].label) {
|
while (key >= 0 && keys[key].label) {
|
||||||
if ((p = strstr(temp, keys[key].label))) {
|
if ((p = strstr(line, keys[key].label))) {
|
||||||
p += strlen(keys[key].label);
|
p += strlen(keys[key].label);
|
||||||
p += strspn(p, tokens);
|
p += strspn(p, tokens);
|
||||||
if ((i = strcspn(p, "#\n"))) p[i] = 0;
|
if ((i = strcspn(p, "#\n"))) p[i] = 0;
|
||||||
|
@ -383,14 +386,10 @@ void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bit
|
||||||
int i, wx, wy;
|
int i, wx, wy;
|
||||||
|
|
||||||
for (i=1; argv[i]; i++) {
|
for (i=1; argv[i]; i++) {
|
||||||
if (!strcmp(argv[i], "-display")) {
|
if (!strcmp(argv[i], "-display"))
|
||||||
display_name = argv[i+1];
|
display_name = argv[++i];
|
||||||
i++;
|
else if (!strcmp(argv[i], "-geometry"))
|
||||||
}
|
geometry = argv[++i];
|
||||||
if (!strcmp(argv[i], "-geometry")) {
|
|
||||||
geometry = argv[i+1];
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(display = XOpenDisplay(display_name))) {
|
if (!(display = XOpenDisplay(display_name))) {
|
||||||
|
@ -416,6 +415,9 @@ void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bit
|
||||||
|
|
||||||
XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
|
XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
|
||||||
&mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy);
|
&mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy);
|
||||||
|
if (geometry)
|
||||||
|
XParseGeometry(geometry, &mysizehints.x, &mysizehints.y,
|
||||||
|
(unsigned int *) &mysizehints.width, (unsigned int *) &mysizehints.height);
|
||||||
|
|
||||||
mysizehints.width = 64;
|
mysizehints.width = 64;
|
||||||
mysizehints.height = 64;
|
mysizehints.height = 64;
|
||||||
|
|
|
@ -11,7 +11,9 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
CHANGES:
|
CHANGES:
|
||||||
---
|
---
|
||||||
|
10/10/2003 (Simon Law, sfllaw@debian.org)
|
||||||
|
* changed the parse_rcfile function to use getline instead of fgets.
|
||||||
14/09/1998 (Dave Clark, clarkd@skyia.com)
|
14/09/1998 (Dave Clark, clarkd@skyia.com)
|
||||||
* Updated createXBMfromXPM routine
|
* Updated createXBMfromXPM routine
|
||||||
* Now supports >256 colors
|
* Now supports >256 colors
|
||||||
|
@ -134,7 +136,8 @@ void parse_rcfile(const char *filename, rckeys *keys) {
|
||||||
void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
||||||
|
|
||||||
char *p;
|
char *p;
|
||||||
char temp[128];
|
char *line = NULL;
|
||||||
|
size_t line_size = 0;
|
||||||
char *tokens = " :\t\n";
|
char *tokens = " :\t\n";
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
int i,key;
|
int i,key;
|
||||||
|
@ -142,10 +145,10 @@ void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
||||||
|
|
||||||
fp = fopen(filename, "r");
|
fp = fopen(filename, "r");
|
||||||
if (fp) {
|
if (fp) {
|
||||||
while (fgets(temp, 128, fp)) {
|
while (getline(&line, &line_size, fp) >= 0) {
|
||||||
key = 0;
|
key = 0;
|
||||||
while (key >= 0 && keys[key].label) {
|
while (key >= 0 && keys[key].label) {
|
||||||
if ((p = strstr(temp, keys[key].label))) {
|
if ((p = strstr(line, keys[key].label))) {
|
||||||
p += strlen(keys[key].label);
|
p += strlen(keys[key].label);
|
||||||
p += strspn(p, tokens);
|
p += strspn(p, tokens);
|
||||||
if ((i = strcspn(p, "#\n"))) p[i] = 0;
|
if ((i = strcspn(p, "#\n"))) p[i] = 0;
|
||||||
|
@ -383,14 +386,10 @@ void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bit
|
||||||
int i, wx, wy;
|
int i, wx, wy;
|
||||||
|
|
||||||
for (i=1; argv[i]; i++) {
|
for (i=1; argv[i]; i++) {
|
||||||
if (!strcmp(argv[i], "-display")) {
|
if (!strcmp(argv[i], "-display"))
|
||||||
display_name = argv[i+1];
|
display_name = argv[++i];
|
||||||
i++;
|
else if (!strcmp(argv[i], "-geometry"))
|
||||||
}
|
geometry = argv[++i];
|
||||||
if (!strcmp(argv[i], "-geometry")) {
|
|
||||||
geometry = argv[i+1];
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(display = XOpenDisplay(display_name))) {
|
if (!(display = XOpenDisplay(display_name))) {
|
||||||
|
@ -416,6 +415,9 @@ void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bit
|
||||||
|
|
||||||
XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
|
XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
|
||||||
&mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy);
|
&mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy);
|
||||||
|
if (geometry)
|
||||||
|
XParseGeometry(geometry, &mysizehints.x, &mysizehints.y,
|
||||||
|
(unsigned int *) &mysizehints.width, (unsigned int *) &mysizehints.height);
|
||||||
|
|
||||||
mysizehints.width = 64;
|
mysizehints.width = 64;
|
||||||
mysizehints.height = 64;
|
mysizehints.height = 64;
|
||||||
|
|
|
@ -11,7 +11,9 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
CHANGES:
|
CHANGES:
|
||||||
---
|
---
|
||||||
|
10/10/2003 (Simon Law, sfllaw@debian.org)
|
||||||
|
* changed the parse_rcfile function to use getline instead of fgets.
|
||||||
14/09/1998 (Dave Clark, clarkd@skyia.com)
|
14/09/1998 (Dave Clark, clarkd@skyia.com)
|
||||||
* Updated createXBMfromXPM routine
|
* Updated createXBMfromXPM routine
|
||||||
* Now supports >256 colors
|
* Now supports >256 colors
|
||||||
|
@ -134,7 +136,8 @@ void parse_rcfile(const char *filename, rckeys *keys) {
|
||||||
void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
||||||
|
|
||||||
char *p;
|
char *p;
|
||||||
char temp[128];
|
char *line = NULL;
|
||||||
|
size_t line_size = 0;
|
||||||
char *tokens = " :\t\n";
|
char *tokens = " :\t\n";
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
int i,key;
|
int i,key;
|
||||||
|
@ -142,10 +145,10 @@ void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
||||||
|
|
||||||
fp = fopen(filename, "r");
|
fp = fopen(filename, "r");
|
||||||
if (fp) {
|
if (fp) {
|
||||||
while (fgets(temp, 128, fp)) {
|
while (getline(&line, &line_size, fp) >= 0) {
|
||||||
key = 0;
|
key = 0;
|
||||||
while (key >= 0 && keys[key].label) {
|
while (key >= 0 && keys[key].label) {
|
||||||
if ((p = strstr(temp, keys[key].label))) {
|
if ((p = strstr(line, keys[key].label))) {
|
||||||
p += strlen(keys[key].label);
|
p += strlen(keys[key].label);
|
||||||
p += strspn(p, tokens);
|
p += strspn(p, tokens);
|
||||||
if ((i = strcspn(p, "#\n"))) p[i] = 0;
|
if ((i = strcspn(p, "#\n"))) p[i] = 0;
|
||||||
|
@ -383,14 +386,10 @@ void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bit
|
||||||
int i, wx, wy;
|
int i, wx, wy;
|
||||||
|
|
||||||
for (i=1; argv[i]; i++) {
|
for (i=1; argv[i]; i++) {
|
||||||
if (!strcmp(argv[i], "-display")) {
|
if (!strcmp(argv[i], "-display"))
|
||||||
display_name = argv[i+1];
|
display_name = argv[++i];
|
||||||
i++;
|
else if (!strcmp(argv[i], "-geometry"))
|
||||||
}
|
geometry = argv[++i];
|
||||||
if (!strcmp(argv[i], "-geometry")) {
|
|
||||||
geometry = argv[i+1];
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(display = XOpenDisplay(display_name))) {
|
if (!(display = XOpenDisplay(display_name))) {
|
||||||
|
@ -416,6 +415,9 @@ void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bit
|
||||||
|
|
||||||
XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
|
XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
|
||||||
&mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy);
|
&mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy);
|
||||||
|
if (geometry)
|
||||||
|
XParseGeometry(geometry, &mysizehints.x, &mysizehints.y,
|
||||||
|
(unsigned int *) &mysizehints.width, (unsigned int *) &mysizehints.height);
|
||||||
|
|
||||||
mysizehints.width = 64;
|
mysizehints.width = 64;
|
||||||
mysizehints.height = 64;
|
mysizehints.height = 64;
|
||||||
|
|
|
@ -11,7 +11,9 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
CHANGES:
|
CHANGES:
|
||||||
---
|
---
|
||||||
|
10/10/2003 (Simon Law, sfllaw@debian.org)
|
||||||
|
* changed the parse_rcfile function to use getline instead of fgets.
|
||||||
14/09/1998 (Dave Clark, clarkd@skyia.com)
|
14/09/1998 (Dave Clark, clarkd@skyia.com)
|
||||||
* Updated createXBMfromXPM routine
|
* Updated createXBMfromXPM routine
|
||||||
* Now supports >256 colors
|
* Now supports >256 colors
|
||||||
|
@ -134,7 +136,8 @@ void parse_rcfile(const char *filename, rckeys *keys) {
|
||||||
void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
||||||
|
|
||||||
char *p;
|
char *p;
|
||||||
char temp[128];
|
char *line = NULL;
|
||||||
|
size_t line_size = 0;
|
||||||
char *tokens = " :\t\n";
|
char *tokens = " :\t\n";
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
int i,key;
|
int i,key;
|
||||||
|
@ -142,10 +145,10 @@ void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
||||||
|
|
||||||
fp = fopen(filename, "r");
|
fp = fopen(filename, "r");
|
||||||
if (fp) {
|
if (fp) {
|
||||||
while (fgets(temp, 128, fp)) {
|
while (getline(&line, &line_size, fp) >= 0) {
|
||||||
key = 0;
|
key = 0;
|
||||||
while (key >= 0 && keys[key].label) {
|
while (key >= 0 && keys[key].label) {
|
||||||
if ((p = strstr(temp, keys[key].label))) {
|
if ((p = strstr(line, keys[key].label))) {
|
||||||
p += strlen(keys[key].label);
|
p += strlen(keys[key].label);
|
||||||
p += strspn(p, tokens);
|
p += strspn(p, tokens);
|
||||||
if ((i = strcspn(p, "#\n"))) p[i] = 0;
|
if ((i = strcspn(p, "#\n"))) p[i] = 0;
|
||||||
|
@ -383,14 +386,10 @@ void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bit
|
||||||
int i, wx, wy;
|
int i, wx, wy;
|
||||||
|
|
||||||
for (i=1; argv[i]; i++) {
|
for (i=1; argv[i]; i++) {
|
||||||
if (!strcmp(argv[i], "-display")) {
|
if (!strcmp(argv[i], "-display"))
|
||||||
display_name = argv[i+1];
|
display_name = argv[++i];
|
||||||
i++;
|
else if (!strcmp(argv[i], "-geometry"))
|
||||||
}
|
geometry = argv[++i];
|
||||||
if (!strcmp(argv[i], "-geometry")) {
|
|
||||||
geometry = argv[i+1];
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(display = XOpenDisplay(display_name))) {
|
if (!(display = XOpenDisplay(display_name))) {
|
||||||
|
@ -416,6 +415,9 @@ void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bit
|
||||||
|
|
||||||
XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
|
XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
|
||||||
&mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy);
|
&mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy);
|
||||||
|
if (geometry)
|
||||||
|
XParseGeometry(geometry, &mysizehints.x, &mysizehints.y,
|
||||||
|
(unsigned int *) &mysizehints.width, (unsigned int *) &mysizehints.height);
|
||||||
|
|
||||||
mysizehints.width = 64;
|
mysizehints.width = 64;
|
||||||
mysizehints.height = 64;
|
mysizehints.height = 64;
|
||||||
|
|
|
@ -14,8 +14,25 @@
|
||||||
---
|
---
|
||||||
10/10/2003 (Simon Law, sfllaw@debian.org)
|
10/10/2003 (Simon Law, sfllaw@debian.org)
|
||||||
* changed the parse_rcfile function to use getline instead of fgets.
|
* changed the parse_rcfile function to use getline instead of fgets.
|
||||||
|
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)
|
02/05/1998 (Martijn Pieterse, pieterse@xs4all.nl)
|
||||||
* changed the read_rc_file to parse_rcfile, as suggester by Marcelo E. Magallon
|
* changed the read_rc_file to parse_rcfile, as suggested by Marcelo E. Magallon
|
||||||
* debugged the parse_rc file.
|
* debugged the parse_rc file.
|
||||||
30/04/1998 (Martijn Pieterse, pieterse@xs4all.nl)
|
30/04/1998 (Martijn Pieterse, pieterse@xs4all.nl)
|
||||||
* Ripped similar code from all the wm* programs,
|
* Ripped similar code from all the wm* programs,
|
||||||
|
@ -23,7 +40,6 @@
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define _GNU_SOURCE
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -66,7 +82,6 @@ typedef struct {
|
||||||
int right;
|
int right;
|
||||||
} MOUSE_REGION;
|
} MOUSE_REGION;
|
||||||
|
|
||||||
#define MAX_MOUSE_REGION (8)
|
|
||||||
MOUSE_REGION mouse_region[MAX_MOUSE_REGION];
|
MOUSE_REGION mouse_region[MAX_MOUSE_REGION];
|
||||||
|
|
||||||
/***********************/
|
/***********************/
|
||||||
|
@ -80,17 +95,53 @@ void AddMouseRegion(int, int, int, int, int);
|
||||||
int CheckMouseRegion(int, int);
|
int CheckMouseRegion(int, int);
|
||||||
|
|
||||||
/*******************************************************************************\
|
/*******************************************************************************\
|
||||||
|* read_rc_file *|
|
|* parse_rcfile *|
|
||||||
\*******************************************************************************/
|
\*******************************************************************************/
|
||||||
|
|
||||||
void parse_rcfile(const char *filename, rckeys *keys) {
|
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 *p;
|
||||||
char *line = NULL;
|
char *line = NULL;
|
||||||
size_t line_size = 0;
|
size_t line_size = 0;
|
||||||
char *tokens = " :\t\n";
|
char *tokens = " :\t\n";
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
int i,key;
|
int i,key;
|
||||||
|
char *family = NULL;
|
||||||
|
|
||||||
fp = fopen(filename, "r");
|
fp = fopen(filename, "r");
|
||||||
if (fp) {
|
if (fp) {
|
||||||
|
@ -109,6 +160,7 @@ void parse_rcfile(const char *filename, rckeys *keys) {
|
||||||
}
|
}
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
}
|
}
|
||||||
|
free(family);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -236,6 +288,54 @@ int CheckMouseRegion(int x, int y) {
|
||||||
return (i-1);
|
return (i-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************\
|
||||||
|
|* createXBMfromXPM *|
|
||||||
|
\*******************************************************************************/
|
||||||
|
void createXBMfromXPM(char *xbm, char **xpm, int sx, int sy) {
|
||||||
|
|
||||||
|
int i,j,k;
|
||||||
|
int width, height, numcol, depth;
|
||||||
|
int zero=0;
|
||||||
|
unsigned char bwrite;
|
||||||
|
int bcount;
|
||||||
|
int curpixel;
|
||||||
|
|
||||||
|
sscanf(*xpm, "%d %d %d %d", &width, &height, &numcol, &depth);
|
||||||
|
|
||||||
|
|
||||||
|
for (k=0; k!=depth; k++)
|
||||||
|
{
|
||||||
|
zero <<=8;
|
||||||
|
zero |= xpm[1][k];
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i=numcol+1; i < numcol+sy+1; i++) {
|
||||||
|
bcount = 0;
|
||||||
|
bwrite = 0;
|
||||||
|
for (j=0; j<sx*depth; j+=depth) {
|
||||||
|
bwrite >>= 1;
|
||||||
|
|
||||||
|
curpixel=0;
|
||||||
|
for (k=0; k!=depth; k++)
|
||||||
|
{
|
||||||
|
curpixel <<=8;
|
||||||
|
curpixel |= xpm[i][j+k];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( curpixel != zero ) {
|
||||||
|
bwrite += 128;
|
||||||
|
}
|
||||||
|
bcount++;
|
||||||
|
if (bcount == 8) {
|
||||||
|
*xbm = bwrite;
|
||||||
|
xbm++;
|
||||||
|
bcount = 0;
|
||||||
|
bwrite = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*******************************************************************************\
|
/*******************************************************************************\
|
||||||
|* copyXPMArea *|
|
|* copyXPMArea *|
|
||||||
\*******************************************************************************/
|
\*******************************************************************************/
|
||||||
|
@ -274,16 +374,16 @@ void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bit
|
||||||
unsigned int borderwidth = 1;
|
unsigned int borderwidth = 1;
|
||||||
XClassHint classHint;
|
XClassHint classHint;
|
||||||
char *display_name = NULL;
|
char *display_name = NULL;
|
||||||
char *geometry = NULL;
|
|
||||||
char *wname = argv[0];
|
char *wname = argv[0];
|
||||||
XTextProperty name;
|
XTextProperty name;
|
||||||
|
|
||||||
XGCValues gcv;
|
XGCValues gcv;
|
||||||
unsigned long gcm;
|
unsigned long gcm;
|
||||||
|
|
||||||
|
char *geometry = NULL;
|
||||||
|
|
||||||
int dummy=0;
|
int dummy=0;
|
||||||
int i;
|
int i, wx, wy;
|
||||||
|
|
||||||
for (i=1; argv[i]; i++) {
|
for (i=1; argv[i]; i++) {
|
||||||
if (!strcmp(argv[i], "-display"))
|
if (!strcmp(argv[i], "-display"))
|
||||||
|
@ -314,8 +414,7 @@ void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bit
|
||||||
fore_pix = GetColor("black");
|
fore_pix = GetColor("black");
|
||||||
|
|
||||||
XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
|
XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
|
||||||
&mysizehints.x, &mysizehints.y,
|
&mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy);
|
||||||
&mysizehints.width, &mysizehints.height, &dummy);
|
|
||||||
if (geometry)
|
if (geometry)
|
||||||
XParseGeometry(geometry, &mysizehints.x, &mysizehints.y,
|
XParseGeometry(geometry, &mysizehints.x, &mysizehints.y,
|
||||||
(unsigned int *) &mysizehints.width, (unsigned int *) &mysizehints.height);
|
(unsigned int *) &mysizehints.width, (unsigned int *) &mysizehints.height);
|
||||||
|
@ -374,7 +473,11 @@ void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bit
|
||||||
XSetCommand(display, win, argv, argc);
|
XSetCommand(display, win, argv, argc);
|
||||||
XMapWindow(display, win);
|
XMapWindow(display, win);
|
||||||
|
|
||||||
|
if (geometry) {
|
||||||
|
if (sscanf(geometry, "+%d+%d", &wx, &wy) != 2) {
|
||||||
|
fprintf(stderr, "Bad geometry string.\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
XMoveWindow(display, win, wx, wy);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* vim: sw=4 ts=4 columns=82
|
|
||||||
*/
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
/* Defines */
|
/* Defines */
|
||||||
/***********/
|
/***********/
|
||||||
|
|
||||||
#define MAX_MOUSE_REGION (8)
|
#define MAX_MOUSE_REGION (16)
|
||||||
|
|
||||||
/************/
|
/************/
|
||||||
/* Typedefs */
|
/* Typedefs */
|
||||||
|
@ -18,6 +18,14 @@ struct _rckeys {
|
||||||
char **var;
|
char **var;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef struct _rckeys2 rckeys2;
|
||||||
|
|
||||||
|
struct _rckeys2 {
|
||||||
|
const char *family;
|
||||||
|
const char *label;
|
||||||
|
char **var;
|
||||||
|
};
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
Pixmap pixmap;
|
Pixmap pixmap;
|
||||||
Pixmap mask;
|
Pixmap mask;
|
||||||
|
@ -41,6 +49,7 @@ void openXwindow(int argc, char *argv[], char **, char *, int, int);
|
||||||
void RedrawWindow(void);
|
void RedrawWindow(void);
|
||||||
void RedrawWindowXY(int x, int y);
|
void RedrawWindowXY(int x, int y);
|
||||||
|
|
||||||
|
void createXBMfromXPM(char *, char **, int, int);
|
||||||
void copyXPMArea(int, int, int, int, int, int);
|
void copyXPMArea(int, int, int, int, int, int);
|
||||||
void copyXBMArea(int, int, int, int, int, int);
|
void copyXBMArea(int, int, int, int, int, int);
|
||||||
void setMaskXY(int, int);
|
void setMaskXY(int, int);
|
||||||
|
|
|
@ -11,7 +11,9 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
CHANGES:
|
CHANGES:
|
||||||
---
|
---
|
||||||
|
10/10/2003 (Simon Law, sfllaw@debian.org)
|
||||||
|
* changed the parse_rcfile function to use getline instead of fgets.
|
||||||
14/09/1998 (Dave Clark, clarkd@skyia.com)
|
14/09/1998 (Dave Clark, clarkd@skyia.com)
|
||||||
* Updated createXBMfromXPM routine
|
* Updated createXBMfromXPM routine
|
||||||
* Now supports >256 colors
|
* Now supports >256 colors
|
||||||
|
@ -134,7 +136,8 @@ void parse_rcfile(const char *filename, rckeys *keys) {
|
||||||
void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
||||||
|
|
||||||
char *p;
|
char *p;
|
||||||
char temp[128];
|
char *line = NULL;
|
||||||
|
size_t line_size = 0;
|
||||||
char *tokens = " :\t\n";
|
char *tokens = " :\t\n";
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
int i,key;
|
int i,key;
|
||||||
|
@ -142,10 +145,10 @@ void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
||||||
|
|
||||||
fp = fopen(filename, "r");
|
fp = fopen(filename, "r");
|
||||||
if (fp) {
|
if (fp) {
|
||||||
while (fgets(temp, 128, fp)) {
|
while (getline(&line, &line_size, fp) >= 0) {
|
||||||
key = 0;
|
key = 0;
|
||||||
while (key >= 0 && keys[key].label) {
|
while (key >= 0 && keys[key].label) {
|
||||||
if ((p = strstr(temp, keys[key].label))) {
|
if ((p = strstr(line, keys[key].label))) {
|
||||||
p += strlen(keys[key].label);
|
p += strlen(keys[key].label);
|
||||||
p += strspn(p, tokens);
|
p += strspn(p, tokens);
|
||||||
if ((i = strcspn(p, "#\n"))) p[i] = 0;
|
if ((i = strcspn(p, "#\n"))) p[i] = 0;
|
||||||
|
@ -383,14 +386,10 @@ void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bit
|
||||||
int i, wx, wy;
|
int i, wx, wy;
|
||||||
|
|
||||||
for (i=1; argv[i]; i++) {
|
for (i=1; argv[i]; i++) {
|
||||||
if (!strcmp(argv[i], "-display")) {
|
if (!strcmp(argv[i], "-display"))
|
||||||
display_name = argv[i+1];
|
display_name = argv[++i];
|
||||||
i++;
|
else if (!strcmp(argv[i], "-geometry"))
|
||||||
}
|
geometry = argv[++i];
|
||||||
if (!strcmp(argv[i], "-geometry")) {
|
|
||||||
geometry = argv[i+1];
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(display = XOpenDisplay(display_name))) {
|
if (!(display = XOpenDisplay(display_name))) {
|
||||||
|
@ -416,6 +415,9 @@ void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bit
|
||||||
|
|
||||||
XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
|
XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
|
||||||
&mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy);
|
&mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy);
|
||||||
|
if (geometry)
|
||||||
|
XParseGeometry(geometry, &mysizehints.x, &mysizehints.y,
|
||||||
|
(unsigned int *) &mysizehints.width, (unsigned int *) &mysizehints.height);
|
||||||
|
|
||||||
mysizehints.width = 64;
|
mysizehints.width = 64;
|
||||||
mysizehints.height = 64;
|
mysizehints.height = 64;
|
||||||
|
|
|
@ -11,7 +11,9 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
CHANGES:
|
CHANGES:
|
||||||
---
|
---
|
||||||
|
10/10/2003 (Simon Law, sfllaw@debian.org)
|
||||||
|
* changed the parse_rcfile function to use getline instead of fgets.
|
||||||
14/09/1998 (Dave Clark, clarkd@skyia.com)
|
14/09/1998 (Dave Clark, clarkd@skyia.com)
|
||||||
* Updated createXBMfromXPM routine
|
* Updated createXBMfromXPM routine
|
||||||
* Now supports >256 colors
|
* Now supports >256 colors
|
||||||
|
@ -134,7 +136,8 @@ void parse_rcfile(const char *filename, rckeys *keys) {
|
||||||
void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
||||||
|
|
||||||
char *p;
|
char *p;
|
||||||
char temp[128];
|
char *line = NULL;
|
||||||
|
size_t line_size = 0;
|
||||||
char *tokens = " :\t\n";
|
char *tokens = " :\t\n";
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
int i,key;
|
int i,key;
|
||||||
|
@ -142,10 +145,10 @@ void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
||||||
|
|
||||||
fp = fopen(filename, "r");
|
fp = fopen(filename, "r");
|
||||||
if (fp) {
|
if (fp) {
|
||||||
while (fgets(temp, 128, fp)) {
|
while (getline(&line, &line_size, fp) >= 0) {
|
||||||
key = 0;
|
key = 0;
|
||||||
while (key >= 0 && keys[key].label) {
|
while (key >= 0 && keys[key].label) {
|
||||||
if ((p = strstr(temp, keys[key].label))) {
|
if ((p = strstr(line, keys[key].label))) {
|
||||||
p += strlen(keys[key].label);
|
p += strlen(keys[key].label);
|
||||||
p += strspn(p, tokens);
|
p += strspn(p, tokens);
|
||||||
if ((i = strcspn(p, "#\n"))) p[i] = 0;
|
if ((i = strcspn(p, "#\n"))) p[i] = 0;
|
||||||
|
@ -383,14 +386,10 @@ void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bit
|
||||||
int i, wx, wy;
|
int i, wx, wy;
|
||||||
|
|
||||||
for (i=1; argv[i]; i++) {
|
for (i=1; argv[i]; i++) {
|
||||||
if (!strcmp(argv[i], "-display")) {
|
if (!strcmp(argv[i], "-display"))
|
||||||
display_name = argv[i+1];
|
display_name = argv[++i];
|
||||||
i++;
|
else if (!strcmp(argv[i], "-geometry"))
|
||||||
}
|
geometry = argv[++i];
|
||||||
if (!strcmp(argv[i], "-geometry")) {
|
|
||||||
geometry = argv[i+1];
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(display = XOpenDisplay(display_name))) {
|
if (!(display = XOpenDisplay(display_name))) {
|
||||||
|
@ -416,6 +415,9 @@ void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bit
|
||||||
|
|
||||||
XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
|
XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
|
||||||
&mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy);
|
&mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy);
|
||||||
|
if (geometry)
|
||||||
|
XParseGeometry(geometry, &mysizehints.x, &mysizehints.y,
|
||||||
|
(unsigned int *) &mysizehints.width, (unsigned int *) &mysizehints.height);
|
||||||
|
|
||||||
mysizehints.width = 64;
|
mysizehints.width = 64;
|
||||||
mysizehints.height = 64;
|
mysizehints.height = 64;
|
||||||
|
|
|
@ -14,8 +14,25 @@
|
||||||
---
|
---
|
||||||
10/10/2003 (Simon Law, sfllaw@debian.org)
|
10/10/2003 (Simon Law, sfllaw@debian.org)
|
||||||
* changed the parse_rcfile function to use getline instead of fgets.
|
* changed the parse_rcfile function to use getline instead of fgets.
|
||||||
|
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)
|
02/05/1998 (Martijn Pieterse, pieterse@xs4all.nl)
|
||||||
* changed the read_rc_file to parse_rcfile, as suggester by Marcelo E. Magallon
|
* changed the read_rc_file to parse_rcfile, as suggested by Marcelo E. Magallon
|
||||||
* debugged the parse_rc file.
|
* debugged the parse_rc file.
|
||||||
30/04/1998 (Martijn Pieterse, pieterse@xs4all.nl)
|
30/04/1998 (Martijn Pieterse, pieterse@xs4all.nl)
|
||||||
* Ripped similar code from all the wm* programs,
|
* Ripped similar code from all the wm* programs,
|
||||||
|
@ -23,7 +40,6 @@
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define _GNU_SOURCE
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -46,11 +62,6 @@ int screen;
|
||||||
int x_fd;
|
int x_fd;
|
||||||
int d_depth;
|
int d_depth;
|
||||||
XSizeHints mysizehints;
|
XSizeHints mysizehints;
|
||||||
/* Deal with strange X11 function prototyping...
|
|
||||||
* If I don't do this, I will get warnings about the sign
|
|
||||||
* of the width/height variables - which are thrown away anyway. */
|
|
||||||
int dummy_int_width, dummy_int_height;
|
|
||||||
unsigned int uint_width, uint_height;
|
|
||||||
XWMHints mywmhints;
|
XWMHints mywmhints;
|
||||||
Pixel back_pix, fore_pix;
|
Pixel back_pix, fore_pix;
|
||||||
char *Geometry = "";
|
char *Geometry = "";
|
||||||
|
@ -71,7 +82,6 @@ typedef struct {
|
||||||
int right;
|
int right;
|
||||||
} MOUSE_REGION;
|
} MOUSE_REGION;
|
||||||
|
|
||||||
#define MAX_MOUSE_REGION (8)
|
|
||||||
MOUSE_REGION mouse_region[MAX_MOUSE_REGION];
|
MOUSE_REGION mouse_region[MAX_MOUSE_REGION];
|
||||||
|
|
||||||
/***********************/
|
/***********************/
|
||||||
|
@ -85,17 +95,53 @@ void AddMouseRegion(int, int, int, int, int);
|
||||||
int CheckMouseRegion(int, int);
|
int CheckMouseRegion(int, int);
|
||||||
|
|
||||||
/*******************************************************************************\
|
/*******************************************************************************\
|
||||||
|* read_rc_file *|
|
|* parse_rcfile *|
|
||||||
\*******************************************************************************/
|
\*******************************************************************************/
|
||||||
|
|
||||||
void parse_rcfile(const char *filename, rckeys *keys) {
|
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 *p;
|
||||||
char *line = NULL;
|
char *line = NULL;
|
||||||
size_t line_size = 0;
|
size_t line_size = 0;
|
||||||
char *tokens = " :\t\n";
|
char *tokens = " :\t\n";
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
int i,key;
|
int i,key;
|
||||||
|
char *family = NULL;
|
||||||
|
|
||||||
fp = fopen(filename, "r");
|
fp = fopen(filename, "r");
|
||||||
if (fp) {
|
if (fp) {
|
||||||
|
@ -114,6 +160,7 @@ void parse_rcfile(const char *filename, rckeys *keys) {
|
||||||
}
|
}
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
}
|
}
|
||||||
|
free(family);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -241,6 +288,54 @@ int CheckMouseRegion(int x, int y) {
|
||||||
return (i-1);
|
return (i-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************\
|
||||||
|
|* createXBMfromXPM *|
|
||||||
|
\*******************************************************************************/
|
||||||
|
void createXBMfromXPM(char *xbm, char **xpm, int sx, int sy) {
|
||||||
|
|
||||||
|
int i,j,k;
|
||||||
|
int width, height, numcol, depth;
|
||||||
|
int zero=0;
|
||||||
|
unsigned char bwrite;
|
||||||
|
int bcount;
|
||||||
|
int curpixel;
|
||||||
|
|
||||||
|
sscanf(*xpm, "%d %d %d %d", &width, &height, &numcol, &depth);
|
||||||
|
|
||||||
|
|
||||||
|
for (k=0; k!=depth; k++)
|
||||||
|
{
|
||||||
|
zero <<=8;
|
||||||
|
zero |= xpm[1][k];
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i=numcol+1; i < numcol+sy+1; i++) {
|
||||||
|
bcount = 0;
|
||||||
|
bwrite = 0;
|
||||||
|
for (j=0; j<sx*depth; j+=depth) {
|
||||||
|
bwrite >>= 1;
|
||||||
|
|
||||||
|
curpixel=0;
|
||||||
|
for (k=0; k!=depth; k++)
|
||||||
|
{
|
||||||
|
curpixel <<=8;
|
||||||
|
curpixel |= xpm[i][j+k];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( curpixel != zero ) {
|
||||||
|
bwrite += 128;
|
||||||
|
}
|
||||||
|
bcount++;
|
||||||
|
if (bcount == 8) {
|
||||||
|
*xbm = bwrite;
|
||||||
|
xbm++;
|
||||||
|
bcount = 0;
|
||||||
|
bwrite = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*******************************************************************************\
|
/*******************************************************************************\
|
||||||
|* copyXPMArea *|
|
|* copyXPMArea *|
|
||||||
\*******************************************************************************/
|
\*******************************************************************************/
|
||||||
|
@ -279,16 +374,16 @@ void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bit
|
||||||
unsigned int borderwidth = 1;
|
unsigned int borderwidth = 1;
|
||||||
XClassHint classHint;
|
XClassHint classHint;
|
||||||
char *display_name = NULL;
|
char *display_name = NULL;
|
||||||
char *geometry = NULL;
|
|
||||||
char *wname = argv[0];
|
char *wname = argv[0];
|
||||||
XTextProperty name;
|
XTextProperty name;
|
||||||
|
|
||||||
XGCValues gcv;
|
XGCValues gcv;
|
||||||
unsigned long gcm;
|
unsigned long gcm;
|
||||||
|
|
||||||
|
char *geometry = NULL;
|
||||||
|
|
||||||
int dummy=0;
|
int dummy=0;
|
||||||
int i;
|
int i, wx, wy;
|
||||||
|
|
||||||
for (i=1; argv[i]; i++) {
|
for (i=1; argv[i]; i++) {
|
||||||
if (!strcmp(argv[i], "-display"))
|
if (!strcmp(argv[i], "-display"))
|
||||||
|
@ -319,21 +414,19 @@ void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bit
|
||||||
fore_pix = GetColor("black");
|
fore_pix = GetColor("black");
|
||||||
|
|
||||||
XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
|
XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
|
||||||
&mysizehints.x, &mysizehints.y,
|
&mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy);
|
||||||
&dummy_int_width, &dummy_int_height, &dummy);
|
|
||||||
if (geometry)
|
if (geometry)
|
||||||
XParseGeometry(geometry, &mysizehints.x, &mysizehints.y,
|
XParseGeometry(geometry, &mysizehints.x, &mysizehints.y,
|
||||||
&uint_width, &uint_height);
|
(unsigned int *) &mysizehints.width, (unsigned int *) &mysizehints.height);
|
||||||
|
|
||||||
/* Override width/height anyway */
|
mysizehints.width = 64;
|
||||||
uint_width = 64;
|
mysizehints.height = 64;
|
||||||
uint_height = 64;
|
|
||||||
|
|
||||||
win = XCreateSimpleWindow(display, Root, mysizehints.x, mysizehints.y,
|
win = XCreateSimpleWindow(display, Root, mysizehints.x, mysizehints.y,
|
||||||
uint_width, uint_height, borderwidth, fore_pix, back_pix);
|
mysizehints.width, mysizehints.height, borderwidth, fore_pix, back_pix);
|
||||||
|
|
||||||
iconwin = XCreateSimpleWindow(display, win, mysizehints.x, mysizehints.y,
|
iconwin = XCreateSimpleWindow(display, win, mysizehints.x, mysizehints.y,
|
||||||
uint_width, uint_height, borderwidth, fore_pix, back_pix);
|
mysizehints.width, mysizehints.height, borderwidth, fore_pix, back_pix);
|
||||||
|
|
||||||
/* Activate hints */
|
/* Activate hints */
|
||||||
XSetWMNormalHints(display, win, &mysizehints);
|
XSetWMNormalHints(display, win, &mysizehints);
|
||||||
|
@ -380,7 +473,11 @@ void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bit
|
||||||
XSetCommand(display, win, argv, argc);
|
XSetCommand(display, win, argv, argc);
|
||||||
XMapWindow(display, win);
|
XMapWindow(display, win);
|
||||||
|
|
||||||
|
if (geometry) {
|
||||||
|
if (sscanf(geometry, "+%d+%d", &wx, &wy) != 2) {
|
||||||
|
fprintf(stderr, "Bad geometry string.\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
XMoveWindow(display, win, wx, wy);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* vim: ts=4 columns=82
|
|
||||||
*/
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
/* Defines */
|
/* Defines */
|
||||||
/***********/
|
/***********/
|
||||||
|
|
||||||
#define MAX_MOUSE_REGION (8)
|
#define MAX_MOUSE_REGION (16)
|
||||||
|
|
||||||
/************/
|
/************/
|
||||||
/* Typedefs */
|
/* Typedefs */
|
||||||
|
@ -18,6 +18,14 @@ struct _rckeys {
|
||||||
char **var;
|
char **var;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef struct _rckeys2 rckeys2;
|
||||||
|
|
||||||
|
struct _rckeys2 {
|
||||||
|
const char *family;
|
||||||
|
const char *label;
|
||||||
|
char **var;
|
||||||
|
};
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
Pixmap pixmap;
|
Pixmap pixmap;
|
||||||
Pixmap mask;
|
Pixmap mask;
|
||||||
|
@ -41,6 +49,7 @@ void openXwindow(int argc, char *argv[], char **, char *, int, int);
|
||||||
void RedrawWindow(void);
|
void RedrawWindow(void);
|
||||||
void RedrawWindowXY(int x, int y);
|
void RedrawWindowXY(int x, int y);
|
||||||
|
|
||||||
|
void createXBMfromXPM(char *, char **, int, int);
|
||||||
void copyXPMArea(int, int, int, int, int, int);
|
void copyXPMArea(int, int, int, int, int, int);
|
||||||
void copyXBMArea(int, int, int, int, int, int);
|
void copyXBMArea(int, int, int, int, int, int);
|
||||||
void setMaskXY(int, int);
|
void setMaskXY(int, int);
|
||||||
|
|
|
@ -11,7 +11,9 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
CHANGES:
|
CHANGES:
|
||||||
---
|
---
|
||||||
|
10/10/2003 (Simon Law, sfllaw@debian.org)
|
||||||
|
* changed the parse_rcfile function to use getline instead of fgets.
|
||||||
14/09/1998 (Dave Clark, clarkd@skyia.com)
|
14/09/1998 (Dave Clark, clarkd@skyia.com)
|
||||||
* Updated createXBMfromXPM routine
|
* Updated createXBMfromXPM routine
|
||||||
* Now supports >256 colors
|
* Now supports >256 colors
|
||||||
|
@ -134,7 +136,8 @@ void parse_rcfile(const char *filename, rckeys *keys) {
|
||||||
void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
||||||
|
|
||||||
char *p;
|
char *p;
|
||||||
char temp[128];
|
char *line = NULL;
|
||||||
|
size_t line_size = 0;
|
||||||
char *tokens = " :\t\n";
|
char *tokens = " :\t\n";
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
int i,key;
|
int i,key;
|
||||||
|
@ -142,10 +145,10 @@ void parse_rcfile2(const char *filename, rckeys2 *keys) {
|
||||||
|
|
||||||
fp = fopen(filename, "r");
|
fp = fopen(filename, "r");
|
||||||
if (fp) {
|
if (fp) {
|
||||||
while (fgets(temp, 128, fp)) {
|
while (getline(&line, &line_size, fp) >= 0) {
|
||||||
key = 0;
|
key = 0;
|
||||||
while (key >= 0 && keys[key].label) {
|
while (key >= 0 && keys[key].label) {
|
||||||
if ((p = strstr(temp, keys[key].label))) {
|
if ((p = strstr(line, keys[key].label))) {
|
||||||
p += strlen(keys[key].label);
|
p += strlen(keys[key].label);
|
||||||
p += strspn(p, tokens);
|
p += strspn(p, tokens);
|
||||||
if ((i = strcspn(p, "#\n"))) p[i] = 0;
|
if ((i = strcspn(p, "#\n"))) p[i] = 0;
|
||||||
|
@ -383,14 +386,10 @@ void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bit
|
||||||
int i, wx, wy;
|
int i, wx, wy;
|
||||||
|
|
||||||
for (i=1; argv[i]; i++) {
|
for (i=1; argv[i]; i++) {
|
||||||
if (!strcmp(argv[i], "-display")) {
|
if (!strcmp(argv[i], "-display"))
|
||||||
display_name = argv[i+1];
|
display_name = argv[++i];
|
||||||
i++;
|
else if (!strcmp(argv[i], "-geometry"))
|
||||||
}
|
geometry = argv[++i];
|
||||||
if (!strcmp(argv[i], "-geometry")) {
|
|
||||||
geometry = argv[i+1];
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(display = XOpenDisplay(display_name))) {
|
if (!(display = XOpenDisplay(display_name))) {
|
||||||
|
@ -416,6 +415,9 @@ void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bit
|
||||||
|
|
||||||
XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
|
XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
|
||||||
&mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy);
|
&mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy);
|
||||||
|
if (geometry)
|
||||||
|
XParseGeometry(geometry, &mysizehints.x, &mysizehints.y,
|
||||||
|
(unsigned int *) &mysizehints.width, (unsigned int *) &mysizehints.height);
|
||||||
|
|
||||||
mysizehints.width = 64;
|
mysizehints.width = 64;
|
||||||
mysizehints.height = 64;
|
mysizehints.height = 64;
|
||||||
|
|
Loading…
Reference in a new issue