wmii

git clone git://oldgit.suckless.org/wmii/
Log | Files | Refs | README | LICENSE

commit 7daf9654306578ea60a37a205304b891e80d1780
parent 9ecfee900250cc507b27a768462990c8befa39fb
Author: Anselm R. Garbe <garbeam@wmii.de>
Date:   Fri, 10 Mar 2006 14:39:46 +0100

added /def/rules file


Diffstat:
cmd/wm/fs.c | 25+++++++++++++++++++++++--
cmd/wm/wm.c | 2++
cmd/wm/wm.h | 3+++
3 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/cmd/wm/fs.c b/cmd/wm/fs.c @@ -38,6 +38,7 @@ static char Enocommand[] = "command not supported"; * /def/font FsFfont xlib font name * /def/selcolors FsFselcolors sel color * /def/normcolors FsFnormcolors normal colors + * /def/rules FsFrules normal colors * /keys/ FsDkeys * /keys/foo FsFkey * /tags/ FsDtags @@ -198,6 +199,7 @@ qid2name(Qid *qid) case FsFselcolors: return "selcolors"; break; case FsFnormcolors: return "normcolors"; break; case FsFfont: return "font"; break; + case FsFrules: return "rules"; break; case FsFcolors: return "colors"; break; case FsFdata: if(i1 == -1) @@ -297,8 +299,8 @@ name2type(char *name, unsigned char dir_type) return FsFselcolors; if(!strncmp(name, "normcolors", 11)) return FsFnormcolors; - if(!strncmp(name, "font", 5)) - return FsFfont; + if(!strncmp(name, "rules", 6)) + return FsFrules; if(!strncmp(name, "data", 5)) return FsFdata; if(!strncmp(name, "mode", 5)) @@ -569,6 +571,9 @@ type2stat(Stat *stat, char *wname, Qid *dir) case FsFselcolors: case FsFnormcolors: return mkstat(stat, dir, wname, 23, DMREAD | DMWRITE); + case FsFrules: + return mkstat(stat, dir, wname, def.rules ? strlen(def.rules) : 0, DMREAD | DMWRITE); + break; case FsFfont: return mkstat(stat, dir, wname, strlen(def.font), DMREAD | DMWRITE); break; @@ -1107,6 +1112,11 @@ xread(IXPConn *c, Fcall *fcall) if((fcall->count = strlen(def.normcolor))) memcpy(p, def.normcolor, fcall->count); break; + case FsFrules: + /* TODO: offset handling */ + if((fcall->count = def.rules ? strlen(def.rules) : 0)) + memcpy(p, def.font, fcall->count); + break; case FsFfont: if((fcall->count = strlen(def.font))) memcpy(p, def.font, fcall->count); @@ -1310,6 +1320,17 @@ xwrite(IXPConn *c, Fcall *fcall) if(client[i]->frame[j]->area->tag == tag[sel]) draw_client(client[i]); break; + case FsFrules: + /* TODO: offset handling */ + if(def.rulessz < fcall->count) { + def.rulessz = 2 * fcall->count; + if(def.rules) + free(def.rules); + def.rules = cext_emallocz(def.rulessz); + } + memcpy(def.rules, fcall->data, fcall->count); + def.rules[fcall->count] = 0; + break; case FsFfont: if(def.font) free(def.font); diff --git a/cmd/wm/wm.c b/cmd/wm/wm.c @@ -316,6 +316,8 @@ main(int argc, char *argv[]) keysz = nkey = 0; label = nil; nlabel = labelsz = 0; + def.rules = nil; + def.rulessz = 0; def.font = strdup(BLITZ_FONT); def.border = DEF_BORDER; diff --git a/cmd/wm/wm.h b/cmd/wm/wm.h @@ -68,6 +68,7 @@ enum { FsFevent, FsFctl, FsFname, + FsFrules, FsFtags, FsFclass, FsFtag, @@ -162,6 +163,8 @@ typedef struct { Color norm; unsigned int border; unsigned int snap; + char *rules; + unsigned int rulessz; } Default; /* global variables */