From owner-svn-src-head@FreeBSD.ORG Sat Nov 30 21:27:13 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B3D9452E; Sat, 30 Nov 2013 21:27:13 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 9FDDE1ABD; Sat, 30 Nov 2013 21:27:13 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id rAULRDdP020376; Sat, 30 Nov 2013 21:27:13 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id rAULRCUC020365; Sat, 30 Nov 2013 21:27:12 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201311302127.rAULRCUC020365@svn.freebsd.org> From: Jilles Tjoelker Date: Sat, 30 Nov 2013 21:27:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r258776 - head/bin/sh X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Nov 2013 21:27:13 -0000 Author: jilles Date: Sat Nov 30 21:27:11 2013 New Revision: 258776 URL: http://svnweb.freebsd.org/changeset/base/258776 Log: sh: Prefer memcpy() to strcpy() in most cases. Remove the scopy macro. Modified: head/bin/sh/cd.c head/bin/sh/exec.c head/bin/sh/expand.c head/bin/sh/memalloc.c head/bin/sh/mystring.c head/bin/sh/mystring.h head/bin/sh/show.c head/bin/sh/var.c Modified: head/bin/sh/cd.c ============================================================================== --- head/bin/sh/cd.c Sat Nov 30 19:39:17 2013 (r258775) +++ head/bin/sh/cd.c Sat Nov 30 21:27:11 2013 (r258776) @@ -182,6 +182,7 @@ cdlogical(char *dest) struct stat statb; int first; int badstat; + size_t len; /* * Check each component of the path. If we find a symlink or @@ -189,8 +190,9 @@ cdlogical(char *dest) * next time we get the value of the current directory. */ badstat = 0; - cdcomppath = stalloc(strlen(dest) + 1); - scopy(dest, cdcomppath); + len = strlen(dest); + cdcomppath = stalloc(len + 1); + memcpy(cdcomppath, dest, len + 1); STARTSTACKSTR(p); if (*dest == '/') { STPUTC('/', p); @@ -275,6 +277,7 @@ findcwd(char *dir) { char *new; char *p; + size_t len; /* * If our argument is NULL, we don't know the current directory @@ -283,8 +286,9 @@ findcwd(char *dir) */ if (dir == NULL || curdir == NULL) return getpwd2(); - cdcomppath = stalloc(strlen(dir) + 1); - scopy(dir, cdcomppath); + len = strlen(dir); + cdcomppath = stalloc(len + 1); + memcpy(cdcomppath, dir, len + 1); STARTSTACKSTR(new); if (*dir != '/') { STPUTS(curdir, new); Modified: head/bin/sh/exec.c ============================================================================== --- head/bin/sh/exec.c Sat Nov 30 19:39:17 2013 (r258775) +++ head/bin/sh/exec.c Sat Nov 30 21:27:11 2013 (r258776) @@ -187,14 +187,15 @@ padvance(const char **path, const char * { const char *p, *start; char *q; - size_t len; + size_t len, namelen; if (*path == NULL) return NULL; start = *path; for (p = start; *p && *p != ':' && *p != '%'; p++) ; /* nothing */ - len = p - start + strlen(name) + 2; /* "2" is for '/' and '\0' */ + namelen = strlen(name); + len = p - start + namelen + 2; /* "2" is for '/' and '\0' */ STARTSTACKSTR(q); CHECKSTRSPACE(len, q); if (p != start) { @@ -202,7 +203,7 @@ padvance(const char **path, const char * q += p - start; *q++ = '/'; } - strcpy(q, name); + memcpy(q, name, namelen + 1); pathopt = NULL; if (*p == '%') { pathopt = ++p; @@ -527,6 +528,7 @@ cmdlookup(const char *name, int add) const char *p; struct tblentry *cmdp; struct tblentry **pp; + size_t len; p = name; hashval = *p << 4; @@ -541,11 +543,11 @@ cmdlookup(const char *name, int add) } if (add && cmdp == NULL) { INTOFF; - cmdp = *pp = ckmalloc(sizeof (struct tblentry) - + strlen(name) + 1); + len = strlen(name); + cmdp = *pp = ckmalloc(sizeof (struct tblentry) + len + 1); cmdp->next = NULL; cmdp->cmdtype = CMDUNKNOWN; - strcpy(cmdp->cmdname, name); + memcpy(cmdp->cmdname, name, len + 1); INTON; } lastcmdentry = pp; Modified: head/bin/sh/expand.c ============================================================================== --- head/bin/sh/expand.c Sat Nov 30 19:39:17 2013 (r258775) +++ head/bin/sh/expand.c Sat Nov 30 21:27:11 2013 (r258776) @@ -1307,9 +1307,11 @@ addfname(char *name) { char *p; struct strlist *sp; + size_t len; - p = stalloc(strlen(name) + 1); - scopy(name, p); + len = strlen(name); + p = stalloc(len + 1); + memcpy(p, name, len + 1); sp = (struct strlist *)stalloc(sizeof *sp); sp->text = p; *exparg.lastp = sp; Modified: head/bin/sh/memalloc.c ============================================================================== --- head/bin/sh/memalloc.c Sat Nov 30 19:39:17 2013 (r258775) +++ head/bin/sh/memalloc.c Sat Nov 30 21:27:11 2013 (r258776) @@ -98,9 +98,11 @@ char * savestr(const char *s) { char *p; + size_t len; - p = ckmalloc(strlen(s) + 1); - scopy(s, p); + len = strlen(s); + p = ckmalloc(len + 1); + memcpy(p, s, len + 1); return p; } Modified: head/bin/sh/mystring.c ============================================================================== --- head/bin/sh/mystring.c Sat Nov 30 19:39:17 2013 (r258775) +++ head/bin/sh/mystring.c Sat Nov 30 21:27:11 2013 (r258776) @@ -42,7 +42,6 @@ __FBSDID("$FreeBSD$"); * String functions. * * equal(s1, s2) Return true if strings are equal. - * scopy(from, to) Copy a string. * number(s) Convert a string of digits to an integer. * is_number(s) Return true if s is a string of digits. */ @@ -60,10 +59,6 @@ char nullstr[1]; /* zero length string * equal - #defined in mystring.h */ -/* - * scopy - #defined in mystring.h - */ - /* * prefix -- see if pfx is a prefix of string. Modified: head/bin/sh/mystring.h ============================================================================== --- head/bin/sh/mystring.h Sat Nov 30 19:39:17 2013 (r258775) +++ head/bin/sh/mystring.h Sat Nov 30 21:27:11 2013 (r258776) @@ -40,4 +40,3 @@ int number(const char *); int is_number(const char *); #define equal(s1, s2) (strcmp(s1, s2) == 0) -#define scopy(s1, s2) ((void)strcpy(s2, s1)) Modified: head/bin/sh/show.c ============================================================================== --- head/bin/sh/show.c Sat Nov 30 19:39:17 2013 (r258775) +++ head/bin/sh/show.c Sat Nov 30 21:27:11 2013 (r258776) @@ -390,11 +390,11 @@ opentrace(void) else p = "/tmp"; } - scopy(p, s); + strcpy(s, p); strcat(s, "/trace"); } #else - scopy("./trace", s); + strcpy(s, "./trace"); #endif /* not_this_way */ if ((tracefile = fopen(s, "a")) == NULL) { fprintf(stderr, "Can't open %s: %s\n", s, strerror(errno)); Modified: head/bin/sh/var.c ============================================================================== --- head/bin/sh/var.c Sat Nov 30 19:39:17 2013 (r258775) +++ head/bin/sh/var.c Sat Nov 30 21:27:11 2013 (r258776) @@ -224,8 +224,9 @@ void setvar(const char *name, const char *val, int flags) { const char *p; - int len; - int namelen; + size_t len; + size_t namelen; + size_t vallen; char *nameeq; int isbad; @@ -244,18 +245,20 @@ setvar(const char *name, const char *val } namelen = p - name; if (isbad) - error("%.*s: bad variable name", namelen, name); + error("%.*s: bad variable name", (int)namelen, name); len = namelen + 2; /* 2 is space for '=' and '\0' */ if (val == NULL) { flags |= VUNSET; + vallen = 0; } else { - len += strlen(val); + vallen = strlen(val); + len += vallen; } nameeq = ckmalloc(len); memcpy(nameeq, name, namelen); nameeq[namelen] = '='; if (val) - scopy(val, nameeq + namelen + 1); + memcpy(nameeq + namelen + 1, val, vallen + 1); else nameeq[namelen + 1] = '\0'; setvareq(nameeq, flags);