work for both X11R6 and X11R7

This commit is contained in:
christos 2012-01-08 02:32:00 +00:00
parent 56ed22796c
commit ecad436e9c
6 changed files with 70 additions and 52 deletions

View File

@ -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. * Copyright 1997 Piermont Information Systems Inc.
@ -677,18 +677,18 @@ Aktualisierung wird abgebrochen.
} }
message X_oldexists 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. gesichert werden, da eine Datei mit diesem Namen bereits existiert.
Bitte korrigieren Sie dies, bevor Sie fortfahren. Bitte korrigieren Sie dies, bevor Sie fortfahren.
Eine Möglichkeit ist es, im Extras-Menü eine Shell zu starten, 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 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. %s/bin/x.old löschen und danach die Aktualisierung neu starten.
Gehört die Datei /usr/X11R7/bin/X.old aber zu einer aktuellen, Gehört die Datei %s/bin/X.old aber zu einer aktuellen,
abgebrochenen Aktualisierung, so können Sie die Datei /usr/X11R7/bin/X mit abgebrochenen Aktualisierung, so können Sie die Datei %s/bin/X mit
mv /usr/X11R7/bin/X.old /usr/X11R7/bin/X wieder herstellen und die mv %s/bin/X.old %s/bin/X wieder herstellen und die
unvollständige Aktualisierung fortsetzen. unvollständige Aktualisierung fortsetzen. %0s%0s%0s
Aktualisierung wird abgebrochen.} Aktualisierung wird abgebrochen.}

View File

@ -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. * Copyright 1997 Piermont Information Systems Inc.
@ -649,16 +649,16 @@ message badetcfstab
} }
message X_oldexists message X_oldexists
{I cannot save /usr/X11R7/bin/X as /usr/X11R7/bin/X.old, because the {I cannot save %s/bin/X as %s/bin/X.old, because the
target disk already has an /usr/X11R7/bin/X.old. Please fix this before target disk already has an %s/bin/X.old. Please fix this before
continuing. continuing.
One way is to start a shell from the Utilities menu, examine the 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 target %s/bin/X and %s/bin/X.old. If
/usr/X11R7/bin/X.old is from a completed upgrade, you can rm -f %s/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 %s/bin/X.old and restart. Or if %s/bin/X.old is from
a recent, incomplete upgrade, you can rm -f /usr/X11R7/bin/X and mv a recent, incomplete upgrade, you can rm -f %s/bin/X and mv
/usr/X11R7/bin/X.old to /usr/X11R7/bin/X. %s/bin/X.old to %s/bin/X
Aborting upgrade.} Aborting upgrade.}

View File

@ -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. * Copyright 1997 Piermont Information Systems Inc.
@ -669,16 +669,16 @@ Interrumpiendo la actualizaci
} }
message X_oldexists message X_oldexists
{No se puede guardar /usr/X11R7/bin/X como /usr/X11R7/bin/X.old, porque el {No se puede guardar %s/bin/X como %s/bin/X.old, porque el
disco objetivo ya tiene un /usr/X11R7/bin/X.old. Por favor, arregle esto disco objetivo ya tiene un %s/bin/X.old. Por favor, arregle esto
antes de continuar. antes de continuar.
Una manera es iniciando una shell desde el menú Utilidades, y examinar 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 el objetivo %s/bin/X y %s/bin/X.old. Si
/usr/X11R7/bin/X.old es de una actualización completada, puede rm -f %s/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 %s/bin/X.old y reiniciar. O si %s/bin/X.old es de
una actualizacion reciente e incompleta, puede rm -f /usr/X11R7/bin/X una actualizacion reciente e incompleta, puede rm -f %s/bin/X
y mv /usr/X11R7/bin/X.old a /usr/X11R7/bin/X. y mv %s/bin/X.old a %s/bin/X.
Interrumpiendo la actualización.} Interrumpiendo la actualización.}

View File

@ -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. * Copyright 1997 Piermont Information Systems Inc.
@ -703,16 +703,16 @@ Ceci est une erreur majeure : nous ne pouvons continuer.
message X_oldexists message X_oldexists
{ {
Impossible de sauvegarder /usr/X11R7/bin/X : le disque contient déjà Impossible de sauvegarder %s/bin/X : le disque contient déjà
un fichier /usr/X11R7/bin/X.old et nous devons renommer l'actuel fichier 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 avec ce nom. Veuillez supprimer ou renommer le fichier X.old avant de
recommencer. recommencer.
Vous pouvez démarrer un shell depuis le menu "Utilitaires" afin Vous pouvez démarrer un shell depuis le menu "Utilitaires" afin
de faire cette modification. de faire cette modification.
Ce fichier provient probablement d'une ancienne mise à jour et Ce fichier provient probablement d'une ancienne mise à jour et
il est possible de le supprimer. S'il provient d'une mise à jour il est possible de le supprimer. S'il provient d'une mise à jour
incomplète, vous pouvez effacer /usr/X11R7/bin/X et renommer incomplète, vous pouvez effacer %s/bin/X et renommer
/usr/X11R7/bin/X.old en /usr/X11R7/bin/X. %s/bin/X.old en %s/bin/X.%0s%0s%0s%0s%0s%0s
Arrêt de la mise à jour. Arrêt de la mise à jour.
} }

View File

@ -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: */ /* Based on english version: */
/* NetBSD: msg.mi.pl,v 1.36 2004/04/17 18:55:35 atatat Exp */ /* NetBSD: msg.mi.pl,v 1.36 2004/04/17 18:55:35 atatat Exp */
@ -648,15 +648,15 @@ message badetcfstab
} }
message X_oldexists message X_oldexists
{Nie moge zapisac /usr/X11R7/bin/X jako /usr/X11R7/bin/X.old, poniewaz {Nie moge zapisac %s/bin/X jako %s/bin/X.old, poniewaz
na docelowym dysku jest juz /usr/X11R7/bin/X.old. Napraw to przed kontynuacja. na docelowym dysku jest juz %s/bin/X.old. Napraw to przed kontynuacja.
Jedyny sposob to uruchomic powloke z menu Narzedziowego i sprawdzic Jedyny sposob to uruchomic powloke z menu Narzedziowego i sprawdzic
docelowe /usr/X11R7/bin/X oraz /usr/X11R7/bin/X.old. Jesli docelowe %s/bin/X oraz %s/bin/X.old. Jesli
/usr/X11R7/bin/X.old pochodzi z zakonczonej aktualizacji, mozesz usunac %s/bin/X.old pochodzi z zakonczonej aktualizacji, mozesz usunac
/usr/X11R7/bin/X.old i zrobic restart. Albo jesli /usr/X11R7/bin/X.old %s/bin/X.old i zrobic restart. Albo jesli %s/bin/X.old
pochodzi z aktualnej niekompletnej aktualizacji, mozesz usunac 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.} Przerywamy aktualizacje.}

View File

@ -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. * Copyright 1997 Piermont Information Systems Inc.
@ -34,6 +34,7 @@
/* upgrade.c -- upgrade an installation. */ /* upgrade.c -- upgrade an installation. */
#include <sys/param.h>
#include <stdio.h> #include <stdio.h>
#include <curses.h> #include <curses.h>
#include <errno.h> #include <errno.h>
@ -44,8 +45,8 @@
/* /*
* local prototypes * local prototypes
*/ */
static int save_X(void); static int save_X(const char *);
static int merge_X(void); static int merge_X(const char *);
/* /*
* Do the system upgrade. * Do the system upgrade.
@ -76,7 +77,9 @@ do_upgrade(void)
/* /*
* Save X symlink, ... * Save X symlink, ...
*/ */
if (save_X()) if (save_X("/usr/X11R6"))
return;
if (save_X("/usr/X11R7"))
return; return;
#ifdef AOUT2ELF #ifdef AOUT2ELF
@ -100,7 +103,8 @@ do_upgrade(void)
if (!md_post_extract() == 0) if (!md_post_extract() == 0)
return; return;
merge_X(); merge_X("/usr/X11R6");
merge_X("/usr/X11R7");
sanity_check(); sanity_check();
} }
@ -109,23 +113,31 @@ do_upgrade(void)
* Save X symlink to X.old so it can be recovered later * Save X symlink to X.old so it can be recovered later
*/ */
static int 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 */ /* Only care for X if it's a symlink */
if (target_symlink_exists_p("/usr/X11R7/bin/X")) { if (target_symlink_exists_p(newx)) {
if (target_symlink_exists_p("/usr/X11R7/bin/X.old")) { if (target_symlink_exists_p(oldx)) {
msg_display(MSG_X_oldexists); msg_display(MSG_X_oldexists, xroot, xroot, xroot,
xroot, xroot, xroot, xroot, xroot, xroot, xroot,
xroot);
process_menu(MENU_ok, NULL); process_menu(MENU_ok, NULL);
return EEXIST; return EEXIST;
} }
#ifdef DEBUG #ifdef DEBUG
printf("saving /usr/X11R7/bin/X as .../X.old ..."); printf("saving %s as %s ...", newx, oldx);
#endif #endif
/* Move target .../X to .../X.old. Abort on error. */ /* Move target .../X to .../X.old. Abort on error. */
mv_within_target_or_die("/usr/X11R7/bin/X", mv_within_target_or_die(newx, oldx);
"/usr/X11R7/bin/X.old");
} }
return 0; return 0;
@ -136,13 +148,19 @@ save_X(void)
* sets has completed. * sets has completed.
*/ */
static int 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 /* Only move back X if it's a symlink - we don't want
* to restore old binaries */ * to restore old binaries */
mv_within_target_or_die("/usr/X11R7/bin/X.old", mv_within_target_or_die(oldx, newx);
"/usr/X11R7/bin/X");
} }
return 0; return 0;