fookb: Use libdockapp instead of X resource manager for command line options.
This commit is contained in:
		
							parent
							
								
									0448b4965d
								
							
						
					
					
						commit
						bc767d15bb
					
				
					 8 changed files with 42 additions and 190 deletions
				
			
		| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
bin_PROGRAMS = fookb
 | 
					bin_PROGRAMS = fookb
 | 
				
			||||||
fookb_SOURCES = fookb.c fookb.h globals.c images.c images.h opts.c opts.h \
 | 
					fookb_SOURCES = fookb.c fookb.h images.c images.h opts.h \
 | 
				
			||||||
	params.c params.h sound.c sound.h
 | 
						params.c params.h sound.c sound.h
 | 
				
			||||||
dist_man_MANS = fookb.1x
 | 
					dist_man_MANS = fookb.1x
 | 
				
			||||||
dist_pkgdata_DATA = 1.xpm 2.xpm 3.xpm 4.xpm rus.xpm lat.xpm boom.xpm \
 | 
					dist_pkgdata_DATA = 1.xpm 2.xpm 3.xpm 4.xpm rus.xpm lat.xpm boom.xpm \
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,9 +11,6 @@
 | 
				
			||||||
#include <X11/Xlib.h>
 | 
					#include <X11/Xlib.h>
 | 
				
			||||||
#include <X11/Xutil.h>
 | 
					#include <X11/Xutil.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Command line parsing and X resource manager */
 | 
					 | 
				
			||||||
#include <X11/Xresource.h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* XKB fun */
 | 
					/* XKB fun */
 | 
				
			||||||
#include <X11/XKBlib.h>
 | 
					#include <X11/XKBlib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,6 +22,13 @@
 | 
				
			||||||
#include "sound.h"
 | 
					#include "sound.h"
 | 
				
			||||||
#include "opts.h"
 | 
					#include "opts.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					char *icon1 = NULL;
 | 
				
			||||||
 | 
					char *icon2 = NULL;
 | 
				
			||||||
 | 
					char *icon3 = NULL;
 | 
				
			||||||
 | 
					char *icon4 = NULL;
 | 
				
			||||||
 | 
					char *iconboom = NULL;
 | 
				
			||||||
 | 
					char *display = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define sterror(x) (void)printf("Strange error, please report! %s:%d, %s\n",\
 | 
					#define sterror(x) (void)printf("Strange error, please report! %s:%d, %s\n",\
 | 
				
			||||||
		__FILE__, __LINE__, x)
 | 
							__FILE__, __LINE__, x)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,13 +38,33 @@ int main(int argc, register char *argv[])
 | 
				
			||||||
	int state = 0;		/* We suppose that latin keyboard is the
 | 
						int state = 0;		/* We suppose that latin keyboard is the
 | 
				
			||||||
				   primal state FIXME */
 | 
									   primal state FIXME */
 | 
				
			||||||
	Pixmap pixmap;
 | 
						Pixmap pixmap;
 | 
				
			||||||
 | 
						DAProgramOption options[] = {
 | 
				
			||||||
 | 
							{NULL, "--icon1",
 | 
				
			||||||
 | 
							 "Icon to show for the 1st Xkb group",
 | 
				
			||||||
 | 
							 DOString, False, {&icon1}},
 | 
				
			||||||
 | 
							{NULL, "--icon2",
 | 
				
			||||||
 | 
							 "Icon to show for the 2nd Xkb group",
 | 
				
			||||||
 | 
							 DOString, False, {&icon2}},
 | 
				
			||||||
 | 
							{NULL, "--icon3",
 | 
				
			||||||
 | 
							 "Icon to show for the 3rd Xkb group",
 | 
				
			||||||
 | 
							 DOString, False, {&icon3}},
 | 
				
			||||||
 | 
							{NULL, "--icon4",
 | 
				
			||||||
 | 
							 "Icon to show for the 4th Xkb group",
 | 
				
			||||||
 | 
							 DOString, False, {&icon4}},
 | 
				
			||||||
 | 
							{NULL, "--iconboom",
 | 
				
			||||||
 | 
							 "Icon to show when Xkb system goes crazy",
 | 
				
			||||||
 | 
							 DOString, False, {&iconboom}},
 | 
				
			||||||
 | 
							{"-d", "--display",
 | 
				
			||||||
 | 
							 "X display to use (normally not needed)",
 | 
				
			||||||
 | 
							 DOString, False, {&display}},
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	DAParseArguments(argc, argv, NULL, 0,
 | 
						DAParseArguments(argc, argv, options, 6,
 | 
				
			||||||
			 "XKB state indicator for Window Maker",
 | 
								 "XKB state indicator for Window Maker",
 | 
				
			||||||
			 PACKAGE_STRING);
 | 
								 PACKAGE_STRING);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	DAOpenDisplay(NULL, argc, argv);
 | 
						DAOpenDisplay(display, argc, argv);
 | 
				
			||||||
	read_images(DADisplay);		/* Let's read icon images */
 | 
						read_images(DADisplay);		/* Let's read icon images */
 | 
				
			||||||
	DACreateIcon(PACKAGE_NAME, get_width(), get_height(), argc, argv);
 | 
						DACreateIcon(PACKAGE_NAME, get_width(), get_height(), argc, argv);
 | 
				
			||||||
	XSelectInput(DADisplay, DAWindow, ButtonPressMask);
 | 
						XSelectInput(DADisplay, DAWindow, ButtonPressMask);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,17 +0,0 @@
 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 * File: globals.c
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * (c) 1998-2004 Alexey Vyskubov <alexey@mawhrin.net>
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <X11/Xlib.h>
 | 
					 | 
				
			||||||
#include <X11/Xresource.h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
char mydispname[256];		/* X display name */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
XrmDatabase cmdlineDB;		/* X resource database generated from
 | 
					 | 
				
			||||||
				   command line */
 | 
					 | 
				
			||||||
XrmDatabase finalDB;		/* X resource database generated from
 | 
					 | 
				
			||||||
				   app-defaults and X resource
 | 
					 | 
				
			||||||
				   database */
 | 
					 | 
				
			||||||
							
								
								
									
										104
									
								
								fookb/opts.c
									
									
									
									
									
								
							
							
						
						
									
										104
									
								
								fookb/opts.c
									
									
									
									
									
								
							| 
						 | 
					@ -1,104 +0,0 @@
 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 * File: opts.c
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * (c) 1998-2004 Alexey Vyskubov <alexey@mawhrin.net>
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <stdio.h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <string.h>
 | 
					 | 
				
			||||||
#include <stdlib.h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <X11/Xlib.h>		/* X Window standard header */
 | 
					 | 
				
			||||||
#include <X11/Xresource.h>	/* X resource manager stuff */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "fookb.h"
 | 
					 | 
				
			||||||
#include "opts.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static int tblentr = 6;		/* There are 6 recognized
 | 
					 | 
				
			||||||
				   options */
 | 
					 | 
				
			||||||
static XrmOptionDescRec tbl[] = {
 | 
					 | 
				
			||||||
	{"-icon1", ".icon1",
 | 
					 | 
				
			||||||
	 XrmoptionSepArg,
 | 
					 | 
				
			||||||
	 (XPointer) NULL},
 | 
					 | 
				
			||||||
	{"-icon2", ".icon2",
 | 
					 | 
				
			||||||
	 XrmoptionSepArg,
 | 
					 | 
				
			||||||
	 (XPointer) NULL},
 | 
					 | 
				
			||||||
	{"-icon3", ".icon3",
 | 
					 | 
				
			||||||
	 XrmoptionSepArg,
 | 
					 | 
				
			||||||
	 (XPointer) NULL},
 | 
					 | 
				
			||||||
	{"-icon4", ".icon4",
 | 
					 | 
				
			||||||
	 XrmoptionSepArg,
 | 
					 | 
				
			||||||
	 (XPointer) NULL},
 | 
					 | 
				
			||||||
	{"-iconboom", ".iconBoom",
 | 
					 | 
				
			||||||
	 XrmoptionSepArg,
 | 
					 | 
				
			||||||
	 (XPointer) NULL},
 | 
					 | 
				
			||||||
	{"-display", ".display",
 | 
					 | 
				
			||||||
	 XrmoptionSepArg,
 | 
					 | 
				
			||||||
	 (XPointer) NULL}
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void ParseOptions(int *argc, register char *argv[])
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	XrmValue value;
 | 
					 | 
				
			||||||
	char *str_type[20];
 | 
					 | 
				
			||||||
	mydispname[0] = '\0';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	XrmParseCommand(&cmdlineDB, tbl, tblentr, "fookb", argc, argv);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef DEBUG
 | 
					 | 
				
			||||||
	puts("Hereiam");
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (1 != *argc) {
 | 
					 | 
				
			||||||
		puts("Fookb v 3.0");
 | 
					 | 
				
			||||||
		puts("\tUsage: fookb [options]");
 | 
					 | 
				
			||||||
		puts("Possible options:");
 | 
					 | 
				
			||||||
		puts("-icon1 xpm_file\t\tIcon to show for the 1st Xkb group");
 | 
					 | 
				
			||||||
		puts("-icon2 xpm_file\t\tIcon to show for the 2nd Xkb group");
 | 
					 | 
				
			||||||
		puts("-icon3 xpm_file\t\tIcon to show for the 3rd Xkb group");
 | 
					 | 
				
			||||||
		puts("-icon4 xpm_file\t\tIcon to show for the 4th Xkb group");
 | 
					 | 
				
			||||||
		puts("-iconboom xpm_file\tIcon to show when Xkb system goes crazy");
 | 
					 | 
				
			||||||
		puts("-display X_display\tX display to use (normally not needed)");
 | 
					 | 
				
			||||||
		puts("");
 | 
					 | 
				
			||||||
		puts("Command line parameters takes precedence over X resources or configuration file!");
 | 
					 | 
				
			||||||
		printf("Configuration file location: ");
 | 
					 | 
				
			||||||
#ifdef WMAKER
 | 
					 | 
				
			||||||
		puts("~/GNUstep/Defaults/FOOkb");
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
		puts("~/.fookb");
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
		exit(0);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* We should get display now -- we need it for access to other
 | 
					 | 
				
			||||||
	   databases */
 | 
					 | 
				
			||||||
	if (XrmGetResource(cmdlineDB, "fookb.display", "Fookb.Display",
 | 
					 | 
				
			||||||
			   str_type, &value) == True) {
 | 
					 | 
				
			||||||
		(void) strncpy(mydispname, value.addr, (size_t)value.size);
 | 
					 | 
				
			||||||
#ifdef DEBUG
 | 
					 | 
				
			||||||
		puts(mydispname);
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void MoreOptions(Display *dpy)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	XrmDatabase servDB, appDB;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	appDB = XrmGetFileDatabase
 | 
					 | 
				
			||||||
		("/usr/X11R6/lib/X11/app-defaults/Fookb");
 | 
					 | 
				
			||||||
	(void) XrmMergeDatabases(appDB, &finalDB);	/* Fookb defaults file
 | 
					 | 
				
			||||||
							   added into final
 | 
					 | 
				
			||||||
							   database */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* Let's look: does xrdb load server defautls? (As a property of
 | 
					 | 
				
			||||||
	   root window.) */
 | 
					 | 
				
			||||||
	if (XResourceManagerString(dpy) != NULL) {
 | 
					 | 
				
			||||||
		servDB = XrmGetStringDatabase(XResourceManagerString(dpy));
 | 
					 | 
				
			||||||
		XrmMergeDatabases(servDB, &finalDB);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										21
									
								
								fookb/opts.h
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								fookb/opts.h
									
									
									
									
									
								
							| 
						 | 
					@ -8,25 +8,6 @@
 | 
				
			||||||
#ifndef OPTS_H
 | 
					#ifndef OPTS_H
 | 
				
			||||||
#define OPTS_H
 | 
					#define OPTS_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* X Window resource management */
 | 
					extern char *icon1, *icon2, *icon3, *icon4, *iconboom, *display;
 | 
				
			||||||
#include <X11/Xlib.h>
 | 
					 | 
				
			||||||
#include <X11/Xresource.h>
 | 
					 | 
				
			||||||
extern XrmDatabase cmdlineDB;	/* Database for resources from command
 | 
					 | 
				
			||||||
				   line */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
extern XrmDatabase finalDB;	/* Database for resources from other
 | 
					 | 
				
			||||||
				   sources -- app-defaults and X
 | 
					 | 
				
			||||||
				   Window resources */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void ParseOptions(int *argc, register char *argv[]);	/* Parse
 | 
					 | 
				
			||||||
							   command
 | 
					 | 
				
			||||||
							   line
 | 
					 | 
				
			||||||
							   options */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void MoreOptions(Display *dpy);		/* Parse
 | 
					 | 
				
			||||||
				   app-defaults
 | 
					 | 
				
			||||||
				   and X
 | 
					 | 
				
			||||||
				   resources
 | 
					 | 
				
			||||||
				   database */
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif				/* OPTS_H */
 | 
					#endif				/* OPTS_H */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,6 +2,7 @@
 | 
				
			||||||
#include <string.h>		/* strlen & strcat */
 | 
					#include <string.h>		/* strlen & strcat */
 | 
				
			||||||
#include <ctype.h>		/* toupper */
 | 
					#include <ctype.h>		/* toupper */
 | 
				
			||||||
#include <stdlib.h>
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					#include <WINGs/WUtil.h>
 | 
				
			||||||
#include "params.h"
 | 
					#include "params.h"
 | 
				
			||||||
#include "opts.h"
 | 
					#include "opts.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,46 +11,24 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
char *read_param(char *string)
 | 
					char *read_param(char *string)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	XrmValue xvalue;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	WMPropList *pl;
 | 
						WMPropList *pl;
 | 
				
			||||||
	WMPropList *value;
 | 
						WMPropList *value;
 | 
				
			||||||
	WMPropList *tmp;
 | 
						WMPropList *tmp;
 | 
				
			||||||
	char *path;
 | 
						char *path;
 | 
				
			||||||
	char *newstring;
 | 
					 | 
				
			||||||
	char *newString;
 | 
					 | 
				
			||||||
	char *result;
 | 
						char *result;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Let's make lint happy */
 | 
					 | 
				
			||||||
	xvalue.size = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	newstring = wstrconcat("fookb.", string);
 | 
					 | 
				
			||||||
	newString = wstrconcat("Fookb.", string);
 | 
					 | 
				
			||||||
	newstring[6] = tolower((unsigned char)newstring[6]);
 | 
					 | 
				
			||||||
	newString[6] = toupper((unsigned char)newString[6]);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* Command line parameters take precedence over all */
 | 
					/* Command line parameters take precedence over all */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (XrmGetResource(cmdlineDB,
 | 
						if (!strcmp(string, "Icon1") && icon1)
 | 
				
			||||||
				newstring,
 | 
							return icon1;
 | 
				
			||||||
				newString,
 | 
						if (!strcmp(string, "Icon2") && icon2)
 | 
				
			||||||
				str_type,
 | 
							return icon2;
 | 
				
			||||||
				&xvalue) == True) {
 | 
						if (!strcmp(string, "Icon3") && icon3)
 | 
				
			||||||
		result = (char *) malloc(xvalue.size + 1);
 | 
							return icon3;
 | 
				
			||||||
		if (NULL == result) {
 | 
						if (!strcmp(string, "Icon4") && icon4)
 | 
				
			||||||
			lputs("Not enough memory");
 | 
							return icon4;
 | 
				
			||||||
			exit(EXIT_FAILURE);
 | 
						if (!strcmp(string, "IconBoom") && iconboom)
 | 
				
			||||||
		}
 | 
							return iconboom;
 | 
				
			||||||
		strncpy(result, xvalue.addr, (size_t)xvalue.size);
 | 
					 | 
				
			||||||
		result[(int) xvalue.size + 1] = '\0';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		wfree(newstring);
 | 
					 | 
				
			||||||
		wfree(newString);
 | 
					 | 
				
			||||||
		return result;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	wfree(newstring);
 | 
					 | 
				
			||||||
	wfree(newString);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/*
 | 
						/*
 | 
				
			||||||
	 * Here we start the game with property lists.
 | 
						 * Here we start the game with property lists.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,6 @@
 | 
				
			||||||
#ifndef PARAMS_H
 | 
					#ifndef PARAMS_H
 | 
				
			||||||
#define PARAMS_H
 | 
					#define PARAMS_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <WINGs/WUtil.h>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef WMAKER
 | 
					#ifdef WMAKER
 | 
				
			||||||
#define DEFAULTS_FILE "~/GNUstep/Defaults/FOOkb"
 | 
					#define DEFAULTS_FILE "~/GNUstep/Defaults/FOOkb"
 | 
				
			||||||
| 
						 | 
					@ -16,9 +15,6 @@
 | 
				
			||||||
#define DEFAULTS_FILE "~/.fookb"
 | 
					#define DEFAULTS_FILE "~/.fookb"
 | 
				
			||||||
#endif				/* WMAKER */
 | 
					#endif				/* WMAKER */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <X11/Xlib.h>		/* X Window standard header */
 | 
					 | 
				
			||||||
#include <X11/Xresource.h>	/* X resource manager stuff */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
char *read_param(char *);
 | 
					char *read_param(char *);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif				/* PARAMS_H */
 | 
					#endif				/* PARAMS_H */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +0,0 @@
 | 
				
			||||||
extern XrmDatabase cmdlineDB;	/* Database for resources from command
 | 
					 | 
				
			||||||
				   line */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
extern XrmDatabase finalDB;	/* Database for resources from other
 | 
					 | 
				
			||||||
				   sources -- app-defaults and X
 | 
					 | 
				
			||||||
				   Window resources */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		Loading…
	
		Reference in a new issue