From ecad436e9c017a41b291a1c3bfd803c22721feee Mon Sep 17 00:00:00 2001 From: christos Date: Sun, 8 Jan 2012 02:32:00 +0000 Subject: [PATCH] work for both X11R6 and X11R7 --- distrib/utils/sysinst/msg.mi.de | 16 +++++------ distrib/utils/sysinst/msg.mi.en | 16 +++++------ distrib/utils/sysinst/msg.mi.es | 16 +++++------ distrib/utils/sysinst/msg.mi.fr | 10 +++---- distrib/utils/sysinst/msg.mi.pl | 14 ++++----- distrib/utils/sysinst/upgrade.c | 50 ++++++++++++++++++++++----------- 6 files changed, 70 insertions(+), 52 deletions(-) diff --git a/distrib/utils/sysinst/msg.mi.de b/distrib/utils/sysinst/msg.mi.de index c6da0c54280b..182ae2042a2d 100644 --- a/distrib/utils/sysinst/msg.mi.de +++ b/distrib/utils/sysinst/msg.mi.de @@ -1,4 +1,4 @@ -/* $NetBSD: msg.mi.de,v 1.58 2012/01/07 18:54:30 christos Exp $ */ +/* $NetBSD: msg.mi.de,v 1.59 2012/01/08 02:32:00 christos Exp $ */ /* * Copyright 1997 Piermont Information Systems Inc. @@ -677,18 +677,18 @@ Aktualisierung wird abgebrochen. } message X_oldexists -{Der alte X Server /usr/X11R7/bin/X kann nicht als /usr/X11R7/bin/X.old +{Der alte X Server %s/bin/X kann nicht als %s/bin/X.old gesichert werden, da eine Datei mit diesem Namen bereits existiert. Bitte korrigieren Sie dies, bevor Sie fortfahren. Eine Möglichkeit ist es, im Extras-Menü eine Shell zu starten, -wodurch Sie /usr/X11R7/bin/X.old überprüfen können. Gehört diese Datei zu +wodurch Sie %s/bin/X.old überprüfen können. Gehört diese Datei zu einer früheren Aktualisierung, so können Sie diese mit rm -f -/usr/X11R7/bin/x.old löschen und danach die Aktualisierung neu starten. -Gehört die Datei /usr/X11R7/bin/X.old aber zu einer aktuellen, -abgebrochenen Aktualisierung, so können Sie die Datei /usr/X11R7/bin/X mit -mv /usr/X11R7/bin/X.old /usr/X11R7/bin/X wieder herstellen und die -unvollständige Aktualisierung fortsetzen. +%s/bin/x.old löschen und danach die Aktualisierung neu starten. +Gehört die Datei %s/bin/X.old aber zu einer aktuellen, +abgebrochenen Aktualisierung, so können Sie die Datei %s/bin/X mit +mv %s/bin/X.old %s/bin/X wieder herstellen und die +unvollständige Aktualisierung fortsetzen. %0s%0s%0s Aktualisierung wird abgebrochen.} diff --git a/distrib/utils/sysinst/msg.mi.en b/distrib/utils/sysinst/msg.mi.en index 3ed4bd3116cd..0c6d525188d2 100644 --- a/distrib/utils/sysinst/msg.mi.en +++ b/distrib/utils/sysinst/msg.mi.en @@ -1,4 +1,4 @@ -/* $NetBSD: msg.mi.en,v 1.166 2012/01/07 18:54:30 christos Exp $ */ +/* $NetBSD: msg.mi.en,v 1.167 2012/01/08 02:32:00 christos Exp $ */ /* * Copyright 1997 Piermont Information Systems Inc. @@ -649,16 +649,16 @@ message badetcfstab } message X_oldexists -{I cannot save /usr/X11R7/bin/X as /usr/X11R7/bin/X.old, because the -target disk already has an /usr/X11R7/bin/X.old. Please fix this before +{I cannot save %s/bin/X as %s/bin/X.old, because the +target disk already has an %s/bin/X.old. Please fix this before continuing. One way is to start a shell from the Utilities menu, examine the -target /usr/X11R7/bin/X and /usr/X11R7/bin/X.old. If -/usr/X11R7/bin/X.old is from a completed upgrade, you can rm -f -/usr/X11R7/bin/X.old and restart. Or if /usr/X11R7/bin/X.old is from -a recent, incomplete upgrade, you can rm -f /usr/X11R7/bin/X and mv -/usr/X11R7/bin/X.old to /usr/X11R7/bin/X. +target %s/bin/X and %s/bin/X.old. If +%s/bin/X.old is from a completed upgrade, you can rm -f +%s/bin/X.old and restart. Or if %s/bin/X.old is from +a recent, incomplete upgrade, you can rm -f %s/bin/X and mv +%s/bin/X.old to %s/bin/X Aborting upgrade.} diff --git a/distrib/utils/sysinst/msg.mi.es b/distrib/utils/sysinst/msg.mi.es index f7207f89a7e3..f5ea119581e6 100644 --- a/distrib/utils/sysinst/msg.mi.es +++ b/distrib/utils/sysinst/msg.mi.es @@ -1,4 +1,4 @@ -/* $NetBSD: msg.mi.es,v 1.36 2012/01/07 18:54:30 christos Exp $ */ +/* $NetBSD: msg.mi.es,v 1.37 2012/01/08 02:32:00 christos Exp $ */ /* * Copyright 1997 Piermont Information Systems Inc. @@ -669,16 +669,16 @@ Interrumpiendo la actualizaci } message X_oldexists -{No se puede guardar /usr/X11R7/bin/X como /usr/X11R7/bin/X.old, porque el -disco objetivo ya tiene un /usr/X11R7/bin/X.old. Por favor, arregle esto +{No se puede guardar %s/bin/X como %s/bin/X.old, porque el +disco objetivo ya tiene un %s/bin/X.old. Por favor, arregle esto antes de continuar. Una manera es iniciando una shell desde el menú Utilidades, y examinar -el objetivo /usr/X11R7/bin/X y /usr/X11R7/bin/X.old. Si -/usr/X11R7/bin/X.old es de una actualización completada, puede rm -f -/usr/X11R7/bin/X.old y reiniciar. O si /usr/X11R7/bin/X.old es de -una actualizacion reciente e incompleta, puede rm -f /usr/X11R7/bin/X -y mv /usr/X11R7/bin/X.old a /usr/X11R7/bin/X. +el objetivo %s/bin/X y %s/bin/X.old. Si +%s/bin/X.old es de una actualización completada, puede rm -f +%s/bin/X.old y reiniciar. O si %s/bin/X.old es de +una actualizacion reciente e incompleta, puede rm -f %s/bin/X +y mv %s/bin/X.old a %s/bin/X. Interrumpiendo la actualización.} diff --git a/distrib/utils/sysinst/msg.mi.fr b/distrib/utils/sysinst/msg.mi.fr index 5681be93537b..5f52c7f97e90 100644 --- a/distrib/utils/sysinst/msg.mi.fr +++ b/distrib/utils/sysinst/msg.mi.fr @@ -1,4 +1,4 @@ -/* $NetBSD: msg.mi.fr,v 1.116 2012/01/07 18:54:31 christos Exp $ */ +/* $NetBSD: msg.mi.fr,v 1.117 2012/01/08 02:32:00 christos Exp $ */ /* * Copyright 1997 Piermont Information Systems Inc. @@ -703,16 +703,16 @@ Ceci est une erreur majeure : nous ne pouvons continuer. message X_oldexists { -Impossible de sauvegarder /usr/X11R7/bin/X : le disque contient déjà -un fichier /usr/X11R7/bin/X.old et nous devons renommer l'actuel fichier +Impossible de sauvegarder %s/bin/X : le disque contient déjà +un fichier %s/bin/X.old et nous devons renommer l'actuel fichier avec ce nom. Veuillez supprimer ou renommer le fichier X.old avant de recommencer. Vous pouvez démarrer un shell depuis le menu "Utilitaires" afin de faire cette modification. Ce fichier provient probablement d'une ancienne mise à jour et il est possible de le supprimer. S'il provient d'une mise à jour -incomplète, vous pouvez effacer /usr/X11R7/bin/X et renommer -/usr/X11R7/bin/X.old en /usr/X11R7/bin/X. +incomplète, vous pouvez effacer %s/bin/X et renommer +%s/bin/X.old en %s/bin/X.%0s%0s%0s%0s%0s%0s Arrêt de la mise à jour. } diff --git a/distrib/utils/sysinst/msg.mi.pl b/distrib/utils/sysinst/msg.mi.pl index dedfbeb5b184..bc71d2e0ee27 100644 --- a/distrib/utils/sysinst/msg.mi.pl +++ b/distrib/utils/sysinst/msg.mi.pl @@ -1,4 +1,4 @@ -/* $NetBSD: msg.mi.pl,v 1.75 2012/01/07 18:54:31 christos Exp $ */ +/* $NetBSD: msg.mi.pl,v 1.76 2012/01/08 02:32:00 christos Exp $ */ /* Based on english version: */ /* NetBSD: msg.mi.pl,v 1.36 2004/04/17 18:55:35 atatat Exp */ @@ -648,15 +648,15 @@ message badetcfstab } message X_oldexists -{Nie moge zapisac /usr/X11R7/bin/X jako /usr/X11R7/bin/X.old, poniewaz -na docelowym dysku jest juz /usr/X11R7/bin/X.old. Napraw to przed kontynuacja. +{Nie moge zapisac %s/bin/X jako %s/bin/X.old, poniewaz +na docelowym dysku jest juz %s/bin/X.old. Napraw to przed kontynuacja. Jedyny sposob to uruchomic powloke z menu Narzedziowego i sprawdzic -docelowe /usr/X11R7/bin/X oraz /usr/X11R7/bin/X.old. Jesli -/usr/X11R7/bin/X.old pochodzi z zakonczonej aktualizacji, mozesz usunac -/usr/X11R7/bin/X.old i zrobic restart. Albo jesli /usr/X11R7/bin/X.old +docelowe %s/bin/X oraz %s/bin/X.old. Jesli +%s/bin/X.old pochodzi z zakonczonej aktualizacji, mozesz usunac +%s/bin/X.old i zrobic restart. Albo jesli %s/bin/X.old pochodzi z aktualnej niekompletnej aktualizacji, mozesz usunac -/usr/X11R7/bin/X i przeniesc /usr/X11R7/bin/X.old na /usr/X11R7/bin/X. +%s/bin/X i przeniesc %s/bin/X.old na %s/bin/X. Przerywamy aktualizacje.} diff --git a/distrib/utils/sysinst/upgrade.c b/distrib/utils/sysinst/upgrade.c index cfffc39531c1..af7d08830cbf 100644 --- a/distrib/utils/sysinst/upgrade.c +++ b/distrib/utils/sysinst/upgrade.c @@ -1,4 +1,4 @@ -/* $NetBSD: upgrade.c,v 1.52 2012/01/07 18:54:31 christos Exp $ */ +/* $NetBSD: upgrade.c,v 1.53 2012/01/08 02:32:00 christos Exp $ */ /* * Copyright 1997 Piermont Information Systems Inc. @@ -34,6 +34,7 @@ /* upgrade.c -- upgrade an installation. */ +#include #include #include #include @@ -44,8 +45,8 @@ /* * local prototypes */ -static int save_X(void); -static int merge_X(void); +static int save_X(const char *); +static int merge_X(const char *); /* * Do the system upgrade. @@ -76,7 +77,9 @@ do_upgrade(void) /* * Save X symlink, ... */ - if (save_X()) + if (save_X("/usr/X11R6")) + return; + if (save_X("/usr/X11R7")) return; #ifdef AOUT2ELF @@ -100,7 +103,8 @@ do_upgrade(void) if (!md_post_extract() == 0) return; - merge_X(); + merge_X("/usr/X11R6"); + merge_X("/usr/X11R7"); sanity_check(); } @@ -109,23 +113,31 @@ do_upgrade(void) * Save X symlink to X.old so it can be recovered later */ static int -save_X(void) +save_X(const char *xroot) { + char newx[MAXPATHLEN], oldx[MAXPATHLEN]; + + strlcpy(newx, xroot, sizeof(newx)); + strlcat(newx, "/bin/X", sizeof(newx)); + strlcpy(oldx, newx, sizeof(oldx)); + strlcat(oldx, ".old", sizeof(oldx)); + /* Only care for X if it's a symlink */ - if (target_symlink_exists_p("/usr/X11R7/bin/X")) { - if (target_symlink_exists_p("/usr/X11R7/bin/X.old")) { - msg_display(MSG_X_oldexists); + if (target_symlink_exists_p(newx)) { + if (target_symlink_exists_p(oldx)) { + msg_display(MSG_X_oldexists, xroot, xroot, xroot, + xroot, xroot, xroot, xroot, xroot, xroot, xroot, + xroot); process_menu(MENU_ok, NULL); return EEXIST; } #ifdef DEBUG - printf("saving /usr/X11R7/bin/X as .../X.old ..."); + printf("saving %s as %s ...", newx, oldx); #endif /* Move target .../X to .../X.old. Abort on error. */ - mv_within_target_or_die("/usr/X11R7/bin/X", - "/usr/X11R7/bin/X.old"); + mv_within_target_or_die(newx, oldx); } return 0; @@ -136,13 +148,19 @@ save_X(void) * sets has completed. */ static int -merge_X(void) +merge_X(const char *xroot) { - if (target_symlink_exists_p("/usr/X11R7/bin/X.old")) { + char newx[MAXPATHLEN], oldx[MAXPATHLEN]; + + strlcpy(newx, xroot, sizeof(newx)); + strlcat(newx, "/bin/X", sizeof(newx)); + strlcpy(oldx, newx, sizeof(oldx)); + strlcat(oldx, ".old", sizeof(oldx)); + + if (target_symlink_exists_p(oldx)) { /* Only move back X if it's a symlink - we don't want * to restore old binaries */ - mv_within_target_or_die("/usr/X11R7/bin/X.old", - "/usr/X11R7/bin/X"); + mv_within_target_or_die(oldx, newx); } return 0;