bionic (1) patch.1.gz

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/.