Dieses Programm entstand nachdem mir Pure C ein File zerschossen
hatte, aber auch im Normalfall ist es oft gut viele Backups zu haben.
Statt Pure C direkt zu starten, wird dieses Programm gestartet.
Es prüft nach welche Quellfiles nach dem letzten Backup geändert
wurden und sichert sie. Danach wird Pure C aufgerufen. Zum Start von PC
gibt es mehrere Möglichkeiten, u.a. indem man ihm ein CFG-File übergibt.
Dies hat den Vorteil, daß man wieder genau dort ist, wo man war als
man das letzte Mal an diesem Projekt gearbeitet hat, auch wenn man PC in
der Zwischenzeit für andere Zwecke benutzt hat. Da wohl auch nur für
solche Projekte ein automatisches Backup-System sinnvoll ist, habe ich
diese Methode ausgebaut.
Das Programm muß im gleichen Ordner wie PC.PRG sein. Der Einfachheit
halber sollte es als Anwendung auf *.cfg angemeldet werden. Ein Doppelklick
auf ein CFG ruft dann START_PC auf, dieses lädt die PRJ Datei (steht
im CFG) und prüft die markierten Files (s.u.). Ist ein File neuer
als das letzte Backup, so wird es gesichert. Dazu muß ein Zielordner
definiert werden, entweder über eine Environment-Variable oder im
PRJ File. Die Env heißt: PCBCK_DIR, ist diese nicht definiert, so
wird das PRJ nach 'PCBCK_DIR=' abgesucht. Also z.B.
; PCBCK_DIR=i:\backup\pcDas ';' ist nötig, damit PC die Zeile ignoriert.
Da man für den E-mailer Iconnect auf iconfset.cfg anmelden
soll, gibt es hier Probleme. Es muß dann auf
*.cfg&!iconfset.cfgangemeldet werden.
Eine spezielle Vorgehensweise beim Update ist nicht nötig,
da keine Konfigurationsfiles o.ä. existieren. Allerdings ist es sinnvoll,
von allen Projekten ein vollständiges Backup zu machen, da sonst *.h,
*.rsc,... Files erst dann gesichert werden, wenn sie sich das nächste
Mal ändern.
Es gibt 2 Backupmethoden: entweder gepackt oder ungepackt.
Gepackt: es muß entweder die Env PACKER geben oder eine entsprechende Zeile im PRJ, also z.B.:
In beiden Fällen wird außerdem ein Logfile geführt. In jeder Zeile des PRJ, die den Namen eines Files enthält, das ggf. gesichert werden soll, muß '#bck' stehen. Ist kein Pfad angegeben, so wird der des PRJ verwendet. Wird beim Start eine Umschalttaste gedrückt ( Kbshift(-1)!=0 ), wird ein vollständiges Backup gemacht, also unabhängig, ob das entsprechende File seit dem letzten Backup geändert wurde.; PACKER=g:\packer\lha\lharcger.ttpDann wird bei jedem Backup ein Verzeichnis BCK_9999.lzh erzeugt, dabei ist 9999 eine laufende Nummer, und lzh die Endung des benutzten Packers, kann also auch arc oder lha,... sein.Ungepackt: es wird ein Ordner BCK_9999 angelegt und alle Files dahinein kopiert. Da hier ohne Pfade kopiert wird, müssen alle Files unterschiedliche Namen haben.
Außerdem wird zu jedem PRJ-File das gleichnamige PDB-File
geladen. Darin ist eine Liste aller Quellfiles von denen das Programm abhängt.
Da hier aber auch teilweise veraltete Information drin ist, wollte ich
mich nicht nur auf dieses File stützen und bevorzuge die Methode mit
dem PRJ-File (s.o.). Allerdings war es ohne riesigen Aufwand nicht möglich,
aus dem PRJ-File die *.H Files zu ermitteln. Und genau dafür benutze
ich das PDB File jetzt. Genau gesagt funktioniert es so: alle Files, die
im PDB stehen, werden ggf. gesichert, es sei denn sie haben eine der folgenden
Endungen: *.c,*.C,*.s,*.S Für diese bleibt einzig und allein das PRJ
ausschlaggebend. Nachteil:
In beiden Fällen ist es nicht ganz so schlimm, da diese Files ja meist kurz sind und sich selten ändern. Im 2. Fall ist es sinnvoll, das PDB zu löschen und einmal 'Make all' in PC auszuführen. Zu jedem *.h wird ein passendes *.RSC gesucht und ggf. auch gesichert.Ein *.H wird auch dann gesichert, wenn es nur in einem *.C vorkommt, das selber nicht gesichert wird ggf. stehen im PDB noch Files, die in einer alten Version vorkamen, aber in der aktuellen nicht mehr.
Zur Veranschaulichung hier ein PRJ von mir:
;>>>>>>> Viewer.PRJ <<<<<<<<
; PACKER=g:\packer\lha\lharcger.ttp
Viewer.prg ; Name of executable program is topmost window
.C [ -Y ]
.L [ -L -Y ]
.S [ -Y ]
= ; List of modules follows...PCSTART.O ; startup Code
viewer.c ; c-Datei #bck
d:\soft_ent.w\biblioth.ek\gr_file ;#bck
d:\soft_ent.w\biblioth.ek\gr_fkt ;#bck
d:\soft_ent.w\biblioth.ek\gr_fkt_s.s ;#bck
d:\soft_ent.w\biblioth.ek\easyfsel ;#bck
d:\soft_ent.w\biblioth.ek\easyfs_s.s ;#bck
d:\soft_ent.w\biblioth.ek\fenster ;#bck
d:\soft_ent.w\biblioth.ek\fensters.s ;#bck
d:\soft_ent.w\biblioth.ek\gdps ;#bck
d:\soft_ent.w\biblioth.ek\my_err ;#bck
d:\soft_ent.w\biblioth.ek\my_mem ;#bck
d:\soft_ent.w\biblioth.ek\bezier ;#bck
d:\soft_ent.w\biblioth.ek\bezier_s.s ;#bck
d:\soft_ent.w\biblioth.ek\submenue\submenu ;#bck
;PCFLTLIB.LIB ; floating point library
PC881LIB.LIB ; floating point library
PCSTDLIB.LIB ; standard library
PCLNALIB.LIB ; LINEA library
PCEXTLIB.LIB ; extended library
PCTOSLIB.LIB ; TOS library
PCGEMLIB.LIB ; AES and VDI library
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
außerdem sind in meinem MAGX.INF die folgenden Zeilen enthalten:
#_ENV PCBCK_DIR=E:\BACKUP\PC\Die beiden Definitionen (PACKER und PCBCK_DIR) können natürlich auch beide oder nur eins im PRJ sein.
#_ENV PACKER=G:\PACKER\LHA\LHARCGER.TTP
Dies ist erst die Version 1.04. Außerdem ist es kein Programm
für DummUser, also wenn ich PACKER suche, ignoriere ich Packer, schließlich
ist es für C- Programmierer. Die Suchpfade sind beschränkt (s.o.).
Es wird nichts gelöscht, das muß man selber machen.
Das Programm ist Fairware, d.h. es kann beliebig benutzt und weitergegeben
werden. Es kann auch in PD Sammlungen aufgenommen werden oder kommerziellen
Programmen beigefügt werden. Wer es regelmäßig benutzt
sollte sich allerdings überlegen, ob es ihm nicht ein paar Mark wert
ist. Er bekommt dann auch Bescheid, wenn es eine neue Version gibt (per
Email).
PureC ist ein Warenzeichen von Application
Systems Heidelberg