Provided by: manpages-pl_0.7-1_all bug

NAZWA

       patch - dołącz plik różnicowy do oryginału

SKŁADNIA

       patch [opcje] [plikoryginalny [plikzłatą]]

       lecz zazwyczaj po prostu

       patch -pnum <plikzłatą

OPIS

        Uwaga! To tłumaczenie może być nieaktualne!

       Patch  pobiera  plik  z łatą, który może zawierać jedną z czterech postaci różnic, dawanych przez program
       diff(1).  Jeśli plikzłatą jest pominięty lub jest myślnikiem, to łata  będzie  czytana  ze  standardowego
       wejścia.  Następnie dołącza te różnice do pliku oryginalnego, dając w efekcie wersję załataną. Domyślnie,
       wersja  załatana  jest  podstawiana  na  miejsce  oryginału.  Może też tworzyć kopie zapasowe zmienianego
       oryginału, zob. opcja -b lub --backup.  Kopia oryginału jest zapisywana obok, z rozszerzeniem ".orig"  (w
       systemach  nie  obsługujących  długich  nazw plików "~").  Postać nazwy kopii zapasowej można kontrolować
       przez opcje -b (--suffix), -B (--prefix), lub -V (--version-control).

       Nazwy plików do załatania są zwykle brane z pliku łaty, ale jeśli łatany  będzie  tylko  jeden  plik,  to
       można podać go w wierszu poleceń jako plikoryginalny.

       Podczas  uruchamiania,  patch  próbuje  sam  określić  rodzaj  listingu  różnicowego. Można to zrobić też
       ręcznie, opcjami -c (--context), -e (--ed), -n (--normal)  lub  -u  (--unified).   Różnice  typu  context
       (starego  rodzaju,  nowego rodzaju i unifikowane (unified)) są nanoszone na oryginał wprost przez program
       patch, podczas gdy różnice ed są po prostu przesyłane poprzez potok do edytora ed(1).

       Patch próbuje automatycznie pominąć wszelkie śmieci znajdujące się przed fragmentem  różnicowym,  dokonać
       załatania  i  znowu  pominąć  śmieci,  znajdujące  się za różnicą. Tak więc przekazanie patchowi, różnicy
       znajdującej się np. w wiadomości pocztowej, powinno działać.  Jeśli całość różnic jest wcięta o  ten  sam
       rozmiar,  lub  różnice  kontekstowe  zawierają linie zakończone parami CRLF, lub są raz bądź wielokrotnie
       zakapsułkowane przez poprzedzenie ciągiem "- " linii zaczynających się od "-", jak podano w RFC  934,  to
       jest to poprawnie uwzględniane w łataniu.

       W  przypadku  różnic  typu  context i w mniejszym stopniu różnic typu normal, patch potrafi wykryć, kiedy
       numery linii wymienione w łacie są nieprawidłowe i  spróbuje  znaleźć  właściwe  miejsce.  Jako  pierwszy
       strzał,  używany  jest  numer  linii użyty w badanym kawałku plus lub minus offset użyty do zaaplikowania
       poprzedniego kawałka. Jeśli nie jest  to  właściwe  miejsce,  nastąpi  skanowanie  w  przód  i  wstecz  w
       poszukiwaniu  zestawu  linii odpowiadającego podanemu kontekstowi.  Na początek, szukane jest miejsce, do
       którego pasują wszystkie linie fragmentu.  Jeśli nie uda się go znaleźć i mamy do czynienia  z  różnicami
       kontekstowymi  a  współczynnik  `maximum  fuzz factor' jest ustawiony na 1 lub więcej, to skanowanie jest
       powtarzane, lecz teraz ignoruje pierwszą i ostatnią linię kontekstu.   Jeśli  i  to  zawiedzie,  a  wyżej
       wymieniony  współczynnik jest ustawiony na 2 lub więcej, to ignorowane będą dwie pierwsze i dwie ostatnie
       linie.  (Domyślnym współczynnikiem  jest  2.)   Jeśli  patch  nie  może  znaleźć  właściwego  miejsca  do
       zaaplikowania  fragmentu  różnicy,  to  wstawi  go  do  pliku  odrzuceń,  który  normalnie ma nazwę pliku
       wyjściowego, z dopisaną końcówką .rej (lub # jeśli .rej utworzyłoby zbyt długą nazwę pliku. Jeśli dodanie
       nawet pojedynczego znaku # powoduje, że nazwa pliku staje się za  długa,  to  #  zastępuje  ostatni  znak
       nazwy).   (Zauważ, że odrzucony fragment zostanie wyprodukowany jako różnica typu context, niezależnie od
       postaci łaty wejściowej. Jeśli była ona typu normal, wiele kontekstów będzie po prostu pustych.)   Numery
       linii  w  pliku  odrzuceń  mogą  być inne niż w łacie: odzwierciedlają one przypuszczalną pozycję w nowym
       pliku, do której prawdopodobnie należą odrzucone fragmenty.

       Gdy obróbka fragmentu jest zakończona, zostaniesz poinformowany, czy zakończyła się sukcesem, czy też się
       nie powiodła i w której linii (nowego pliku) wg patcha ten fragment powinien się znaleźć.  Jeśli jest ona
       inna od numeru linii, podanego w pliku różnicowym, zostaniesz poinformowany o offsecie.  Pojedynczy  duży
       offset  może  być  wskazówką,  że  fragment  zainstalowano  w  złym  miejscu.  Jeśli  do porównania użyto
       współczynnika `fuzz factor', to też będziesz o tym poinformowany, gdyż może  to  być  podejrzane.   Jeśli
       użyłeś opcji --verbose, zostaniesz też powiadomiony o fragmentach dopasowanych dokładnie.

       Jeśli  w  linii  komend  nie  podano  żadnego  pliku  oryginalnego, patch spróbuje go odgadnąć ze śmieci,
       zawartych w pliku z różnicą, stosując poniższe zasady.

       Najpierw buduje uporządkowaną listę kandydatur według takich reguł:

         Jeśli nagłówek jest nagłówkiem różnicy typu context, nazwa starego i nowego pliku odczytywana  jest  z
          niego.  Nazwa pliku jest ignorowana jeśli ma za mało ukośników dla opcji -pnum lub --strip=num.  Nazwa
          /dev/null jest również ignorowana.

         Jeśli w początkowych śmieciach jest linia Index: i albo brakuje obu nazw, starego i nowego pliku, albo
          patch działa zgodnie z POSIX, to pobierana jest nazwa z tej linii.

         W poniższych regułach zakłada się, że rozważane nazwy plików są uporządkowane (stary,  nowy,  indeks),
          niezależnie od kolejności, w jakiej występują w nagłówku.

       Następnie patch wybiera nazwę pliki z listy potencjalnych nazw:

         Jeśli  któryś  z  wymienionych  plików  istnieje,  to  wybierana jest pierwsza nazwa zgodna z POSIX, w
          przeciwnym razie najlepsza.

         Jeżeli patch nie ignoruje RCS, ClearCase i SCCS (zob. opcję -g num lub --get=num), a tak wskazany plik
          istnieje, ale znaleziono główną (master) pozycję RCS, ClearCase lub SCCS,  wybrany  zostanie  pierwszy
          plik wymieniony w tej pozycji.

         Jeśli nie istnieje plik o danej nazwie, nie znaleziono głównej pozycji RCS, ClearCase lub SCCS, podano
          jakieś  nazwy,  patch  nie  stosuje  się do POSIX, zaś łata wymaga utworzenia pliku, to wybierana jest
          najlepsza nazwa wymagająca stworzenia najmniejszej liczby katalogów.

         Jeśli powyższy algorytm heurystyczny nie da żadnej nazwy pliku, to zostaniesz o  nią  zapytany.   Poza
          tym,  jeśli w prowadzących śmieciach znajduje linia "Prereq: ", patch spróbuje pobrać pierwsze słowo z
          tej linii (zwykle numer wersji) i sprawdzić czy istnieje ono w pliku  wejściowym.   Jeśli  nie,  patch
          zapyta o potwierdzenie przed kontynuacją.

       Efektem tego wszystkiego jest to, że powinieneś być w stanie podać w interfejsie newsów następujące:

            | patch -d /usr/src/local/blurfl

       i tym samym załatać katalog blurfl bezpośrednio z artykułu, który zawiera łatę.

       Jeśli  plik  z łatą składa się z więcej niż jednej łaty, program patch spróbuje zaaplikować je tak, jakby
       przyszły w osobnych plikach z łatami.  Znaczy to  między  innymi  tyle,  że  nazwa  łatanego  pliku  jest
       określana  dla każdego listingu różnic z osobna i że śmieci, znajdujące się przed każdym z listingów będą
       analizowane jak opisano wyżej.  Do kolejnych łat można przekazywać opcje (i inną oryginalną nazwę pliku),
       oddzielając odpowiadające listy argumentów znakiem '+'.  (Lista argumentów kolejnej łaty nie musi  jednak
       podawać nowej nazwy pliku z łatą.)

OPCJE

       -b, --backup
          Tworzy  pliki kopii zapasowych.  To znaczy, przy łataniu pliku, zamiast usuwania oryginału tworzy jego
          kopię lub zmienia nazwę. Jako kopia zapasowa pliku,  który  nie  istniał  tworzony  jest  pusty  plik,
          zastępczo  reprezentujący  nieistniejący  oryginał.   Sposób  ustalania  nazw  plików kopii zapasowych
          opisano przy opcjach -V lub --version-control.

       --backup-if-mismatch
          Tworzy kopię zapasową jeśli łata nie pasuje dokładnie do pliku a nie zażądano w inny sposób  tworzenia
          kopii. Jest to zachowanie domyślne, chyba że patch działa zgodnie z POSIX.

       --no-backup-if-mismatch
          Nie tworzy kopii zapasowej jeśli łata nie pasuje dokładnie do pliku i jeśli nie zażądano w inny sposób
          tworzenia kopii.  Jest to zachowanie domyślne gdy patch działa zgodnie z POSIX.

       -B pref, --prefix=pref
          Poprzedza  przedrostkiem  pref  nazwę  pliku podczas tworzenia nazwy zwykłej kopii.  Na przykład, przy
          -B /junk/ nazwą zwykłej kopii dla src/patch/util.c jest /junk/src/patch/util.c.

       --binary
          Za wyjątkiem standardowego wyjścia i /dev/tty, wszystkie pliki czyta i  zapisuje  w  trybie  binarnym.
          Opcja  ta  nie ma żadnych skutków na systemach zgodnych z POSIX.  Na systemach podobnych do DOS, gdzie
          ma znaczenie, łata powinna być tworzona przy użyciu diff -a --binary.

       -c,  --context
          Wymusza interpretację pliku z łatą jako różnicy typu context.

       -d kat,  --directory=katalog
          Powoduje interpretację katalogu jako katalogu, który ma być  bieżącym  i  przechodzi  do  niego  przed
          zrobieniem czegokolwiek innego.

       -D symb,  --ifdef=symb
          Powoduje   używanie   konstrukcji   "#ifdef...#endif"  do  oznaczania  zmian.   symb  będzie  symbolem
          różnicującym.

       --dry-run
          Wypisuje wynik łatania bez faktycznego zmieniania plików.

       -e,  --ed
          Wymusza interpretację pliku z łatą jako skryptu ed.

       -E,  --remove-empty-files
          Powoduje, że usuwane są pliki wyjściowe, które po zaaplikowaniu łat są puste.  Zwykle użycie tej opcji
          nie jest konieczne, gdyż program potrafi zbadać znaczniki  czasu  w  nagłówku  i  stwierdzić,  czy  po
          naniesieniu łat plik powinien istnieć.  Jeśli jednak wejście nie jest plikiem różnic kontekstowych lub
          gdy patch działa zgodnie z POSIX, puste załatane pliki nie będą usuwane, dopóki nie zostanie podana ta
          opcja.  Podczas usuwania pliku patch usiłuje usunąć również jego puste katalogi nadrzędne.

       -f,  --force
          Wymusza  założenie,  że użytkownik dokładnie wie co robi i powoduje niezadawanie pytań. Pomija łaty, z
          których nagłówków nie wynika, jaki plik powinien być załatany; pliki są łatane nawet  jeśli  mają  złą
          wersję  dla linii Prereq:; zakłada, że łaty nie są odwrócone, nawet jeśli tak wyglądają.  Opcja ta nie
          eliminuje komentarzy; do tego użyj -s.

       -F num,  --fuzz=num
          Ustawia współczynnik `maximum fuzz factor'.  Opcja ta tyczy się tylko różnic typu context i  powoduje,
          że  patch  ignoruje maksymalnie tyle linii, zaglądając w miejsca, gdzie ma zainstalować fragment łaty.
          Zauważ, że duży współczynnik zwiększa prawdopodobieństwo nieprawidłowego  naniesienia  łaty.  Domyślną
          wartością jest 2 i nie może być ustawiona na więcej niż liczba linii kontekstu w różnicy, czyli zwykle
          3.

       -g num,  --get=num
          Steruje  akcjami programu patch gdy oryginalny plik jest pod kontrolą RCS lub SCCS, a nie istnieje lub
          jest przeznaczony tylko dla odczytu.  Także wtedy, gdy jest pod kontrolą ClearCase,  a  nie  istnieje.
          Jeżeli  num jest dodatnie, to pobiera (get) lub aktualizuje (check out) plik z danego systemu kontroli
          wersji (revision control system).  Jeśli wynosi zero, patch ignoruje  system  kontroli  wersji  i  nie
          pobiera pliku; jeśli num jest ujemne, to pyta użytkownika czy pobrać plik.  Domyślna wartość tej opcji
          określana  jest  wartością  zmiennej środowiska PATCH_GET jeśli takowa istnieje; jeśli nie, to wartość
          domyślna jest zerem, gdy patch działa zgodnie z POSIX, w przeciwnym razie jest ujemna.

       -i plikłaty,  --input=plikłaty
          Odczytuje łatę z plikułaty.  Jeśli plikiemłaty jest -, to ze standardowego wejścia, domyślnie.

       -l,  --ignore-whitespace
          Wykonuje swobodniejsze porównywanie wzorców, w przypadku, gdy w pliku pozamieniano tabulacje i spacje.
          Dowolna sekwencja białych spacji (znaków tabulacji lub spacji) w linii pliku  łaty  będzie  odpowiadać
          dowolnej  sekwencji  białych  spacji  oryginalnego pliku.  Ciągi białych spacji występujące na końcach
          linii są ignorowane.  Normalne znaki muszą wciąż dokładnie pasować. Każda linia kontekstu  nadal  musi
          pasować do linii oryginalnego pliku.

       -n,  --normal
          Powoduje, że plik z łatą jest interpretowany jak różnica typu `normal'.

       -N,  --forward
          powoduje ignorowanie łat, które wydają się być odwrócone lub już zaaplikowane.  Zobacz też -R.

       -o plik-wyj,  --output=plik-wyj
          Zamiast łatania bezpośrednio oryginalnych plików, wynik jest kierowany do plik-wyj.

       -pnum,  --strip=num
          Z  każdej  nazwy  pliku  znalezionej  w  pliku  łaty  ujmuje  najmniejszy  przedrostek zawierający num
          początkowych ukośników.  Ciąg kilku  sąsiadujących  ukośników  liczy  się  za  jeden  ukośnik.   Opcję
          przewidziano  na  wypadek  gdybyś przechowywał pliki w innym katalogu niż osoba, która przesłała łatę.
          Na przykład, załóżmy, że nazwa pliku w łacie miała wartość

               /u/howard/src/blurfl/blurfl.c

          ustawienie -p lub -p0 nie zmienia jej, -p1 daje

               u/howard/src/blurfl/blurfl.c

          bez początkowego ukośnika, a -p4 daje

               blurfl/blurfl.c

          natomiast niepodanie -p w ogóle, daje po prostu blurfl.c.  Wynik tej operacji jest poszukiwany albo  w
          katalogu bieżącym, albo w katalogu podanym przez opcję -d.

       --posix
          Postępuje bardziej zgodnie ze standardem POSIX:

            Dociekając  nazw plików z nagłówków różnic z listy (stary, nowy, indeks) bierze pierwszy istniejący
             plik.

            Nie usuwa plików, które po załataniu stają się puste.

            Nie pyta o pobieranie plików z RCS, ClearCase czy SCCS.

            Wymaga, by w wierszu poleceń wszystkie opcje występowały przed nazwami plików.

            Nie tworzy kopii zapasowych przy wystąpieniu niezgodności.

       --quoting-style=wyraz
          Używa stylu wyraz do cytowania nazw wyjściowych.  Wyraz powinien być jednym z poniższych:

          literal
                 Wypisuje nazwy bez zmian.

          shell  Cytuje nazwy dla powłoki jeśli  zawierają  metaznaki  powłoki  lub  spowodowałyby  dwuznaczność
                 wyniku.

          shell-always
                 Cytuje nazwy dla powłoki, nawet wtedy, gdy normalnie nie wymagałyby cytowania.

          c      Cytuje nazwy jak dla łańcuchów w języku C.

          escape Cytuje jak z c, z wyjątkiem tego, iż pomija otaczające znaki cudzysłowu.

          Wartość  domyślną  opcji  --quoting-style  można określić za pomocą zmiennej środowiska QUOTING_STYLE.
          Jeśli nie jest ona ustawiona, to wartością domyślną jest shell.

       -r plik-odrz,  --reject-file=plik-odrz
          Odrzucone poprawki są umieszczane w zadanym pliku-odrz, a nie w domyślnym pliku odrzuceń .rej.

       -R,  --reverse
          Mówi, że łata ta została utworzona przy zamienionych miejscami starych i nowych plikach [tłum. zamiast
          `diff -c stary nowy' użyto pomyłkowo `diff -c nowy stary'].   (Tak,  obawiam  się  że  czasem  się  to
          zdarza,   natura  ludzka  jest  jaka  jest.)   Patch  Spróbuje  zamienić  każdy  fragment  przed  jego
          zaaplikowaniem. Odrzucenia wyjdą w formacie zamienionym (swapped).  Opcja -R nie działa  ze  skryptami
          różnicowymi eda gdyż jest tam zbyt mało danych do zrekonstruowania operacji odwrotnej.

          Jeśli  pierwszy  fragment łaty zawiedzie, patch odwraca ten fragment, sprawdzając czy nie może być tak
          zaaplikowany.  Jeśli może, zostaniesz zapytany czy chcesz ustawić opcję -R.  Jeśli  nie,  łata  będzie
          aplikowana dalej w sposób tradycyjny.  (Uwaga: metoda ta nie może wykryć łaty odwróconej jeśli jest to
          różnica typu normal i jeśli pierwszą komendą jest doklejanie (append) (tj. powinno to być kasowanie --
          delete).  Jest  tak  dlatego,  że  doklejanie  zawsze  działa,  gdyż  pusty  kontekst pasuje wszędzie.
          Szczęśliwym trafem, wiele  łat  raczej  dodaje  lub  zmienia  linie  niż  je  kasuje,  więc  większość
          odwróconych różnic typu normal zaczyna się od kasowania, co zawiedzie i wywoła heurystykę.)

       -s,  --silent,  --quiet
          Powoduje, że patch działa cicho, chyba że pojawi się błąd.

       -t,  --batch
          Podobne  do  -f,  gdyż  eliminuje  pytania,  lecz  działa  według innych założeń: pomija łaty, których
          nagłówki nie zawierają nazw plików (tak samo jak -f), pomija łaty dla plików ze złymi wersjami Prereq:
          i przyjmuje, że łaty są odwrócone, jeśli na takie wyglądają.

       -T,  --set-time
          Ustawia czasy modyfikacji i ostatniego dostępu załatanych plików według znaczników  czasu  podanych  w
          nagłówkach  różnic  typu  context,  zakładając,  że  nagłówki  te stosują czas lokalny.  Opcja ta jest
          niezalecana, gdyż użycie łat korzystających z czasu lokalnego przez osoby z innych stref czasowych nie
          jest łatwe.  Ponadto znaczniki czasu lokalnego nie są jednoznaczne w przypadku, gdy zegar lokalny jest
          cofany w związku z dostosowywaniem do czasu letniego.  Zamiast tej opcji, powinno się tworzyć  łaty  z
          czasem uniwersalnym (UTC) i stosować opcję -Z lub --set-utc.

       -u,  --unified
          Wymusza interpretację łaty jako różnicy typu unified context (zunifikowana różnica kontekstowa).

       -V metoda,  --version-control=metoda
          -V  metoda,  --version--control=metoda  Powoduje,  że  metoda  staje  się metodą tworzenia nazw plików
          zapasowych.  Rodzaje  robionych  kopii  zapasowych  można  również  podać  w  zmiennej   środowiskowej
          PATCH_VERSION_CONTROL   (lub,   jeśli   nie  jest  ustawiona,  zmienną  VERSION_CONTROL),  która  jest
          przesłaniana przez tę opcję.  Wybrana metoda nie ma wpływu na to, czy kopie zapasowe będą  wykonywane,
          i  w  jakich przypadkach.  Określa tylko sposób tworzenia nazw plików zapasowych.  Wartość metody jest
          podobna jak zmiennej  `version-control'  GNU  Emacsa.   Patch  rozpoznaje  też  ich  bardziej  opisowe
          synonimy.  Poprawne wartości to (przyjmowane są rozróżnialne skróty):

          numbered  lub  t
             Tworzy  zawsze  numerowane  kopie  zapasowe.   Nazwą numerowanej kopii zapasowej pliku F jest F.~N~
             gdzie N to numer wersji.

          existing  lub  nil
             Tworzy numerowane kopie zapasowe plików, które już je mają, a zwykłe  kopie  dla  pozostałych.  Tak
             jest domyślnie.

          `never' lub `simple'
             Zawsze  robi  zwykłe  kopie  zapasowe.   Opcje  -B  lub --prefix, -Y lub --basename-prefix i -z lub
             --suffix określają nazwę pliku zwykłej kopii zapasowej.   Jeżeli  nie  podano  żadnej  z  nich,  to
             stosowany   jest   przyrostek  zwykłej  kopii  zapasowej.   Jest  to  wartość  zmiennej  środowiska
             SIMPLE_BACKUP_SUFFIX, jeśli jest ona ustawiona, lub .orig w przeciwnym razie.

          Przy kopiach numerowanych lub zwykłych, jeśli nazwa pliku kopii zapasowej jest zbyt długa, to  zamiast
          niej używa się przyrostka kopii ~.  Jeżeli nawet dodanie ~ spowodowałoby, że nazwa będzie za długa, to
          ~ zastępuje ostatni znak nazwy pliku.

       --verbose
          Wypisuje dodatkowe informacje o wykonywanej pracy.

       -x num,  --debug=num
          ustawia wewnętrzne flagi debuggowe. Ma to znaczenie tylko dla łataczy programu patch.

       -Y pref,  --basename-prefix=pref
          Przy  tworzeniu  nazwy  zwykłej  kopii  poprzedza przedrostkiem pref podstawową część nazwy pliku.  Na
          przykład,  przy  -Y .del/  nazwą   pliku   zwykłej   kopii   zapasowej   dla   src/patch/util.c   jest
          src/patch/.del/util.c.

       -z suffix,  --suffix=suffix
          Powoduje,  że  suff  jest interpretowane jako przyrostek nazw zwykłych kopii zapasowych.  Na przykład,
          przy -z - nazwą pliku zwykłej kopii kopii dla  src/patch/util.c  jest  src/patch/util.c-.   Przyrostek
          kopii  można  też określić za pomocą zmiennej środowiska SIMPLE_BACKUP_SUFFIX, która jest przesłaniana
          przez tę opcję.

       -Z,  --set-utc
          Ustawia czasy modyfikacji i ostatniego dostępu załatanych plików według znaczników  czasu  podanych  w
          nagłówkach  różnic  typu  context,  zakładając,  że nagłówki te stosują czas uniwersalny - Coordinated
          Universal Time (UTC, znany też jako czas średni Greenwich GMT).  Zobacz też opcja -T lub --set-time.

          Opcje -Z lub --set-utc i -T lub --set-time normalnie powstrzymują się od ustawiania czasu pliku  jeśli
          jego  oryginalny  czas  nie  pasuje  do  czasu  podanego  w nagłówku łaty lub jej zawartość nie pasuje
          dokładnie do łaty.  Jednak, jeśli podano opcję -f lub  --force,  to  czas  pliku  jest  ustawiany  bez
          względu na niezgodności.

          Z  powodu  ograniczeń  formatu  wyjściowego stosowanego przez diff, opcje te nie potrafią aktualizować
          czasów plików, których zawartość się nie zmieniła.  Wykorzystując te  opcje  powinno  się  pamiętać  o
          usunięciu  (np.  za  pomocą  make clean)  wszystkich plików, które zależą od załatanych, by późniejsze
          wywołania make nie zostały zmylone czasem załatanych plików.

       --help
          Wypisuje listę opcji i kończy działanie.

       -v,  --version
          Wypisuje wersję programu i kończy działanie.

ŚRODOWISKO

       PATCH_GET
          Określa, czy patch powinien domyślnie pobierać brakujące lub przeznaczone tylko  do  odczytu  pliki  z
          RCS, ClearCase lub SCCS. Zobacz opis opcji -g lub --get.

       POSIXLY_CORRECT
          Jeśli  jest  ustawiona,  patch  ściślej stosuje się do standardu POSIX w zachowaniu domyślnym.  Zobacz
          opis opcji --posix.

       QUOTING_STYLE
          Domyślna wartość opcji --quoting-style.

       SIMPLE_BACKUP_SUFFIX
          Przyrostek stosowany do tworzenia nazw plików zwykłych kopii zapasowych .orig.

       TMPDIR, TMP, TEMP
          Katalog do przechowywania plików tymczasowych.  patch wykorzystuje pierwszą zmienną środowiska  z  tej
          listy,  jaka  jest  ustawiona.  Jeśli żadna nie jest, wartość domyślna zależy od systemu: normalnie na
          maszynach uniksowych jest to /tmp.

       VERSION_CONTROL lub PATCH_VERSION_CONTROL
          Wybiera metodę kontroli wersji kopii pliku; zobacz opcja -v lub --version-control.

PLIKI

       $TMPDIR/p∗
          pliki tymczasowe

       /dev/tty
          terminal sterujący; używany do uzyskania odpowiedzi na pytania zadawane użytkownikowi.

ZOBACZ TAKŻE

       diff(1) ed(1).

       Marshall T. Rose and Einar A. Stefferud, Proposed Standard for Message Encapsulation,  Internet  RFC  934
       <URL:ftp://ftp.isi.edu/in-notes/rfc934.txt> (1985-01).

UWAGI DLA WYSYŁAJĄCYCH ŁATY

       Istnieje kilka rzeczy, o których należy pamiętać przy wysyłaniu łat.

       Twórz łatę według sprawdzonego schematu.  Dobrą metodą jest polecenie diff -Naur stary nowy gdzie stary i
       nowy  identyfikują  stary  i  nowy  katalog.   Nazwy stary i nowy nie powinny zawierać żadnych ukośników.
       Nagłówki z poleceń diff  powinny  zawierać  daty  i  czasy  czasu  uniwersalnego  (UTC)  z  zastosowaniem
       tradycyjnego  formatu  uniksowego,  by  odbiorcy  łaty  mogli  skorzystać  z opcji -Z lub --set-utc.  Oto
       przykładowe polecenie, z użyciem składni powłoki Bourne'a:

            LC_ALL=C TZ=UTC0 diff -Naur gcc-2.7 gcc-2.8

       Powiadom odbiorców, jak zaaplikować łatę, wskazując, do którego katalogu przejść cd i jakich opcji  patch
       użyć.  Zalecany jest łańcuch opcji -Np1.  Wypróbuj procedurę stawiając się na miejscu odbiorcy i stosując
       łatę na kopię oryginalnych plików.

       Możesz  oszczędzić  ludziom  wielu  problemów,  zachowując plik patchlevel.h Jest on łatany aby zwiększyć
       poziom łaty (patch level).  Umieść go jako pierwszą różnicę w pliku z łatą,  który  wysyłasz.   Jeśli  do
       łaty wstawisz linię Prereq:, to nie pozwoli ona na stosowanie łat poza kolejnością bez ostrzeżenia.

       Możesz utworzyć plik u odbiorcy wysyłając mu różnicę z porównania /dev/null lub pusty plik o dacie równej
       Epoce  (1970-01-01  00:00:00  UTC)  z  plikiem, który chcesz stworzyć.  Zadziała to tylko jeśli plik taki
       jeszcze nie istnieje w katalogu docelowym.  I odwrotnie, możesz usunąć plik wysyłając różnicę kontekstową
       porównującą plik do usunięcia z pustym plikiem datowanym na Epokę.   Plik  nie  zostanie  usunięty  jeśli
       patch  działa  zgodnie z POSIX a nie podano opcji -E lub --remove-empty-files.  Prostą metodą generowania
       łat, które tworzą i usuwają pliki  jest  użycie  opcji  -N  lub  --new-file  programu  GNU  diff.   Jeśli
       spodziewasz się, że odbiorca użyje opcji -pN, nie wysyłaj wyjścia wyglądającego tak:

            diff -Naur v2.0.29/prog/README prog/README
            --- v2.0.29/prog/README   Mon Mar 10 15:13:12 1997
            +++ prog/README   Mon Mar 17 14:58:22 1997

       bo  obie  nazwy  plików  mają  różną  liczbę ukośników, a rozmaite wersje patch różnie interpretują nazwy
       plików.  Unikniesz mylnej interpretacji, wysyłając zamiast tego takie wyjście:

            diff -Naur v2.0.29/prog/README v2.0.30/prog/README
            --- v2.0.29/prog/README   Mon Mar 10 15:13:12 1997
            +++ v2.0.30/prog/README   Mon Mar 17 14:58:22 1997

       Unikaj wysyłania  łat  porównujących  pliki  o  takich  nazwach,  jakie  mają  kopie  zapasowe,  jak  np.
       README.orig,  gdyż może to zmylić patch, tak że będzie nakładał łatę na plik kopii zamiast na rzeczywisty
       plik.  Zamiast tego powinieneś wysyłać łaty porównujące  pliki  o  takich  samych  nazwach  podstawowych,
       położone w różnych katalogach, np. old/README i new/README.

       Uważaj  by  nie  wysyłać  łat  odwrotnych, gdyż powoduje to, że ludzie zastanawiają się czy już załączyli
       łatę.

       Nie próbuj budować łat, które zmieniały by pliki pochodne  (np.  plik  configure,  w  którym  jest  linia
       configure:  configure.in  w  swoim makefile), ponieważ odbiorca i tak powinien być w stanie je odtworzyć.
       Jeśli musisz wysłać różnice plików pochodnych, utwórz je  używając  czasu  uniwersalnego  UTC;   odbiorcy
       powinni  zaaplikować  łątę stosując opcję -Z lub --set-utc, a następnie usunąć wszystkie niełatane pliki,
       które zależą od właśnie załatanych (np. za pomocą make clean).

       Mimo iż można umieścić 582 listingów różnic w jednym pliku, to lepiej wstawić grupy  powiązanych  łat  do
       osobnych plików.

       Poza  tym, upewnij się, że podałeś poprawnie nazwy plików, zarówno w nagłówku różnicy kontekstowej, jak i
       w linii Index:.  Jeśli łatasz coś w podkatalogu, upewnij się, że powiadomiłeś użytkownika, by podał opcję
       -p.

DIAGNOSTYKA

       Zbyt wiele by tu wymieniać, lecz ogólnie wskazują, że patch nie mógł przetworzyć pliku z łatą.

       Jeśli podano opcję --verbose, komunikat Hmm... wskazuje, że w pliku z łatą jest nieprzetworzony  tekst  i
       że patch próbuje domyślić się, czy znajduje się w nim łata, a jeśli tak, to jakiego jest rodzaju.

       Patch kończy pracę z kodem 0 jeśli wszystkie kawałki zaaplikowano poprawnie, 1 jeśli jakieś nie mogły być
       zaaplikowane, a 2 w przypadku poważniejszych kłopotów.  Podczas aplikowania zbioru łat w pętli, umożliwia
       ci sprawdzenie tego kodu, tak by nie dołączać już reszty łat do częściowo połatanego pliku.

ZASTRZEŻENIA

       Różnice  kontekstowe  nie  mogą  wiarygodnie  odwzorowywać tworzenia lub usuwania pustych plików, pustych
       katalogów czy plików specjalnych, jak dowiązania symboliczne.  Nie potrafią  też  reprezentować  zmian  w
       metadanych  pliku,  takich jak właściciel, grupa, prawa czy to, że jeden plik jest twardym dowiązaniem do
       drugiego.  Jeśli takie zmiany są również wymagane, łacie powinny towarzyszyć  osobne  instrukcje  (np.  w
       postaci skryptu powłoki).

       Patch  nie potrafi stwierdzić, czy w skrypcie ed nie istnieją numery linii, a w normalnych różnicach może
       wykryć niewłaściwe numery tylko gdy odnajdzie  zmianę  lub  usunięcie.   Różnica  kontekstowa,  używająca
       współczynnika  `fuzz  factor'  3  może  mieć  podobne  problemy.  Dopóki  nie  zostanie  dodany  właściwy
       interaktywny interfejs użytkownika, powinieneś raczej  w  tych  wypadkach  robić  różnice  typu  context.
       Zobaczysz  czy  zmiany  mają  sens. Oczywiście kompilowanie bez błędów jest całkiem dobrym wskazaniem, że
       łata zadziałała, lecz nie jest to zawsze prawda.

       Patch zwykle daje prawidłowe wyniki, nawet gdy  musi  dużo  zgadywać.  Jednak  rezultaty  mają  gwarancję
       prawidłowości  tylko  wtedy, gdy łaty aplikowane są do dokładnie tej samej wersji pliku, z której zostały
       wygenerowane.

KWESTIE ZGODNOŚCI

       Standard POSIX podaje zachowanie, które różni się od  tradycyjnego  zachowania  się  patcha.   Powinieneś
       pamiętać  o  tych różnicach jeśli musisz współpracować z patch w wersji 2.1 lub wcześniejszymi, które nie
       są zgodne z POSIX.

         W tradycyjnym patchu argument opcji -p był opcjonalny, a gołe -p było równoważne -p0.   Obecnie  opcja
          -p  wymaga  argumentu,  a  -p 0  jest teraz równoważnikiem -p0.  Dla zachowania maksymalnej zgodności,
          stosuj opcje typu -p0 i -p1.

          Ponadto, tradycyjny patch po prostu zlicza ukośniki przy  obcinaniu  przedrostków  ścieżkowych;  patch
          liczy  obecnie  składowe  nazwy  pliku.   To znaczy, ciąg sąsiadujących ukośników liczy się obecnie za
          jeden ukośnik.  Dla zachowania maksymalnej zgodności, unikaj wysyłania łat zawierających // w  nazwach
          plików.

         W  tradycyjnym  patchu,  tworzenie kopii zapasowych było włączone domyślnie.  Zachowanie to jest teraz
          włączane opcją -b lub --backup.

          I odwrotnie, w POSIX-owym patch, kopie nigdy nie są tworzone, nawet jeśli wystąpi niedopasowanie łaty.
          W GNU patch, zachowanie to jest włączane opcją --no-backup-if-mismatch lub przez włączenie zgodności z
          POSIX opcją --posix albo ustawieniem zmiennej środowiska POSIXLY_CORRECT.

          Opcja -b suffix tradycyjnego patch jest równoważna opcjom -b -z suffix dla GNU patch.

         Tradycyjny patch stosuje skomplikowaną (i nie w pełni udokumentowaną) metodę domyślania się z nagłówka
          łaty nazwy pliku do załatania.  Metoda ta nie jest zgodna z POSIX i ma kilka niepoprawnie zakodowanych
          fragmentów  [gotchas].   Obecny  patch  korzysta  z   innej,   równie   skomplikowanej   (ale   lepiej
          udokumentowanej)  metody,  która  jest  opcjonalnie zgodna z POSIX; mamy nadzieję, że ma mniej błędów.
          Obie te metody są ze sobą zgodne jeśli nazwy plików w nagłówku różnicy kontekstowej i w  linii  Index:
          po  obcięciu  przedrostka  są  identyczne.   Normalnie łata jest zgodna jeśli wszystkie nazwy plików w
          nagłówku zawierają tę samę liczbę ukośników.

         Gdy tradycyjny patch zadawał użytkownikowi pytanie,  kierował  je  na  standardowe  wyjście  błędów  i
          oczekiwał  odpowiedzi  z  pierwszego  pliku  poniższej  listy będącego terminalem: standardowe wyjście
          błędów, standardowe  wyjście,  /dev/tty,  i  standardowe  wejście.   Teraz  patch  wysyła  pytania  na
          standardowe  wyjście  i  pobiera  odpowiedzi  z /dev/tty.  Zmieniono domyślne odpowiedzi na niektóre z
          pytań.  Dzięki  temu  patch  nigdy  nie  wchodzi  w  nieskończoną  pętlę  przy  stosowaniu  domyślnych
          odpowiedzi.

         Tradycyjny  patch  kończył  działanie z kodem równym liczbie błędnych fragmentów, albo z kodem 1 jeśli
          napotkano poważny problem.  Obecnie patch kończy działanie z kodem 1 jeśli nie udało  się  zaaplikować
          jakichś fragmentów, albo 2 jeśli napotkano poważny problem.

         Wysyłając  instrukcje  określające  sposób  skorzystania  z  łaty przez kogoś pracującego z GNU patch,
          tradycyjnym patchem, lub patch em zgodnym z POSIX  ogranicz  się  do  podanych  niżej  opcji.   W  tym
          zestawieniu spacje są znaczące, a argumenty wymagane.

             -c
             -d kat
             -D symb
             -e
             -l
             -n
             -N
             -o plik-wyj
             -pnum
             -R
             -r plik-odrz

BŁĘDY

       Zgłoszenia błędów proszę wysyłać do <bug-gnu-utils@gnu.org>.

       Mógłby  być  sprytniejszy  co  do  częściowych  trafień,  nadmiernie  odbiegających  od  normy offsetów i
       zamienionego kodu, lecz wymagałoby to dodatkowego przebiegu.

       Jeśli kod został powielony (np. #ifdef STARYKOD ... #else ... #endif), patch nie może załatać obu wersji,
       i jeśli w ogóle zadziała, prawdopodobnie załata niewłaściwą i powie, że udało mu się z obydwiema.

       Jeśli aplikujesz łatę, którą już zaaplikowałeś, patch pomyśli  że  jest  to  odwrotna  łata  i  zaoferuje
       zdjęcie łaty.  Można to uważać za zaprojektowaną funkcję programu.

KOPIOWANIE

       Copyright 1984, 1985, 1986, 1988 Larry Wall.
       Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.

       Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice
       and this permission notice are preserved on all copies.

       Permission  is  granted  to copy and distribute modified versions of this manual under the conditions for
       verbatim copying, provided that the entire resulting derived work is distributed under  the  terms  of  a
       permission notice identical to this one.

       Permission is granted to copy and distribute translations of this manual into another language, under the
       above  conditions  for  modified  versions,  except  that  this  permission  notice  may  be  included in
       translations approved by the copyright holders instead of in the original English.

AUTORZY

       Larry Wall napisał pierwotną wersję  patcha.   Paul  Eggert  usunął  istniejące  w  programie  arbitralne
       ograniczenia.   Dodał  obsługę  plików binarnych, ustawianie czasów pliku i usuwanie plików, i uczynił go
       bardziej zgodnym z POSIX-em.  Swój wkład wnieśli też Wayne Davison, który dodał obsługę formatu  unidiff,
       i David MacKenzie, który dołożył obsługę ustawień i kopii zapasowych.

INFORMACJE O TŁUMACZENIU

       Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia Manuali i może nie być aktualne.
       W  razie  zauważenia  różnic  między powyższym opisem a rzeczywistym zachowaniem opisywanego programu lub
       funkcji, prosimy o zapoznanie się z oryginalną (angielską) wersją strony podręcznika za pomocą polecenia:

              man --locale=C 1 patch

       Prosimy  o  pomoc  w  aktualizacji  stron  man  -   więcej   informacji   można   znaleźć   pod   adresem
       http://sourceforge.net/projects/manpages-pl/.

GNU                                               21 marca 1998                                         PATCH(1)