]> git.pld-linux.org Git - packages/rpm.git/commitdiff
- ETC_DIR support
authorjuandon <witekfl@pld-linux.org>
Mon, 7 Apr 2003 14:33:04 +0000 (14:33 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    rpm-etc_dir.patch -> 1.1

rpm-etc_dir.patch [new file with mode: 0644]

diff --git a/rpm-etc_dir.patch b/rpm-etc_dir.patch
new file mode 100644 (file)
index 0000000..5b789a4
--- /dev/null
@@ -0,0 +1,94 @@
+diff -Nru rpm-4.1/lib/rpmrc.c rpm-4.1.new/lib/rpmrc.c
+--- rpm-4.1/lib/rpmrc.c        Tue Aug 20 16:53:44 2002
++++ rpm-4.1.new/lib/rpmrc.c    Tue Mar 11 18:41:48 2003
+@@ -1756,27 +1756,40 @@
+       /* Expand ~/ to $HOME/ */
+       fn[0] = '\0';
+       if (r[0] == '~' && r[1] == '/') {
++                      const char * etc_dir = getenv("ETC_DIR");
+           const char * home = getenv("HOME");
+-          if (home == NULL) {
++                      if (etc_dir) {
++              if (strlen(etc_dir) > (sizeof(fn) - strlen(r))) {
++                                      rpmError(RPMERR_RPMRC, _("Cannot read %s, ETC_DIR is too large.\n"),r);
++                                      rc = 1;
++                                      break;
++              }
++              strcpy(fn, etc_dir);
++                              strncat(fn, "/", sizeof(fn) - strlen(fn));                              
++                r+=2;
++              
++                              if (r[0] == '.') r++;
++                      } else {
++              if (home == NULL) {
+           /* XXX Only /usr/lib/rpm/rpmrc must exist in default rcfiles list */
+-              if (rcfiles == defrcfiles && myrcfiles != r)
+-                  continue;
+-              rpmError(RPMERR_RPMRC, _("Cannot expand %s\n"), r);
+-              rc = 1;
+-              break;
+-          }
+-          if (strlen(home) > (sizeof(fn) - strlen(r))) {
+-              rpmError(RPMERR_RPMRC, _("Cannot read %s, HOME is too large.\n"),
++                      if (rcfiles == defrcfiles && myrcfiles != r)
++                      continue;
++                      rpmError(RPMERR_RPMRC, _("Cannot expand %s\n"), r);
++                      rc = 1;
++                      break;
++              }
++              if (strlen(home) > (sizeof(fn) - strlen(r))) {
++                      rpmError(RPMERR_RPMRC, _("Cannot read %s, HOME is too large.\n"),
+                               r);
+-              rc = 1;
+-              break;
+-          }
+-          strcpy(fn, home);
+-          r++;
+-      }
+-      strncat(fn, r, sizeof(fn) - (strlen(fn) + 1));
+-      fn[sizeof(fn)-1] = '\0';
+-
++                      rc = 1;
++                      break;
++              }
++              strcpy(fn, home);
++                r++;
++                      }
++              }
++              strncat(fn, r, sizeof(fn) - (strlen(fn) + 1));
++              fn[sizeof(fn)-1] = '\0';
+       /* Read another rcfile */
+       fd = Fopen(fn, "r.fpio");
+       if (fd == NULL || Ferror(fd)) {
+diff -Nru rpm-4.1/rpmio/macro.c rpm-4.1.new/rpmio/macro.c
+--- rpm-4.1/rpmio/macro.c      Tue Sep 17 14:58:23 2002
++++ rpm-4.1.new/rpmio/macro.c  Tue Mar 11 18:21:59 2003
+@@ -1614,15 +1614,23 @@
+       buf[0] = '\0';
+       if (mfile[0] == '~' && mfile[1] == '/') {
+           char *home;
+-          if ((home = getenv("HOME")) != NULL) {
+-              mfile += 2;
+-              strncpy(buf, home, sizeof(buf));
+-              strncat(buf, "/", sizeof(buf) - strlen(buf));
++                      char *etc_dir = getenv("ETC_DIR");
++
++                      if (etc_dir) {
++                              mfile += 2;
++                              if (mfile[0] == '.') mfile++;
++                              strncpy(buf, etc_dir, sizeof(buf));
++                              strncat(buf, "/", sizeof(buf) - strlen(buf));                           
++                      } else {
++              if ((home = getenv("HOME")) != NULL) {
++                      mfile += 2;
++                      strncpy(buf, home, sizeof(buf));
++                      strncat(buf, "/", sizeof(buf) - strlen(buf));
+           }
++              }
+       }
+       strncat(buf, mfile, sizeof(buf) - strlen(buf));
+       buf[sizeof(buf)-1] = '\0';
+-
+       fd = Fopen(buf, "r.fpio");
+       if (fd == NULL || Ferror(fd)) {
+           if (fd) (void) Fclose(fd);
This page took 0.070482 seconds and 4 git commands to generate.