wmdonkeymon: Remove unused wmgeneral files list.* and misc.*.
Still using wmdonkeymon's version of wmgeneral.* as it adds a new function not available in libdockapp yet.
This commit is contained in:
parent
7227f253e1
commit
8b09e991af
|
@ -1,10 +1,6 @@
|
||||||
LIBDIR = -L/usr/X11R6/lib
|
LIBDIR = -L/usr/X11R6/lib
|
||||||
LIBS = -lXpm -lXext -lX11
|
LIBS = -lXpm -lXext -lX11
|
||||||
OBJS = wmdonkeymon.o \
|
OBJS = wmdonkeymon.o ../wmgeneral/wmgeneral.o
|
||||||
../wmgeneral/wmgeneral.o \
|
|
||||||
../wmgeneral/misc.o \
|
|
||||||
../wmgeneral/list.o
|
|
||||||
|
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
cc -c -O2 -Wall $< -o $*.o
|
cc -c -O2 -Wall $< -o $*.o
|
||||||
|
|
|
@ -1,169 +0,0 @@
|
||||||
/* Generic single linked list to keep various information
|
|
||||||
Copyright (C) 1993, 1994 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
|
|
||||||
Author: Kresten Krab Thorup
|
|
||||||
|
|
||||||
Many modifications by Alfredo K. Kojima
|
|
||||||
|
|
||||||
|
|
||||||
This file is part of GNU CC.
|
|
||||||
|
|
||||||
GNU CC is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
GNU CC is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GNU CC; see the file COPYING. If not, write to
|
|
||||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
|
||||||
Boston, MA 02111-1307, USA. */
|
|
||||||
|
|
||||||
/* As a special exception, if you link this library with files compiled with
|
|
||||||
GCC to produce an executable, this does not cause the resulting executable
|
|
||||||
to be covered by the GNU General Public License. This exception does not
|
|
||||||
however invalidate any other reasons why the executable file might be
|
|
||||||
covered by the GNU General Public License. */
|
|
||||||
|
|
||||||
#include "list.h"
|
|
||||||
#ifdef HAVE_SYS_TYPES_H
|
|
||||||
# include <sys/types.h>
|
|
||||||
#endif
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
/* Return a cons cell produced from (head . tail) */
|
|
||||||
|
|
||||||
INLINE LinkedList*
|
|
||||||
list_cons(void* head, LinkedList* tail)
|
|
||||||
{
|
|
||||||
LinkedList* cell;
|
|
||||||
|
|
||||||
cell = (LinkedList*)malloc(sizeof(LinkedList));
|
|
||||||
cell->head = head;
|
|
||||||
cell->tail = tail;
|
|
||||||
return cell;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Return the length of a list, list_length(NULL) returns zero */
|
|
||||||
|
|
||||||
INLINE int
|
|
||||||
list_length(LinkedList* list)
|
|
||||||
{
|
|
||||||
int i = 0;
|
|
||||||
while(list)
|
|
||||||
{
|
|
||||||
i += 1;
|
|
||||||
list = list->tail;
|
|
||||||
}
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Return the Nth element of LIST, where N count from zero. If N
|
|
||||||
larger than the list length, NULL is returned */
|
|
||||||
|
|
||||||
INLINE void*
|
|
||||||
list_nth(int index, LinkedList* list)
|
|
||||||
{
|
|
||||||
while(index-- != 0)
|
|
||||||
{
|
|
||||||
if(list->tail)
|
|
||||||
list = list->tail;
|
|
||||||
else
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return list->head;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Remove the element at the head by replacing it by its successor */
|
|
||||||
|
|
||||||
INLINE void
|
|
||||||
list_remove_head(LinkedList** list)
|
|
||||||
{
|
|
||||||
if (!*list) return;
|
|
||||||
if ((*list)->tail)
|
|
||||||
{
|
|
||||||
LinkedList* tail = (*list)->tail; /* fetch next */
|
|
||||||
*(*list) = *tail; /* copy next to list head */
|
|
||||||
free(tail); /* free next */
|
|
||||||
}
|
|
||||||
else /* only one element in list */
|
|
||||||
{
|
|
||||||
free(*list);
|
|
||||||
(*list) = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Remove the element with `car' set to ELEMENT */
|
|
||||||
/*
|
|
||||||
INLINE void
|
|
||||||
list_remove_elem(LinkedList** list, void* elem)
|
|
||||||
{
|
|
||||||
while (*list)
|
|
||||||
{
|
|
||||||
if ((*list)->head == elem)
|
|
||||||
list_remove_head(list);
|
|
||||||
*list = (*list ? (*list)->tail : NULL);
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
INLINE LinkedList *
|
|
||||||
list_remove_elem(LinkedList* list, void* elem)
|
|
||||||
{
|
|
||||||
LinkedList *tmp;
|
|
||||||
|
|
||||||
if (list) {
|
|
||||||
if (list->head == elem) {
|
|
||||||
tmp = list->tail;
|
|
||||||
free(list);
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
list->tail = list_remove_elem(list->tail, elem);
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Return element that has ELEM as car */
|
|
||||||
|
|
||||||
INLINE LinkedList*
|
|
||||||
list_find(LinkedList* list, void* elem)
|
|
||||||
{
|
|
||||||
while(list)
|
|
||||||
{
|
|
||||||
if (list->head == elem)
|
|
||||||
return list;
|
|
||||||
list = list->tail;
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Free list (backwards recursive) */
|
|
||||||
|
|
||||||
INLINE void
|
|
||||||
list_free(LinkedList* list)
|
|
||||||
{
|
|
||||||
if(list)
|
|
||||||
{
|
|
||||||
list_free(list->tail);
|
|
||||||
free(list);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Map FUNCTION over all elements in LIST */
|
|
||||||
|
|
||||||
INLINE void
|
|
||||||
list_mapcar(LinkedList* list, void(*function)(void*))
|
|
||||||
{
|
|
||||||
while(list)
|
|
||||||
{
|
|
||||||
(*function)(list->head);
|
|
||||||
list = list->tail;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,59 +0,0 @@
|
||||||
/* Generic single linked list to keep various information
|
|
||||||
Copyright (C) 1993, 1994 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
Author: Kresten Krab Thorup
|
|
||||||
|
|
||||||
This file is part of GNU CC.
|
|
||||||
|
|
||||||
GNU CC is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
GNU CC is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GNU CC; see the file COPYING. If not, write to
|
|
||||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
|
||||||
Boston, MA 02111-1307, USA. */
|
|
||||||
|
|
||||||
/* As a special exception, if you link this library with files compiled with
|
|
||||||
GCC to produce an executable, this does not cause the resulting executable
|
|
||||||
to be covered by the GNU General Public License. This exception does not
|
|
||||||
however invalidate any other reasons why the executable file might be
|
|
||||||
covered by the GNU General Public License. */
|
|
||||||
|
|
||||||
#ifndef __LIST_H_
|
|
||||||
#define __LIST_H_
|
|
||||||
|
|
||||||
#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
|
|
||||||
# define INLINE inline
|
|
||||||
#else
|
|
||||||
# define INLINE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct LinkedList {
|
|
||||||
void *head;
|
|
||||||
struct LinkedList *tail;
|
|
||||||
} LinkedList;
|
|
||||||
|
|
||||||
INLINE LinkedList* list_cons(void* head, LinkedList* tail);
|
|
||||||
|
|
||||||
INLINE int list_length(LinkedList* list);
|
|
||||||
|
|
||||||
INLINE void* list_nth(int index, LinkedList* list);
|
|
||||||
|
|
||||||
INLINE void list_remove_head(LinkedList** list);
|
|
||||||
|
|
||||||
INLINE LinkedList *list_remove_elem(LinkedList* list, void* elem);
|
|
||||||
|
|
||||||
INLINE void list_mapcar(LinkedList* list, void(*function)(void*));
|
|
||||||
|
|
||||||
INLINE LinkedList*list_find(LinkedList* list, void* elem);
|
|
||||||
|
|
||||||
INLINE void list_free(LinkedList* list);
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,164 +0,0 @@
|
||||||
/* dock.c- built-in Dock module for WindowMaker
|
|
||||||
*
|
|
||||||
* WindowMaker window manager
|
|
||||||
*
|
|
||||||
* Copyright (c) 1997 Alfredo K. Kojima
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include "list.h"
|
|
||||||
#include "misc.h"
|
|
||||||
|
|
||||||
/*
|
|
||||||
*----------------------------------------------------------------------
|
|
||||||
* parse_command--
|
|
||||||
* Divides a command line into a argv/argc pair.
|
|
||||||
*----------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
#define PRC_ALPHA 0
|
|
||||||
#define PRC_BLANK 1
|
|
||||||
#define PRC_ESCAPE 2
|
|
||||||
#define PRC_DQUOTE 3
|
|
||||||
#define PRC_EOS 4
|
|
||||||
#define PRC_SQUOTE 5
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
short nstate;
|
|
||||||
short output;
|
|
||||||
} DFA;
|
|
||||||
|
|
||||||
|
|
||||||
static DFA mtable[9][6] = {
|
|
||||||
{{3,1},{0,0},{4,0},{1,0},{8,0},{6,0}},
|
|
||||||
{{1,1},{1,1},{2,0},{3,0},{5,0},{1,1}},
|
|
||||||
{{1,1},{1,1},{1,1},{1,1},{5,0},{1,1}},
|
|
||||||
{{3,1},{5,0},{4,0},{1,0},{5,0},{6,0}},
|
|
||||||
{{3,1},{3,1},{3,1},{3,1},{5,0},{3,1}},
|
|
||||||
{{-1,-1},{0,0},{0,0},{0,0},{0,0},{0,0}}, /* final state */
|
|
||||||
{{6,1},{6,1},{7,0},{6,1},{5,0},{3,0}},
|
|
||||||
{{6,1},{6,1},{6,1},{6,1},{5,0},{6,1}},
|
|
||||||
{{-1,-1},{0,0},{0,0},{0,0},{0,0},{0,0}}, /* final state */
|
|
||||||
};
|
|
||||||
|
|
||||||
char*
|
|
||||||
next_token(char *word, char **next)
|
|
||||||
{
|
|
||||||
char *ptr;
|
|
||||||
char *ret, *t;
|
|
||||||
int state, ctype;
|
|
||||||
|
|
||||||
t = ret = malloc(strlen(word)+1);
|
|
||||||
ptr = word;
|
|
||||||
|
|
||||||
state = 0;
|
|
||||||
*t = 0;
|
|
||||||
while (1) {
|
|
||||||
if (*ptr==0)
|
|
||||||
ctype = PRC_EOS;
|
|
||||||
else if (*ptr=='\\')
|
|
||||||
ctype = PRC_ESCAPE;
|
|
||||||
else if (*ptr=='"')
|
|
||||||
ctype = PRC_DQUOTE;
|
|
||||||
else if (*ptr=='\'')
|
|
||||||
ctype = PRC_SQUOTE;
|
|
||||||
else if (*ptr==' ' || *ptr=='\t')
|
|
||||||
ctype = PRC_BLANK;
|
|
||||||
else
|
|
||||||
ctype = PRC_ALPHA;
|
|
||||||
|
|
||||||
if (mtable[state][ctype].output) {
|
|
||||||
*t = *ptr; t++;
|
|
||||||
*t = 0;
|
|
||||||
}
|
|
||||||
state = mtable[state][ctype].nstate;
|
|
||||||
ptr++;
|
|
||||||
if (mtable[state][0].output<0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (*ret==0)
|
|
||||||
t = NULL;
|
|
||||||
else
|
|
||||||
t = strdup(ret);
|
|
||||||
|
|
||||||
free(ret);
|
|
||||||
|
|
||||||
if (ctype==PRC_EOS)
|
|
||||||
*next = NULL;
|
|
||||||
else
|
|
||||||
*next = ptr;
|
|
||||||
|
|
||||||
return t;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
extern void
|
|
||||||
parse_command(char *command, char ***argv, int *argc)
|
|
||||||
{
|
|
||||||
LinkedList *list = NULL;
|
|
||||||
char *token, *line;
|
|
||||||
int count, i;
|
|
||||||
|
|
||||||
line = command;
|
|
||||||
do {
|
|
||||||
token = next_token(line, &line);
|
|
||||||
if (token) {
|
|
||||||
list = list_cons(token, list);
|
|
||||||
}
|
|
||||||
} while (token!=NULL && line!=NULL);
|
|
||||||
|
|
||||||
count = list_length(list);
|
|
||||||
*argv = malloc(sizeof(char*)*count);
|
|
||||||
i = count;
|
|
||||||
while (list!=NULL) {
|
|
||||||
(*argv)[--i] = list->head;
|
|
||||||
list_remove_head(&list);
|
|
||||||
}
|
|
||||||
*argc = count;
|
|
||||||
}
|
|
||||||
|
|
||||||
extern pid_t
|
|
||||||
execCommand(char *command)
|
|
||||||
{
|
|
||||||
pid_t pid;
|
|
||||||
char **argv;
|
|
||||||
int argc;
|
|
||||||
|
|
||||||
parse_command(command, &argv, &argc);
|
|
||||||
|
|
||||||
if (argv==NULL) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((pid=fork())==0) {
|
|
||||||
char **args;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
args = malloc(sizeof(char*)*(argc+1));
|
|
||||||
if (!args)
|
|
||||||
exit(10);
|
|
||||||
for (i=0; i<argc; i++) {
|
|
||||||
args[i] = argv[i];
|
|
||||||
}
|
|
||||||
args[argc] = NULL;
|
|
||||||
execvp(argv[0], args);
|
|
||||||
exit(10);
|
|
||||||
}
|
|
||||||
return pid;
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
#ifndef __MISC_H
|
|
||||||
#define __MISC_H
|
|
||||||
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
extern void parse_command(char *, char ***, int *);
|
|
||||||
|
|
||||||
extern pid_t execCommand(char *);
|
|
||||||
#endif /* __MISC_H */
|
|
Loading…
Reference in a new issue