pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/pkgtools/pkg_install/files/lib pkg_install-20090610:



details:   https://anonhg.NetBSD.org/pkgsrc/rev/2bc6fa7e4a01
branches:  trunk
changeset: 394490:2bc6fa7e4a01
user:      joerg <joerg%pkgsrc.org@localhost>
date:      Wed Jun 10 20:15:11 2009 +0000

description:
pkg_install-20090610:
Improve diagnostic around license handling.

diffstat:

 pkgtools/pkg_install/files/lib/license.c |  45 ++++++++++++++++++++++---------
 pkgtools/pkg_install/files/lib/version.h |   4 +-
 2 files changed, 34 insertions(+), 15 deletions(-)

diffs (143 lines):

diff -r ca1fca390e6c -r 2bc6fa7e4a01 pkgtools/pkg_install/files/lib/license.c
--- a/pkgtools/pkg_install/files/lib/license.c  Wed Jun 10 17:33:44 2009 +0000
+++ b/pkgtools/pkg_install/files/lib/license.c  Wed Jun 10 20:15:11 2009 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: license.c,v 1.4 2009/06/03 16:45:17 ahoka Exp $        */
+/*     $NetBSD: license.c,v 1.5 2009/06/10 20:15:11 joerg Exp $        */
 
 /*-
  * Copyright (c) 2009 Joerg Sonnenberger <joerg%NetBSD.org@localhost>.
@@ -156,14 +156,16 @@
        size_t len;
 
        len = strlen(license);
-       if (strspn(license, license_chars) != len)
+       if (strspn(license, license_chars) != len) {
+               warnx("Invalid character in license name at position %zu", len);
                return -1;
+       }
 
        return acceptable_license_internal(license, len);
 }
 
 static int
-acceptable_pkg_license_internal(const char **licensep, int toplevel)
+acceptable_pkg_license_internal(const char **licensep, int toplevel, const char *start)
 {
        const char *license = *licensep;
        int need_parenthesis, is_true = 0;
@@ -182,7 +184,7 @@
 
        for (;;) {
                if (*license == '(') {
-                       switch (acceptable_pkg_license_internal(&license, 0)) {
+                       switch (acceptable_pkg_license_internal(&license, 0, start)) {
                        case -1:
                                return -1;
                        case 0:
@@ -196,8 +198,10 @@
                        license += strspn(license, license_spaces);
                } else {
                        len = strspn(license, license_chars);
-                       if (len == 0)
+                       if (len == 0) {
+                               warnx("Invalid character in license name at position %zu", license - start + 1);
                                return -1;
+                       }
 
                        if (acceptable_license_internal(license, len)) {
                                if (expr_type != 2)
@@ -209,40 +213,53 @@
                        license += len;
 
                        len = strspn(license, license_spaces);
-                       if (len == 0 && *license && *license  != ')')
+                       if (len == 0 && *license && *license  != ')') {
+                               warnx("Missing space at position %zu", license - start + 1);
                                return -1;
+                       }
                        license += len;
                }
 
                if (*license == ')') {
-                       if (!need_parenthesis)
+                       if (!need_parenthesis) {
+                               warnx("Missing open parenthesis at position %zu", license - start + 1);
                                return -1;
+                       }
                        *licensep = license + 1;
                        return is_true;
                }
                if (*license == '\0') {
-                       if (need_parenthesis)
+                       if (need_parenthesis) {
+                               warnx("Unbalanced parenthesis at position %zu", license - start + 1);
                                return -1;
+                       }
                        *licensep = license;
                        return is_true;
                }
 
                if (strncmp(license, "AND", 3) == 0) {
-                       if (expr_type == 1)
+                       if (expr_type == 1) {
+                               warnx("Invalid operator in OR expression at position %zu", license - start + 1);
                                return -1;
+                       }
                        expr_type = 2;
                        license += 3;
                } else if (strncmp(license, "OR", 2) == 0) {
-                       if (expr_type == 2)
+                       if (expr_type == 2) {
+                               warnx("Invalid operator in AND expression at position %zu", license - start + 1);
                                return -1;
+                       }
                        expr_type = 1;
                        license += 2;
                } else {
+                       warnx("Invalid operator at position %zu", license - start + 1);
                        return -1;
                }
                len = strspn(license, license_spaces);
-               if (len == 0 && *license != '(')
+               if (len == 0 && *license != '(') {
+                       warnx("Missing space at position %zu", license - start + 1);
                        return -1;
+               }
                license += len;
        }
 
@@ -254,12 +271,14 @@
 {
        int ret;
 
-       ret = acceptable_pkg_license_internal(&license, 1);
+       ret = acceptable_pkg_license_internal(&license, 1, license);
        if (ret == -1)
                return -1;
        license += strspn(license, license_spaces);
-       if (*license)
+       if (*license) {
+               warnx("Trailing garbage in license specification");
                return -1;
+       }
        return ret;
 }
 
diff -r ca1fca390e6c -r 2bc6fa7e4a01 pkgtools/pkg_install/files/lib/version.h
--- a/pkgtools/pkg_install/files/lib/version.h  Wed Jun 10 17:33:44 2009 +0000
+++ b/pkgtools/pkg_install/files/lib/version.h  Wed Jun 10 20:15:11 2009 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: version.h,v 1.130 2009/05/28 08:59:59 joerg Exp $      */
+/*     $NetBSD: version.h,v 1.131 2009/06/10 20:15:11 joerg Exp $      */
 
 /*
  * Copyright (c) 2001 Thomas Klausner.  All rights reserved.
@@ -27,6 +27,6 @@
 #ifndef _INST_LIB_VERSION_H_
 #define _INST_LIB_VERSION_H_
 
-#define PKGTOOLS_VERSION "20090528"
+#define PKGTOOLS_VERSION "20090610"
 
 #endif /* _INST_LIB_VERSION_H_ */



Home | Main Index | Thread Index | Old Index