diff --git a/cmd/util.c b/cmd/util.c index a579bf1e..528c4d07 100644 --- 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 index 9083b6ce..8f362f73 100644 --- 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 deleted file mode 100644 index 2eb0b1b9..00000000 --- a/cmd/wmii/utf.h +++ /dev/null @@ -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 index 77843960..3bcc1ddf 100644 --- 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 index a77f39d9..988754d1 100755 --- 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 index c41c4a04..beab981e 100755 --- 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