Date: Tue, 14 May 2002 16:19:29 +0300 From: Maxim Sobolev <sobomax@FreeBSD.org> To: Jeremy Lea <reg@FreeBSD.ORG> Cc: Mark Murray <mark@grondar.za>, "Bruce A. Mah" <bmah@FreeBSD.ORG>, current@FreeBSD.ORG, ports@FreeBSD.ORG Subject: Re: pkg_version in C [was: Re: Perl scripts that need rewriting - Progress!] Message-ID: <3CE10EE1.27F9718@FreeBSD.org> References: <200205091933.g49JXMjV041629@grimreaper.grondar.org> <20020514145039.B13083@shale.csir.co.za>
next in thread | previous in thread | raw e-mail | index | archive | help
Jeremy Lea wrote: > > Hi, > > On Thu, May 09, 2002 at 08:33:22PM +0100, Mark Murray wrote: > > /usr/sbin/pkg_version Jeremy Lea <reg@FreeBSD.ORG> - re > > OK, the first revision is attached. It appears to work for me... It > needs some spit and polish, and probably a few more people to test. > > I've not implemented the -d flag since it sort of became unneeded, and > it's not really the way things are done in the rest of pkg_*. I've also > not implemented -c. There were enough warnings that it wasn't really > useful, and portupgrade does a much better job... Cool! Few notes: +++ version/perform.c 14 May 2002 12:41:41 -0000 [...] + strlcpy(tmp, PORTS_DIR, PATH_MAX); + strlcat(tmp, "/INDEX", PATH_MAX); I'd suggest snprintf(3) [...] + ftsp = fts_open((char * const *)(uintptr_t)paths, FTS_LOGICAL | FTS_NOCHDIR | FTS_NOSTAT, fname_cmp); + if (ftsp != NULL) { + while ((f = fts_read(ftsp)) != NULL) { + if (f->fts_info == FTS_D && f->fts_level == 1) { + fts_set(ftsp, f, FTS_SKIP); + if (MatchName == NULL || strstr(f->fts_name, MatchName)) + err_cnt += pkg_do(f->fts_name); + } + } + fts_close(ftsp); + } Why noy use matchinstalled() which do something similar? [...] + strlcpy(tmp, LOG_DIR, PATH_MAX); + strlcat(tmp, "/", PATH_MAX); + strlcat(tmp, pkg, PATH_MAX); + strlcat(tmp, "/", PATH_MAX); + strlcat(tmp, CONTENTS_FNAME, PATH_MAX); I'd suggest snprintf(3) [...] + strlcpy(tmp, PORTS_DIR, PATH_MAX); + strlcat(tmp, "/", PATH_MAX); + strlcat(tmp, plist.origin, PATH_MAX); snprintf(3) [...] + funny: + warnx("This is a very funny looking INDEX!"); + return 1; I don't think this is a good choice for an error message. [...] +static int +fname_cmp(const FTSENT **a, const FTSENT **b) +{ + return strcmp((*a)->fts_name, (*b)->fts_name); +} Could be routed to /dev/null if matchinstalled() is used. -Maxim To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3CE10EE1.27F9718>