Date: Sun, 28 Mar 2010 02:13:57 -0700 From: Garrett Cooper <gcooper@FreeBSD.org> To: FreeBSD-gnats-submit@freebsd.org, freebsd-bugs@freebsd.org Subject: Re: bin/145100: [patch] pkg_add(1) - remove hardcoded versioning data from add/main.c Message-ID: <364299f41003280213x6f67ef45peb891f73fb4d140f@mail.gmail.com> In-Reply-To: <201003280850.o2S8o2v6038902@freefall.freebsd.org> References: <201003280844.o2S8ihqt007800@www.freebsd.org> <201003280850.o2S8o2v6038902@freefall.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --] On Sun, Mar 28, 2010 at 1:50 AM, <FreeBSD-gnats-submit@freebsd.org> wrote: > Thank you very much for your problem report. > It has the internal identification `bin/145100'. > The individual assigned to look at your > report is: freebsd-bugs. > > You can access the state of your problem report at any time > via this link: > > http://www.freebsd.org/cgi/query-pr.cgi?pr=145100 > >>Category: bin >>Responsible: freebsd-bugs >>Synopsis: [patch] pkg_add(1) - remove hardcoded versioning data from add/main.c >>Arrival-Date: Sun Mar 28 08:50:02 UTC 2010 Supported hierarchies are done like: /<machine>/packages-<release-lowercase> Corrected with this diff. Thanks, -Garrett [-- Attachment #2 --] ==== //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/usr.sbin/pkg_install/add/main.c#3 - /scratch/freebsd/perforce/pkg_install-enhancements/usr.sbin/pkg_install/add/main.c ==== @@ -52,51 +52,6 @@ char *progname = NULL; -struct { - int lowver; /* Lowest version number to match */ - int hiver; /* Highest version number to match */ - const char *directory; /* Directory it lives in */ -} releases[] = { - { 410000, 410000, "/packages-4.1-release" }, - { 420000, 420000, "/packages-4.2-release" }, - { 430000, 430000, "/packages-4.3-release" }, - { 440000, 440000, "/packages-4.4-release" }, - { 450000, 450000, "/packages-4.5-release" }, - { 460000, 460001, "/packages-4.6-release" }, - { 460002, 460099, "/packages-4.6.2-release" }, - { 470000, 470099, "/packages-4.7-release" }, - { 480000, 480099, "/packages-4.8-release" }, - { 490000, 490099, "/packages-4.9-release" }, - { 491000, 491099, "/packages-4.10-release" }, - { 492000, 492099, "/packages-4.11-release" }, - { 500000, 500099, "/packages-5.0-release" }, - { 501000, 501099, "/packages-5.1-release" }, - { 502000, 502009, "/packages-5.2-release" }, - { 502010, 502099, "/packages-5.2.1-release" }, - { 503000, 503099, "/packages-5.3-release" }, - { 504000, 504099, "/packages-5.4-release" }, - { 505000, 505099, "/packages-5.5-release" }, - { 600000, 600099, "/packages-6.0-release" }, - { 601000, 601099, "/packages-6.1-release" }, - { 602000, 602099, "/packages-6.2-release" }, - { 603000, 603099, "/packages-6.3-release" }, - { 604000, 604099, "/packages-6.4-release" }, - { 700000, 700099, "/packages-7.0-release" }, - { 701000, 701099, "/packages-7.1-release" }, - { 702000, 702099, "/packages-7.2-release" }, - { 800000, 800499, "/packages-8.0-release" }, - { 300000, 399000, "/packages-3-stable" }, - { 400000, 499000, "/packages-4-stable" }, - { 502100, 502128, "/packages-5-current" }, - { 503100, 599000, "/packages-5-stable" }, - { 600100, 699000, "/packages-6-stable" }, - { 700100, 799000, "/packages-7-stable" }, - { 800500, 899000, "/packages-8-stable" }, - { 900000, 999000, "/packages-9-current" }, - { 0, 9999999, "/packages-current" }, - { 0, 0, NULL } -}; - static char *getpackagesite(void); int getosreldate(void); @@ -302,8 +257,8 @@ static char * getpackagesite(void) { - int reldate, i; static char sitepath[MAXPATHLEN]; + size_t i; struct utsname u; if (getenv("PACKAGESITE")) { @@ -327,20 +282,22 @@ >= sizeof(sitepath)) return NULL; - uname(&u); - if (strlcat(sitepath, u.machine, sizeof(sitepath)) >= sizeof(sitepath)) + if (uname(&u) == -1) { + warn("%s.%s: could not determine uname information", progname, + __func__); + return NULL; + } + if (strlcat(sitepath, u.machine, sizeof(sitepath)) >= sizeof(sitepath) || + strlcat(sitepath, "/packages-", sizeof(sitepath)) >= sizeof(sitepath)) return NULL; - reldate = getosreldate(); - for(i = 0; releases[i].directory != NULL; i++) { - if (reldate >= releases[i].lowver && reldate <= releases[i].hiver) { - if (strlcat(sitepath, releases[i].directory, sizeof(sitepath)) - >= sizeof(sitepath)) - return NULL; - break; - } + for (i = 0; u.release[i] != '\0'; i++) { + u.release[i] = tolower(u.release[i]); } + if (strlcat(sitepath, u.release, sizeof(sitepath)) >= sizeof(sitepath)) + return NULL; + if (strlcat(sitepath, "/Latest/", sizeof(sitepath)) >= sizeof(sitepath)) return NULL;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?364299f41003280213x6f67ef45peb891f73fb4d140f>
