我在将 .diff 补丁添加到文件时遇到一些问题。补丁文件本身似乎没问题,但它不断给出错误:
\n\nroot@pipiripi:/home/tomek/mad# patch mifare-mad.pl < pastie1.diff\npatching file mifare-mad.pl\npatch: **** malformed patch at line 434: \nRun Code Online (Sandbox Code Playgroud)\n\n补丁的代码是:
\n\n--- mifare-mad.pl 2011-02-06 08:41:06.000000000 +0100\n+++ mifare-mad.pl 2012-06-28 10:59:36.000000000 +0200\n@@ -7,16 +7,20 @@\n # MIFARE Application Directory (MAD)\n # http://www.nxp.com/acrobat_download2/other/identification/MAD_overview.pdf\n\n-use Data::Dump qw(dump);\n+use Data::Dumper;\n\n my $debug = $ENV{DEBUG} || 0;\n\n my $function_clusters;\n my $mad_id;\n+my $wkm_ttid;\n+my $wkm_pos;\n+my $wkm_line;\n\n while(<DATA>) {\n chomp;\n next if m/^#?\\s*$/;\n+ $_=~s/\\s+#.*//;\n my ( $code, $function ) = split(/\\s+/,$_,2);\n my $h = \'[0-9A-F]\';\n if ( $code =~ m/^($h{2})-($h{2})$/ ) {\n@@ -25,6 +29,15 @@\n }\n } elsif ( $code =~ m/^($h{2})$/ ) {\n $function_clusters->{ lc $code } = $function;\n+ } elsif ( $code =~ m/^WKM_TTID:($h{2})$/i ) {\n+ my (undef,$ttid) = split(/:/,$code,2);\n+ $wkm_ttid->{lc $ttid}=$function;\n+ } elsif ( $code =~ m/^WKM_POS:($h{2})$/i ) {\n+ my (undef,$pos) = split(/:/,$code,2);\n+ $wkm_pos->{lc $pos}=$function;\n+ } elsif ( $code =~ m/^WKM_LINE:(\\d+|\\d+x\\d+)$/i ) {\n+ my (undef,$line) = split(/:/,$code,2);\n+ $wkm_line->{lc $line}=$function;\n } elsif ( $code =~ m/^($h{4})$/ ) {\n $mad_id->{ lc $1 } = $function;\n } else {\n@@ -32,6 +45,10 @@\n }\n }\n\n+sub bin2dec {\n+ return unpack("N", pack("B32", substr("0" x 32 . shift, -32)));\n+}\n+\n my $access_condition_data = {\n 0b000 => \'R:AB W:AB I:AB DTR:AB transport conf\',\n 0b010 => \'R:AB W:-- I:-- DTR:-- r/w block\',\n@@ -62,8 +79,10 @@\n\n\n if ( $debug ) {\n- warn "# function_clusters ",dump($function_clusters);\n- warn "# mad_id ", dump($mad_id);\n+ warn "# function_clusters ",Dumper($function_clusters);\n+ warn "# mad_id ", Dumper($mad_id);\n+ warn "# wkm_ttid ", Dumper($wkm_ttid);\n+ warn "# wkm_line ", Dumper($wkm_line);\n }\n\n local $/ = undef;\n@@ -76,6 +95,9 @@\n\n my $pos = 0;\n\n+my $wkm=0;\n+my $zdm=0;\n+\n foreach my $sector ( 0 .. 39 ) {\n\n my $blocks = $sector < 32 ? 4 : 16;\n@@ -151,6 +173,7 @@\n ;\n\n my $condition = \'\';\n+\n foreach my $j ( 0 .. $blocks - 1 ) {\n my $offset = $pos + $j * 0x10;\n my $block = substr($card, $offset, 0x10);\n@@ -188,6 +211,7 @@\n\n my $hex = unpack(\'H*\',$block);\n $hex =~ s/(....)/$1 /g;\n+ $hex =~ s/0000/..../g; #/k./\n\n if ( $ENV{SWAP} ) {\n my $hex_sw = unpack(\'h*\',$block);\n@@ -196,6 +220,100 @@\n }\n\n printf "%x %03x %s%s\\n", $j, $offset, $hex, $condition;\n+\n+ # -----------------\n+\n+ if ($sector == 1 and $j == 0 and substr($block,0,1) eq "\\x10") {\n+ $wkm = 1;\n+ my (undef,$ttid,undef,$pos,undef) = unpack(\'H2 H2 H8 H2 H*\',$block);\n+ my ($card_b1, $card_b2, $card_b3, $card_b4) = unpack(\'H2 H2 H2 H2\',substr($card,0,4));\n+ printf "# WKM: karta nr %03d %08d\\n# WKM: [numer kontraktu %d] %s (%s) POS: %s\\n", hex($card_b4), hex($card_b3 . $card_b2 . $card_b1), hex($ttid), ($wkm_ttid->{$ttid})?$wkm_ttid->{$ttid}:\'kontrakt nieznany\', (hex($ttid)%2==1)?\'stara taryfa\':\'nowa taryfa\',($wkm_pos->{$pos})?$wkm_pos->{$pos}:$pos;\n+ }\n+\n+ if ($wkm and $sector == 1 and $j == 1) {\n+ my $selector = unpack(\'H*\',substr($block,0,1));\n+ printf "# WKM: ostatnie skasowanie w sektorze %s\\n", $selector+2;\n+ }\n+\n+ if ($wkm and ($sector == 2 or $sector == 3) and $j == 0 and substr($block,0,1) eq "\\x10") {\n+ my (undef,$ti,$ty,$tm,$td,$th,$tt,$vy,$vm,$vd,$vh,$vt,$vl,$vb,$vs)=unpack(\'A8 A8 A7 A4 A5 A5 A6 A7 A4 A5 A5 A6 A14 A10 A*\',unpack(\'B*\',$block));\n+ # print Dumper($tt,$ti,$ty,$tm,$td,$th,$tt,$vy,$vm,$vd,$vh,$vt,$vl,$vb,$vs);\n+ printf "# WKM: [skasowanie %d]\\n# WKM: kontrakt wazny do: 20%02d/%02d/%02d %02d:%02d\\n# WKM: bilet skasowany w: 20%02d/%02d/%02d %02d:%02d linia: %s %s: %s%s\\n", \n+ &bin2dec($ti),\n+ &bin2dec($ty),\n+ &bin2dec($tm),\n+ &bin2dec($td),\n+ &bin2dec($th),\n+ &bin2dec($tt),\n+ &bin2dec($vy),\n+ &bin2dec($vm),\n+ &bin2dec($vd),\n+ &bin2dec($vh),\n+ &bin2dec($vt),\n+ # &bin2dec($vl),\n+ ($wkm_line->{&bin2dec($vl)})?$wkm_line->{&bin2dec($vl)}:&bin2dec($vl),\n+ # &bin2dec($vb),\n+ ($wkm_line->{(&bin2dec($vl).\'x\'.&bin2dec($vb))})?\'stacja\':\'brygada\',\n+ ($wkm_line->{(&bin2dec($vl).\'x\'.&bin2dec($vb))})?$wkm_line->{(&bin2dec($vl).\'x\'.&bin2dec($vb))}:&bin2dec($vb),\n+ ($vs>0)?(\' extra dane: \'.&bin2dec($vs)):\'\';\n+ }\n+\n+ # -----------------\n+\n+ if ($sector == 7 and $j == 0 and substr($block,0,2) eq "\\x01\\x01") {\n+ $zdm = 1;\n+ my (undef, # trailer \\x01\\x01\n+ $loadno,\n+ undef, # always \\x00\n+ $loadday,\n+ $loadmonth,\n+ $loadyear,\n+ $validday,\n+ $validmonth,\n+ $validyear,\n+ $pos_group,\n+ $pos_no,\n+ $unknown1,\n+ $unknown2) # ???\n+ = unpack(\'v c c c c v c c v c c H2 H2\', $block);\n+ printf "# ZDM: karta zaladowana %d raz, data ladowania: %04d/%02d/%02d, data waznosci %04d/%02d/%02d, punkt sprzedazy: %03d\\\\%d extra 2 bajty: %s %s\\n", $loadno, $loadyear, $loadmonth, $loadday, $validyear, $validmonth, $validday, $pos_no, $pos_group, $unknown1, $unknown2;\n+ }\n+\n+ if ($zdm and $sector == 7 and ($j == 1 or $j == 2)) {\n+ my ($credits1,\n+ $const_0000,\n+ $checksum,\n+ $const_ffff,\n+ $credits2,\n+ $const_000000ff00ff)\n+ = unpack (\'v H4 v H4 v H12\', $block);\n+ printf "# ZDM: Unexpected value %s - should be 0000\\n", $const_0000 if $const_0000 ne \'0000\';\n+ printf "# ZDM: Unexpected value %s - should be ffff\\n", $const_ffff if $const_ffff ne \'ffff\';\n+ printf "# ZDM: Unexpected value %s - should be 000000ff00ff\\n", $const_000000ff00ff if $const_000000ff00ff ne \'000000ff00ff\';\n+ printf "# ZDM: Credits mismatch\\n" if $credits1 ne $credits2;\n+ printf "# ZDM: Verify mismatch\\n" if 65535 - $credits1 ne $checksum; # (0xffff - credits = checksum)\n+ printf "# ZDM: [%s] %.2f zl\\n", ($j==1)?\'srodki na karcie\':\'wartosc doladowania\', $credits1/10;\n+ }\n+\n+ if ($zdm and $sector == 8 and $j == 0) {\n+ my ($transday,\n+ $transmonth,\n+ $unknown1,\n+ $transhour,\n+ $transminute,\n+ $const1,\n+ $transno,\n+ $transval,\n+ $const2,\n+ $transid,\n+ $unknown2)\n+ = unpack (\'c c H2 c c H6 c v H4 v H2\', $block);\n+ printf "# ZDM: Unexpected value %s - should be 000000\\n", $const1 if $const1 ne \'000000\';\n+ printf "# ZDM: Unexpected value %s - should be 0000\\n", $const2 if $const2 ne \'0000\';\n+ printf "# ZDM: [ostatnia tranzakcja] dzien=%02d miesiac=%02d godzina=%02d:%02d numer=%d identyfikator=%d oplata=%.2f zl, extra 2 bajty: %s %s\\n", $transday, $transmonth, $transhour, $transminute, $transno, $transid, $transval/10, $unknown1, $unknown2 if $transval ne 0;\n+ }\n+\n+ # -----------------\n }\n\n printf "KEY A:%s | %s GDP: %s | B:%s %s\\n"\n@@ -292,3 +410,243 @@\n 887C - electronic purse MIKROELEKTRONIKA spol.s.r. MIKROELEKTRONIKA spol.s.r.o. Europe 4 01.05.2009 electronic purse\n 887D - electronic purse Mikroelektronika spol.s r.o Mikroelektronika spol.s r.o EUROPE,Czech R 4 01.08.2009 Electronic purse\n\n+WKM_TTID:00 czysty bilet\n+WKM_TTID:02 bilet jednorazowy strefa 1, normalny\n+WKM_TTID:16 bilet dobowy strefa 1, normalny\n+WKM_TTID:18 bilet trzydniowy strefa 1, normalny\n+WKM_TTID:21 bilet dobowy strefa 1, normalny (nowa)\n+WKM_TTID:22 bilet trzydniowy strefa 1, normalny\n+WKM_TTID:23 bilet dobowy strefa 1, normalny\n+WKM_TTID:24 bilet trzydniowy strefa 1, normalny\n+WKM_TTID:25 bilet siedmiodniowy strefa 1, normalny\n+WKM_TTID:27 bilet 14-dniowy strefa 1, normalny\n+WKM_TTID:29 bilet 30-dniowy imienny na 1 linie strefa 1, normalny\n+WKM_TTID:2a bilet 30-dniowy imienny na wszystkie linie strefa 1, normalny\n+WKM_TTID:2b bilet 30-dniowy imienny na wszystkie linie strefa 1, normalny\n+WKM_TTID:2e bilet 90-dniowy imienny na wszystkie linie strefa 1, normalny\n+WKM_TTID:2f bilet 90-dniowy imienny na wszystkie linie strefa 1, normalny\n+WKM_TTID:34 bilet jednorazowy strefa 1, ulgowy 50\n+WKM_TTID:48 bilet dobowy strefa 1, ulgowy 50\n+WKM_TTID:4a bilet trzydniowy strefa 1, ulgowy 50\n+WKM_TTID:53 bilet dobowy strefa 1, ulgowy 50\n+WKM_TTID:54 bilet trzydniowy strefa 1, ulgowy 50\n+WKM_TTID:55 bilet dobowy strefa 1, ulgowy 50\n+WKM_TTID:56 bilet trzydniowy strefa 1, ulgowy 50\n+WKM_TTID:57 bilet siedmiodniowy strefa 1, ulgowy 50\n+WKM_TTID:59 bilet 14-dniowy strefa 1, ulgowy 50\n+WKM_TTID:5b bilet 30-dniowy imienny na 1 linie strefa 1, ulgowy 50\n+WKM_TTID:5c bilet 30-dniowy imienny na wszystkie linie strefa 1, ulgowy 50 \n+WKM_TTID:5d bilet 30-dniowy imienny na wszystkie linie strefa 1, ulgowy 50\n+WKM_TTID:60 bilet 90-dniowy imienny na wszystkie linie strefa 1, ulgowy 50\n+WKM_TTID:61 bilet 90-dniowy imienny na wszystkie linie strefa 1, ulgowy 50\n+WKM_TTID:66 bilet jednorazowy strefa 1+2, normalny\n+WKM_TTID:6f bilet 20 minutowy strefa 1+2, normalny\n+WKM_TTID:70 bilet 40 minutowy strefa 1+2, normalny\n+WKM_TTID:71 bilet 60 minutowy strefa 1+2, normalny\n+WKM_TTID:7a bilet dobowy strefa 1+2, normalny\n+WKM_TTID:7c bilet trzydniowy strefa 1+2, normalny\n+WKM_TTID:85 bilet dobowy strefa 1+2, normalny\n+WKM_TTID:86 bilet trzydniowy strefa 1+2, normalny\n+WKM_TTID:87 bilet dobowy strefa 1+2, normalny\n+WKM_TTID:88 bilet trzydniowy strefa 1+2, normalny\n+WKM_TTID:89 bilet siedmiodniowy strefa 1+2, normalny\n+WKM_TTID:8b bilet 14-dniowy strefa 1+2, normalny\n+WKM_TTID:8d bilet 30-dniowy imienny na 1 linie strefa 1+2, normalny\n+WKM_TTID:8e bilet 30-dniowy imienny na wszystkie linie strefa 1+2, normalny\n+WKM_TTID:8f bilet 30-dniowy imienny na wszystkie linie strefa 1+2, normalny\n+WKM_TTID:90 bilet 30-dniowy na okaziciela na wszystkie linie strefa 1+2, normalny\n+WKM_TTID:91 bilet 30-dniowy na okaziciela na wszystkie linie strefa 1+2, normalny\n+WKM_TTID:92 bilet 90-dniowy imienny na wszystkie linie strefa 1+2, normalny\n+WKM_TTID:93 bilet 90-dniowy imienny na wszystkie linie strefa 1+2, normalny\n+WKM_TTID:94 bilet 90-dniowy na okaziciela na wszystkie linie strefa 1+2, normalny\n+WKM_TTID:95 bilet 90-dniowy na okaziciela na wszystkie linie strefa 1+2, normalny\n+WKM_TTID:96 bilet seniora, wa\xc4\xb9\xc5\xbany 365 dni na wszystkie linie strefa 1+2\n+WKM_TTID:98 bilet jednorazowy strefa 1+2, ulgowy\n+WKM_TTID:a1 bilet 20 minutowy strefa 1+2, ulgowy\n+WKM_TTID:a2 bilet 40 minutowy strefa 1+2, ulgowy\n+WKM_TTID:a3 bilet 60 minutowy strefa 1+2, ulgowy\n+WKM_TTID:ac bilet dobowy strefa 1+2, ulgowy\n+WKM_TTID:ae bilet trzydniowy strefa 1+2, ulgowy\n+WKM_TTID:b7 bilet dobowy strefa 1+2, ulgowy\n+WKM_TTID:b8 bilet trzydniowy strefa 1+2, ulgowy\n+WKM_TTID:b9 bilet dobowy strefa 1+2, ulgowy\n+WKM_TTID:ba bilet trzydniowy strefa 1+2, ulgowy\n+WKM_TTID:bb bilet siedmiodniowy strefa 1+2, ulgowy\n+WKM_TTID:bd bilet 14-dniowy strefa 1+2, ulgowy\n+WKM_TTID:bf bilet 30-dniowy imienny na 1 linie strefa 1+2, ulgowy\n+WKM_TTID:c0 bilet 30-dniowy imienny na wszystkie linie strefa 1+2, ulgowy\n+WKM_TTID:c1 bilet 30-dniowy imienny na wszystkie linie strefa 1+2, ulgowy\n+WKM_TTID:c2 bilet 30-dniowy na okaziciela na wszystkie linie strefa 1+2, ulgowy\n+WKM_TTID:c3 bilet 30-dniowy na okaziciela na wszystkie linie strefa 1+2, ulgowy\n+WKM_TTID:c4 bilet 90-dniowy imienny na wszystkie linie strefa 1+2, ulgowy\n+WKM_TTID:c5 bilet 90-dniowy imienny na wszystkie linie strefa 1+2, ulgowy\n+WKM_TTID:c6 bilet 90-dniowy na okaziciela na wszystkie linie strefa 1+2, ulgowy\n+WKM_TTID:c7 bilet 90-dniowy na okaziciela na wszystkie linie strefa 1+2, ulgowy\n+WKM_TTID:d2 ??? 210 bilet nieznany - pokazuje wersje kasownika bez blokowania (pracowniczy?) - wa\xc4\xb9\xc5\xbany 3 lata od skasowania\n+WKM_TTID:d3 "przepustka na stacje metra" (pasazerska/HDK/70+)\n+WKM_TTID:d4 "przepustka na stacje metra" (pasazerska/HDK/70+)\n+WKM_TTID:d6 "przepustka na stacje metra" (SOM/policja/obsluga techniczna), wa\xc4\xb9\xc5\xbany rok od skasowania\n+WKM_TTID:dd "ZTM pass - karta testowa", wa\xc4\xb9\xc5\xbany rok od skasowania\n+WKM_TTID:e7 bilet pracowniczy ZTM, wa\xc4\xb9\xc5\xbany rok od skasowania\n+WKM_TTID:e8 bilet pracowniczy MZA, wa\xc4\xb9\xc5\xbany rok od skasowania\n+WKM_TTID:e9 bilet pracowniczy TW, wa\xc4\xb9\xc5\xbany rok od skasowania\n+WKM_TTID:ea bilet pracowniczy MW, wa\xc4\xb9\xc5\xbany rok od skasowania\n+WKM_TTID:eb bilet pracowniczy SKM, wa\xc4\xb9\xc5\xbany rok od skasowania\n+WKM_TTID:ef bilet dzieci z rodzin wielodzietnych, wa\xc4\xb9\xc5\xbany rok od skasowania\n+WKM_TTID:f0 bilet osoby niepe\xc4\xb9nosprawnej, wa\xc4\xb9\xc5\xbany rok od skasowania\n+WKM_TTID:f5 ??? 245 bilet nieznany - "poza dozwolonym terminem uzycia"\n+WKM_TTID:fa "precode" (nie rozpoznawany przez kasowniki)\n+WKM_TTID:fe "navette" (karta kontrolerska)\n+WKM_TTID:ff admin\n+\n+WKM_POS:01 POP ZTM\n+WKM_POS:15 Mennica\n+WKM_POS:2a ASEC\n+\n+WKM_LINE:81 WKD # prooved\n+\n+WKM_LINE:91 METRO LINIA 1 # prooved\n+WKM_LINE:91x1 Kabaty # prooved\n+WKM_LINE:91x2 Natolin # prooved\n+WKM_LINE:91x3 Imielin # prooved\n+WKM_LINE:91x4 Stoklosy # prooved\n+WKM_LINE:91x5 Ursynow # prooved\n+WKM_LINE:91x6 Sluzew # prooved\n+WKM_LINE:91x7 Wilanowska # prooved\n+WKM_LINE:91x8 Wierzbno # prooved\n+WKM_LINE:91x9 Raclawicka # prooved\n+WKM_LINE:91x10 Pole Mokotowskie # prooved\n+WKM_LINE:91x11 Politechnika # prooved\n+WKM_LINE:91x12 Centrum # prooved\n+WKM_LINE:91x13 Swietokrzyska # prooved\n+WKM_LINE:91x14 Ratusz Arsenal # prooved\n+WKM_LINE:91x15 Dw. Gdanski # prooved\n+WKM_LINE:91x16 Pl. Wilsona # prooved\n+WKM_LINE:91x17 Marymont # prooved\n+WKM_LINE:91x18 Slodowiec # prooved\n+WKM_LINE:91x19 Stare Bielany # prooved\n+WKM_LINE:91x20 Wawrzyszew # prooved\n+WKM_LINE:91x21 Mlociny # prooved\n+WKM_LINE:92 METRO LINIA 2 # guess\n+\n+WKM_LINE:1001 Z-1 # guess\n+WKM_LINE:2901 Z-1 # prooved\n+WKM_LINE:1005 Z-5 # prooved (wk)\n+WKM_LINE:2905 Z-5 # prooved (wk)\n+WKM_LINE:1009 Z-9 # prooved\n+WKM_LINE:2909 Z-9 # guess\n+WKM_LINE:1019 Z19 # guess\n+WKM_LINE:2919 Z19 # guess\n+WKM_LINE:1019 Z19 # guess\n+WKM_LINE:2919 Z19 # guess\n+\n+WKM_LINE:3001 L-1 # guess\n+WKM_LINE:3002 L-2 # guess\n+WKM_LINE:3003 L-3 # guess\n+WKM_LINE:3004 L-4 # guess\n+WKM_LINE:3005 L-5 # guess\n+WKM_LINE:3006 L-6 # guess\n+WKM_LINE:3007 L-7 # prooved (wk)\n+WKM_LINE:3008 L-8 # guess\n+WKM_LINE:3009 L-9 # guess\n+WKM_LINE:3010 L10 # guess\n+WKM_LINE:3011 L11 # guess\n+WKM_LINE:3013 L13 # guess\n+WKM_LINE:3014 L14 # guess\n+WKM_LINE:3015 L15 # guess\n+WKM_LINE:3016 L16 # guess\n+WKM_LINE:3017 L17 # guess\n+WKM_LINE:3018 L18 # guess\n+\n+WKM_LINE:601 N01 # guess\n+WKM_LINE:6001 N01 # guess\n+WKM_LINE:602 N02 # guess\n+WKM_LINE:6002 N02 # guess\n+WKM_LINE:603 N03 # guess\n+WKM_LINE:6003 N03 # guess\n+WKM_LINE:611 N11 # guess\n+WKM_LINE:6011 N11 # prooved\n+WKM_LINE:612 N12 # guess\n+WKM_LINE:6012 N12 # guess\n+WKM_LINE:613 N13 # guess\n+WKM_LINE:6013 N13 # prooved\n+WKM_LINE:614 N14 # guess\n+WKM_LINE:6014 N14 # guess\n+WKM_LINE:622 N22 # guess\n+WKM_LINE:6022 N22 # guess\n+WKM_LINE:624 N24 # guess\n+WKM_LINE:6024 N24 # prooved\n+WKM_LINE:625 N25 # guess\n+WKM_LINE:6025 N25 # prooved\n+WKM_LINE:631 N31 # guess\n+WKM_LINE:6031 N31 # prooved\n+WKM_LINE:632 N32 # guess\n+WKM_LINE:6032 N32 # prooved\n+WKM_LINE:633 N33 # guess\n+WKM_LINE:6033 N33 # prooved\n+WKM_LINE:634 N34 # guess\n+WKM_LINE:6034 N34 # prooved\n+WKM_LINE:635 N35 # guess\n+WKM_LINE:6035 N35 # prooved\n+WKM_LINE:636 N36 # guess\n+WKM_LINE:6036 N36 # prooved\n+WKM_LINE:637 N37 # prooved\n+WKM_LINE:6037 N37 # guess\n+WKM_LINE:638 N38 # guess\n+WKM_LINE:6038 N38 # guess\n+WKM_LINE:641 N41 # guess\n+WKM_LINE:6041 N41 # guess\n+WKM_LINE:642 N42 # prooved\n+WKM_LINE:6042 N42 # guess\n+WKM_LINE:643 N43 # guess\n+WKM_LINE:6043 N43 # prooved\n+WKM_LINE:644 N44 # guess\n+WKM_LINE:6044 N44 # prooved\n+WKM_LINE:645 N45 # guess\n+WKM_LINE:6045 N45 # guess\n+WKM_LINE:646 N46 # prooved\n+WKM_LINE:6046 N46 # guess\n+WKM_LINE:650 N50 # guess\n+WKM_LINE:6050 N50 # guess\n+WKM_LINE:652 N52 # guess\n+WKM_LINE:6052 N52 # guess\n+WKM_LINE:653 N53 # guess\n+WKM_LINE:6053 N53 # guess\n+WKM_LINE:658 N58 # guess\n+WKM_LINE:6058 N58 # guess\n+WKM_LINE:661 N61 # guess\n+WKM_LINE:6061 N61 # guess\n+WKM_LINE:662 N62 # prooved\n+WKM_LINE:6062 N62 # guess\n+WKM_LINE:663 N63 # guess\n+WKM_LINE:6063 N63 # guess\n+WKM_LINE:664 N64 # guess\n+WKM_LINE:6064 N64 # guess\n+WKM_LINE:671 N71 # guess\n+WKM_LINE:6071 N71 # prooved\n+WKM_LINE:672 N72 # guess\n+WKM_LINE:6072 N72 # prooved\n+WKM_LINE:675 N75 # guess\n+WKM_LINE:6075 N75 # guess\n+WKM_LINE:681 N81 # guess\n+WKM_LINE:6081 N81 # guess\n+WKM_LINE:683 N83 # guess\n+WKM_LINE:6083 N83 # guess\n+WKM_LINE:685 N85 # guess\n+WKM_LINE:6085 N85 # guess\n+WKM_LINE:688 N88 # guess\n+WKM_LINE:6088 N88 # guess\n+WKM_LINE:691 N91 # guess\n+WKM_LINE:6091 N91 # guess\n+WKM_LINE:695 N95 # guess\n+WKM_LINE:6095 N95 # guess\n+\n+WKM_LINE:9002 E-2 # prooved (wk)\n+WKM_LINE:9004 E-4 # guess\n+WKM_LINE:9006 E-6 # guess\n+WKM_LINE:9008 E-8 # guess\n+\n+WKM_LINE:9101 S1 # prooved\n+WKM_LINE:9102 S2 # guessed\n+WKM_LINE:9109 S9 # guessed\nRun Code Online (Sandbox Code Playgroud)\n\n所以我相信补丁代码没问题,因为它包含+在第 434 行。我使用了错误的参数吗?我收到此错误代码的原因是什么?
你的补丁被截断了。它至少缺少一行。最后一个块头是@@ -292,3 +410,243 @@,这意味着偏移量 292 处的 3 行将被偏移量 410 处的 243 行替换。确实有 3 行旧文本(开头的上下文),但只添加了 239 行。
如果您在末尾添加一行包含+,您将获得一个格式良好的补丁。无法判断该补丁是否完整,或者丢失的行是否重要,或者补丁丢失了更多块。
| 归档时间: |
|
| 查看次数: |
8773 次 |
| 最近记录: |