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 @@
+@@ -1820,23 +1820,37 @@
/* Expand ~/ to $HOME/ */
fn[0] = '\0';
if (r[0] == '~' && r[1] == '/') {
-+ const char * etc_dir = getenv("ETC_DIR");
++ const char * etc_dir = getenv("HOME_ETC");
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)
+- /* XXX Only /usr/lib/rpm/rpmrc must exist in default rcfiles list */
+- if (rcfiles == rpmRcfiles && myrcfiles != r)
- continue;
- rpmError(RPMERR_RPMRC, _("Cannot expand %s\n"), r);
- rc = 1;
- }
- 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);
+- r);
- rc = 1;
- break;
-- }
++ if (etc_dir) {
++ if (strlen(etc_dir) > (sizeof(fn) - strlen(r))) {
++ rpmError(RPMERR_RPMRC, _("Cannot read %s, HOME_ETC is too large.\n"),r);
++ rc = 1;
++ break;
++ }
++ strcpy(fn, etc_dir);
++ strncat(fn, "/", sizeof(fn) - strlen(fn));
++ r+=2;
++ } else {
++ if (home == NULL) {
++ /* XXX Only /usr/lib/rpm/rpmrc must exist in default rcfiles list */
++ if (rcfiles == rpmRcfiles && 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++;
+ }
- 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);
+ strncat(fn, r, sizeof(fn) - (strlen(fn) + 1));
+ fn[sizeof(fn)-1] = '\0';
+--- rpm-4.4.8/po/pl.po.orig 2007-04-08 16:11:42.125435004 +0200
++++ rpm-4.4.8/po/pl.po 2007-04-08 16:25:11.343549717 +0200
+@@ -3251,6 +3251,10 @@
+ msgid "Cannot expand %s\n"
+ msgstr "Nie mo¿na rozwin±æ %s\n"
+
++#: lib/rpmrc.c:1935
++msgid "Cannot read %s, HOME_ETC is too large.\n"
++msgstr "Nie mo¿na odczytaæ %s, HOME_ETC jest zbyt du¿e.\n"
++
+ #: lib/rpmrc.c:1924
+ #, c-format
+ msgid "Cannot read %s, HOME is too large.\n"