Provided by: manpages-pl_20051117-1_all bug

NAZWA

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

SKŁADNIA

       patch [opcje] [plikoryginalny [plikzat]]

       lecz zazwyczaj po prostu

       patch -pnum <plikzat

OPIS

       Patch pobiera plik z łatą, który może zawierać jedną z czterech postaci
       różnic, dawanych przez program diff(1).  Jeśli plikzat 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 (na 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 moe 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ł:

        +o 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.

        +o 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.

        +o 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:

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

        +o 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.

        +o 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.

        +o 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 plikaty,  --input=plikaty
          Odczytuje  łatę  z  plikuaty.   Jeśli  plikiematy  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:

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

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

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

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

           +o 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.

        +o 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.

        +o 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.

        +o 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.

        +o 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.

        +o 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.

        +o 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.