/ Forside/ Teknologi / Operativsystemer / Linux / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Brugen af Patch
Fra : GlemSom
Vist : 363 gange
100 point
Dato : 28-12-03 17:36

Jeg bruger patch 2.5.4 på mit system.
De sidste par dage har jeg leget lidt med patch - men der er stadig én ting som undre mig.

Taget fra patche's manual:
-r rejectfile or --reject-file=rejectfile
Put rejects into rejectfile instead of the default .rej file.

Hvis jeg f.eks. tager kildekoden fra et snapshot af BitlBee (http://get.bitlbee.org/devel/bitlbee-20031227.tar.gz). og prøver med.

Tager man f.eks. patchen fra "util" mappen ved navn "bitlbee-daemon.patch"
vil denne patch fejle et par steder.
Her er outputtet:

$ patch -r rejected -Np1 -i utils/bitlbee-daemon.patch
patching file Makefile
patching file account.c
patching file bitlbee.c
Hunk #1 FAILED at 32.
Hunk #2 succeeded at 550 (offset 5 lines).
Hunk #4 FAILED at 600.
2 out of 4 hunks FAILED -- saving rejects to file rejected
patching file bitlbee.h
Hunk #3 FAILED at 77.
1 out of 3 hunks FAILED -- saving rejects to file rejected
patching file commands.c
patching file conf.c
patching file conf.h
patching file crypting.c
patching file help.c
patching file help.h
patching file ini.c
patching file ini.h
patching file irc.c
Hunk #2 succeeded at 55 (offset 5 lines).
Hunk #4 succeeded at 418 (offset 5 lines).
Hunk #5 succeeded at 729 (offset 7 lines).
Hunk #6 succeeded at 735 (offset 5 lines).
Hunk #7 succeeded at 759 (offset 7 lines).
Hunk #8 succeeded at 940 (offset 5 lines).
Hunk #9 succeeded at 1270 (offset 7 lines).
Hunk #10 FAILED at 1292.
1 out of 10 hunks FAILED -- saving rejects to file rejected
patching file irc.h
Hunk #1 succeeded at 34 with fuzz 2 (offset 5 lines).
Hunk #2 FAILED at 68.
Hunk #3 succeeded at 86 with fuzz 2 (offset 3 lines).
Hunk #4 succeeded at 103 (offset 4 lines).
1 out of 4 hunks FAILED -- saving rejects to file rejected
patching file log.c
patching file log.h
patching file nick.c
patching file protocols/nogaim.c
Hunk #1 succeeded at 51 (offset 1 line).
Hunk #3 succeeded at 215 (offset 38 lines).
Hunk #4 succeeded at 356 (offset 1 line).
Hunk #5 succeeded at 772 (offset 38 lines).
Hunk #6 succeeded at 876 (offset 1 line).
patching file protocols/nogaim.h
Hunk #1 FAILED at 273.
1 out of 1 hunk FAILED -- saving rejects to file rejected
patching file set.c
patching file set.h
patching file user.c

Som det ses fra outputtet fejler et par hunks ved denne patch.
Det er naturligvis ikke underligt eftersom det er et snapshot, og ikke en stable release.

Prøver man derefter at se HVAD der egentlig gik galt, skulle dette jo stå i filen "rejected".
Lad os nu se hvad der så gik galt:
$ cat rejected
***************
*** 273,278 ****
void nogaim_init();
struct gaim_connection *gc_nr( int i );
int proto_away( struct gaim_connection *gc, char *away );

gboolean auto_reconnect( gpointer data );
void cancel_auto_reconnect( struct account *a );
--- 273,279 ----
void nogaim_init();
struct gaim_connection *gc_nr( int i );
int proto_away( struct gaim_connection *gc, char *away );
+ char *set_eval_away_devoice( irc_t *irc, set_t *set, char *value );

gboolean auto_reconnect( gpointer data );
void cancel_auto_reconnect( struct account *a );

Som det her kan ses indeholder filen "rejected" KUN informationer om den sidste hunk.
Dette er i filen nogaim.h, og er forholdsvis trivielt at rette selv.

Men ser man outputtet fra da der blev patched, var der mere end denne ene sektion
som fejlede.

En midlertidlig fix er at droppe "-r", og derved smider patch alle de rejectede dataer ud
i .rej filer.
I et forholdsvis lille program som BitlBee gør det dog ikke noget, men hvis det var et større program kunne det let bliver uoverskueligt.

Mit spørgsmål lyder på om man ikke på en forholdsvis let måde kan gemme alt rejected data i én fil?
Ligesom "-r" funktionen egentlig burde gøre (efter min mening)

 
 
Du har følgende muligheder
Dette spørgsmål er blevet annulleret, det er derfor ikke muligt for at tilføje flere kommentarer.
Søg
Reklame
Statistik
Spørgsmål : 177429
Tips : 31962
Nyheder : 719565
Indlæg : 6407949
Brugere : 218878

Månedens bedste
Årets bedste
Sidste års bedste