=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/unexpand/unexpand.c,v retrieving revision 1.5 retrieving revision 1.6 diff -c -r1.5 -r1.6 *** src/usr.bin/unexpand/unexpand.c 2002/02/16 21:27:56 1.5 --- src/usr.bin/unexpand/unexpand.c 2003/04/05 20:30:45 1.6 *************** *** 1,4 **** ! /* $OpenBSD: unexpand.c,v 1.5 2002/02/16 21:27:56 millert Exp $ */ /* $NetBSD: unexpand.c,v 1.5 1994/12/24 17:08:05 cgd Exp $ */ /*- --- 1,4 ---- ! /* $OpenBSD: unexpand.c,v 1.6 2003/04/05 20:30:45 deraadt Exp $ */ /* $NetBSD: unexpand.c,v 1.5 1994/12/24 17:08:05 cgd Exp $ */ /*- *************** *** 44,50 **** #if 0 static char sccsid[] = "@(#)unexpand.c 8.1 (Berkeley) 6/6/93"; #endif ! static char rcsid[] = "$OpenBSD: unexpand.c,v 1.5 2002/02/16 21:27:56 millert Exp $"; #endif /* not lint */ /* --- 44,50 ---- #if 0 static char sccsid[] = "@(#)unexpand.c 8.1 (Berkeley) 6/6/93"; #endif ! static char rcsid[] = "$OpenBSD: unexpand.c,v 1.6 2003/04/05 20:30:45 deraadt Exp $"; #endif /* not lint */ /* *************** *** 102,111 **** char *cp, *dp; int dcol; int ocol; ocol = 0; dcol = 0; ! cp = genbuf, dp = linebuf; for (;;) { switch (*cp) { --- 102,115 ---- char *cp, *dp; int dcol; int ocol; + size_t len; ocol = 0; dcol = 0; ! cp = genbuf; ! dp = linebuf; ! len = sizeof linebuf; ! for (;;) { switch (*cp) { *************** *** 122,141 **** while (((ocol + 8) &~ 07) <= dcol) { if (ocol + 1 == dcol) break; ! *dp++ = '\t'; ocol += 8; ocol &= ~07; } while (ocol < dcol) { ! *dp++ = ' '; ocol++; } if (*cp == 0 || c == 0) { ! strcpy(dp, cp); return; } *dp++ = *cp; ! ocol++, dcol++; } cp++; } --- 126,153 ---- while (((ocol + 8) &~ 07) <= dcol) { if (ocol + 1 == dcol) break; ! if (len > 1) { ! *dp++ = '\t'; ! len--; ! } ocol += 8; ocol &= ~07; } while (ocol < dcol) { ! if (len > 1) { ! *dp++ = ' '; ! len--; ! } ocol++; } if (*cp == 0 || c == 0) { ! strlcpy(dp, cp, len); return; } *dp++ = *cp; ! len--; ! ocol++; ! dcol++; } cp++; }