wmii

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

commit ea557c933877d2ddf080e25f0668c7ff702b6272
parent 209fb08f82f5c830b001e5eb22dd4aac6624f3cc
Author: Kris Maglione <jg@suckless.org>
Date:   Sun,  1 Jul 2007 15:26:14 -0400

Fixed a bunch of issues.

Diffstat:
cmd/util.c | 2+-
cmd/wmii/message.c | 2+-
cmd/wmii/utf.h | 9---------
mk/lib.mk | 6+++---
util/cleanname | 21+++++++++++++--------
util/compile | 5+++--
6 files changed, 21 insertions(+), 24 deletions(-)

diff --git a/cmd/util.c b/cmd/util.c @@ -15,7 +15,7 @@ Vfmt(Fmt *f) { va_list ap; fmt = va_arg(f->args, char*); - ap = va_arg(f->args, va_list); + va_copy(ap, va_arg(f->args, va_list)); return fmtvprint(f, fmt, ap); } diff --git a/cmd/wmii/message.c b/cmd/wmii/message.c @@ -270,7 +270,7 @@ parse_colors(IxpMsg *m, CTuple *col) { if(*p++ != '#') return Ebad; for(j = 0; j < 6 && p < (char*)m->end; j++) - if(!ishexnumber(*p++)) + if(!isxdigit(*p++)) return Ebad; chartorune(&r, p); if(i < 2 && r != ' ' || !(isspacerune(r) || *p == '\0')) diff --git a/cmd/wmii/utf.h b/cmd/wmii/utf.h @@ -1,9 +0,0 @@ -typedef ushort Rune; /* 16 bits */ - -enum -{ - UTFmax = 3, /* maximum bytes per rune */ - Runesync = 0x80, /* cannot represent part of a UTF sequence (<) */ - Runeself = 0x80, /* rune and UTF sequences are the same (<) */ - Runeerror = 0xFFFD, /* decoding error in UTF */ -}; diff --git a/mk/lib.mk b/mk/lib.mk @@ -18,8 +18,8 @@ printinstall: echo ' Lib: ${LIBDIR}' ${LIB}: ${OFILES} - @echo AR $$($(ROOT)/util/cleanname $(BASE)/$@) - @${AR} $@ ${OFILES} - @${RANLIB} $@ + echo AR $$($(ROOT)/util/cleanname $(BASE)/$@) + mkdir ${ROOT}/lib 2>/dev/null || true + ${AR} $@ ${OFILES} include ${ROOT}/mk/common.mk diff --git a/util/cleanname b/util/cleanname @@ -1,13 +1,18 @@ #!/bin/sh -f echo "$@" | - awk '{ - gsub(/\/+/, "/") - while(gsub("[^/]+/\.\.(/|$)", "")) - ; - while(gsub("/\.(/|$)", "/")) - ; - gsub(/\/+/, "/") - print + awk -F'/+' '{ + delete a + n = 0 + for(i = 1; i <= NF; i++) { + if($i == ".." && n > 0 && a[n] != "..") + n-- + else if($i != "" && $i != ".") + a[++n] = $i + } + s = "" + for(i = 1; i <= n; i++) + s = s "/" a[i] + print substr(s, 2) }' diff --git a/util/compile b/util/compile @@ -11,9 +11,10 @@ echo CC $($bin/cleanname ${BASE}$outfile) $CC -o $outfile $CFLAGS $@ 2>$xtmp status=$? -base=$(echo $BASE | sed 's/,/\\,/g') +base=$(echo $BASE | sed 's/,/\\,/g; s,/$,,') +re='\([^[:space:]/]*\..:[0-9]\)' -cat $xtmp | sed "s,^[^/][^:]*\.c:,$base&,g" | +cat $xtmp | sed "s,^$re,$base/&,g; s,\([[:space:]]\)$re,\1$base/\2,g" | egrep -v ': error: .Each undeclared identifier|: error: for each function it appears|is dangerous, better use|is almost always misused|: In function |: At top level:|support .long long.|use of C99 long long|ISO C forbids conversion' | sed 's/ .first use in this function.$//; s/\"\([^\"][^\"]*\)\", line \([0-9][0-9]*\)/\1:\2/g' | uniq 1>&2