diff options
Diffstat (limited to 'source/y/bsd-games/patches')
19 files changed, 5022 insertions, 0 deletions
diff --git a/source/y/bsd-games/patches/0001-Replace-getline-with-get_line.patch b/source/y/bsd-games/patches/0001-Replace-getline-with-get_line.patch new file mode 100644 index 00000000..284674f0 --- /dev/null +++ b/source/y/bsd-games/patches/0001-Replace-getline-with-get_line.patch @@ -0,0 +1,219 @@ +From: Tobias Quathamer <toddy@debian.org> +Date: Thu, 16 Feb 2012 11:26:00 +0100 +Subject: Replace getline() with get_line() + +--- + boggle/boggle/bog.c | 2 +- + boggle/boggle/extern.h | 2 +- + boggle/boggle/mach.c | 2 +- + cribbage/crib.c | 4 ++-- + cribbage/cribbage.h | 2 +- + cribbage/io.c | 8 ++++---- + gomoku/bdisp.c | 2 +- + gomoku/gomoku.h | 2 +- + gomoku/main.c | 14 +++++++------- + 9 files changed, 19 insertions(+), 19 deletions(-) + +diff --git a/boggle/boggle/bog.c b/boggle/boggle/bog.c +index 276969b..0aaa086 100644 +--- a/boggle/boggle/bog.c ++++ b/boggle/boggle/bog.c +@@ -336,7 +336,7 @@ playgame() + } + + while (1) { +- if (getline(buf) == NULL) { ++ if (get_line(buf) == NULL) { + if (feof(stdin)) + clearerr(stdin); + break; +diff --git a/boggle/boggle/extern.h b/boggle/boggle/extern.h +index ba36561..734a4b9 100644 +--- a/boggle/boggle/extern.h ++++ b/boggle/boggle/extern.h +@@ -43,7 +43,7 @@ void delay(int); + long dictseek(FILE *, long, int); + void findword(void); + void flushin(FILE *); +-char *getline(char *); ++char *get_line(char *); + void getword(char *); + int help(void); + int inputch(void); +diff --git a/boggle/boggle/mach.c b/boggle/boggle/mach.c +index b511296..dd89578 100644 +--- a/boggle/boggle/mach.c ++++ b/boggle/boggle/mach.c +@@ -168,7 +168,7 @@ prwidth(base, indx) + * - doesn't accept words longer than MAXWORDLEN or containing caps + */ + char * +-getline(q) ++get_line(q) + char *q; + { + int ch, done; +diff --git a/cribbage/crib.c b/cribbage/crib.c +index 5fc53b3..9340126 100644 +--- a/cribbage/crib.c ++++ b/cribbage/crib.c +@@ -221,7 +221,7 @@ game() + if (!rflag) { /* player cuts deck */ + msg(quiet ? "Cut for crib? " : + "Cut to see whose crib it is -- low card wins? "); +- getline(); ++ get_line(); + } + i = (rand() >> 4) % CARDS; /* random cut */ + do { /* comp cuts deck */ +@@ -397,7 +397,7 @@ cut(mycrib, pos) + if (!rflag) { /* random cut */ + msg(quiet ? "Cut the deck? " : + "How many cards down do you wish to cut the deck? "); +- getline(); ++ get_line(); + } + i = (rand() >> 4) % (CARDS - pos); + turnover = deck[i + pos]; +diff --git a/cribbage/cribbage.h b/cribbage/cribbage.h +index ce2eecb..3187457 100644 +--- a/cribbage/cribbage.h ++++ b/cribbage/cribbage.h +@@ -77,7 +77,7 @@ int eq(CARD, CARD); + int fifteens(const CARD [], int); + void game(void); + void gamescore(void); +-char *getline(void); ++char *get_line(void); + int getuchar(void); + int incard(CARD *); + int infrom(const CARD [], int, const char *); +diff --git a/cribbage/io.c b/cribbage/io.c +index 3d69257..8100ddd 100644 +--- a/cribbage/io.c ++++ b/cribbage/io.c +@@ -245,7 +245,7 @@ incard(crd) + + retval = FALSE; + rnk = sut = EMPTY; +- if (!(line = getline())) ++ if (!(line = get_line())) + goto gotit; + p = p1 = line; + while (*p1 != ' ' && *p1 != '\0') +@@ -346,7 +346,7 @@ number(lo, hi, prompt) + + for (sum = 0;;) { + msg(prompt); +- if (!(p = getline()) || *p == '\0') { ++ if (!(p = get_line()) || *p == '\0') { + msg(quiet ? "Not a number" : + "That doesn't look like a number"); + continue; +@@ -528,12 +528,12 @@ over: + } + + /* +- * getline: ++ * get_line: + * Reads the next line up to '\n' or EOF. Multiple spaces are + * compressed to one space; a space is inserted before a ',' + */ + char * +-getline() ++get_line() + { + char *sp; + int c, oy, ox; +diff --git a/gomoku/bdisp.c b/gomoku/bdisp.c +index 522d92f..d2de746 100644 +--- a/gomoku/bdisp.c ++++ b/gomoku/bdisp.c +@@ -241,7 +241,7 @@ ask(str) + } + + int +-getline(buf, size) ++get_line(buf, size) + char *buf; + int size; + { +diff --git a/gomoku/gomoku.h b/gomoku/gomoku.h +index 0d9ff6e..3ebb42e 100644 +--- a/gomoku/gomoku.h ++++ b/gomoku/gomoku.h +@@ -263,7 +263,7 @@ extern int debug; + + void bdinit(struct spotstr *); + void init_overlap(void); +-int getline(char *, int); ++int get_line(char *, int); + void ask(const char *); + void dislog(const char *); + void bdump(FILE *); +diff --git a/gomoku/main.c b/gomoku/main.c +index 299dee1..3ff4750 100644 +--- a/gomoku/main.c ++++ b/gomoku/main.c +@@ -155,7 +155,7 @@ again: + if (inputfp == NULL && test == 0) { + for (;;) { + ask("black or white? "); +- getline(buf, sizeof(buf)); ++ get_line(buf, sizeof(buf)); + if (buf[0] == 'b' || buf[0] == 'B') { + color = BLACK; + break; +@@ -172,7 +172,7 @@ again: + } + } else { + setbuf(stdout, 0); +- getline(buf, sizeof(buf)); ++ get_line(buf, sizeof(buf)); + if (strcmp(buf, "black") == 0) + color = BLACK; + else if (strcmp(buf, "white") == 0) +@@ -244,7 +244,7 @@ again: + getinput: + if (interactive) + ask("move? "); +- if (!getline(buf, sizeof(buf))) { ++ if (!get_line(buf, sizeof(buf))) { + curmove = RESIGN; + break; + } +@@ -256,7 +256,7 @@ again: + FILE *fp; + + ask("save file name? "); +- (void)getline(buf, sizeof(buf)); ++ (void)get_line(buf, sizeof(buf)); + if ((fp = fopen(buf, "w")) == NULL) { + glog("cannot create save file"); + goto getinput; +@@ -309,14 +309,14 @@ again: + if (i != RESIGN) { + replay: + ask("replay? "); +- if (getline(buf, sizeof(buf)) && ++ if (get_line(buf, sizeof(buf)) && + (buf[0] == 'y' || buf[0] == 'Y')) + goto again; + if (strcmp(buf, "save") == 0) { + FILE *fp; + + ask("save file name? "); +- (void)getline(buf, sizeof(buf)); ++ (void)get_line(buf, sizeof(buf)); + if ((fp = fopen(buf, "w")) == NULL) { + glog("cannot create save file"); + goto replay; +@@ -367,7 +367,7 @@ whatsup(signum) + quit(); + top: + ask("cmd? "); +- if (!getline(fmtbuf, sizeof(fmtbuf))) ++ if (!get_line(fmtbuf, sizeof(fmtbuf))) + quit(); + switch (*fmtbuf) { + case '\0': diff --git a/source/y/bsd-games/patches/0002-robots-Refresh-screen.patch b/source/y/bsd-games/patches/0002-robots-Refresh-screen.patch new file mode 100644 index 00000000..ec588dd8 --- /dev/null +++ b/source/y/bsd-games/patches/0002-robots-Refresh-screen.patch @@ -0,0 +1,20 @@ +From: Tobias Quathamer <toddy@debian.org> +Date: Thu, 16 Feb 2012 11:26:49 +0100 +Subject: robots: Refresh screen + +--- + robots/move.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/robots/move.c b/robots/move.c +index 7edaae3..b2703c5 100644 +--- a/robots/move.c ++++ b/robots/move.c +@@ -185,6 +185,7 @@ teleport: + flush_in(); + goto ret; + case CTRL('L'): ++ redrawwin(curscr); + refresh(); + break; + case EOF: diff --git a/source/y/bsd-games/patches/0003-quiz-Update-presidents-capitals-fix-typos-in-murders.patch b/source/y/bsd-games/patches/0003-quiz-Update-presidents-capitals-fix-typos-in-murders.patch new file mode 100644 index 00000000..77a0e87a --- /dev/null +++ b/source/y/bsd-games/patches/0003-quiz-Update-presidents-capitals-fix-typos-in-murders.patch @@ -0,0 +1,352 @@ +From: Tobias Quathamer <toddy@debian.org> +Date: Thu, 16 Feb 2012 11:26:50 +0100 +Subject: quiz: Update presidents, capitals, fix typos in murders, poetry + +--- + quiz/datfiles/africa | 51 ++++++++++++++++++++++++++++++++------------------- + quiz/datfiles/america | 45 ++++++++++++++++++++++++++++++++++++--------- + quiz/datfiles/asia | 40 +++++++++++++++++++++++++--------------- + quiz/datfiles/europe | 44 ++++++++++++++++++++++++++++++-------------- + quiz/datfiles/murders | 2 +- + quiz/datfiles/poetry | 2 +- + quiz/datfiles/pres | 6 ++++-- + 7 files changed, 129 insertions(+), 61 deletions(-) + +diff --git a/quiz/datfiles/africa b/quiz/datfiles/africa +index 6e74550..a2eeeaf 100644 +--- a/quiz/datfiles/africa ++++ b/quiz/datfiles/africa +@@ -1,43 +1,56 @@ +-Algeria:Alg[iers|er] +-Botswana:Gaberones ++Algeria:Algiers ++Angola:Luanda ++Benin:Porto-Novo ++Botswana:Gaborone ++Burkina Faso:Ouagadougou + Burundi:Bujumbura +-Cameroun:Yaound['e|e'|e] ++C[^o|o^|o]te d'Ivoire:Yamoussoukro ++Cameroon:Yaound['e|e'|e] ++Cape Verde:Praia + Central Africa{n Rep{ublic}}:Bangui +-Chad:Ndjamena +-Congo:Brazzaville +-Dahomey:Porto Novo ++Chad:N'Djamena|Ndjamena ++Comoros:Moroni ++Djibouti:Djibouti ++Egypt:Cairo ++Equatorial Guinea:Malabo ++Eritrea:Asmara + Ethiopia:Addis Ababa + Gabon:Libreville + Ghana:Accra + Guinea-Bissau:Bissau + Guinea:Conakry +-Ivory Coast:Abidjan + Kenya:Nairobi + Lesotho:Maseru + Liberia:Monrovia +-Libya:Al Bayda{'} +-Malagasy{ Rep{ublic}}|Madagascar:Tananarive +-Malawi:Zomba ++Libya:Tripoli ++Malagasy{ Rep{ublic}}|Madagascar:Antananarivo ++Malawi:Lilongwe + Mali:Bamako + Mauritania:Nouakchott ++Mauritius:Port Louis ++Mayotte:Mamoudzou ++Mo[z|,c|c,|c]ambique:Maputo + Morocco:Rabat +-Mo[z|,c|c,|c]ambique:Louren[,c|c,|c]o Marques ++Namibia:Windhoek + Niger:Niamey +-Nigeria:Lagos +-Rhodesia:Salisbury ++Nigeria:Abuja ++R['e|e'|e]union:Saint-Denis ++Rep. Congo:Brazzaville + Rwanda:Kigali ++S[~a|a~|a]o Tom['e|e'|e] and Pr['i|i'|i]ncipe:S[~a|a~|a]o Tom['e|e'|e] ++Saint Helena:Jamestown + Senegal:Dakar ++Seychelles:Victoria + Sierra Leone:Freetown +-Somali{ Rep{ublic}}:Mogadis[cio|hu] ++Somalia:Mogadishu + Sudan:Khartoum + Swaziland:Mbabane +-Tanzania:Dar es Salaam ++Tanzania:Dodoma + Togo:Lom['e|e'|e] + Tunisia:Tunis + Uganda:Kampala +-United Arab Rep{ublic}|Egypt:Cairo +-Upper Volta:Ouagadougou + Zambia:Lusaka +-Za["i|i"|i]re:Kinshasha ++Zimbabwe:Harare ++{DR |Democratic Republic of the }Congo:Kinshasa + {Rep{ublic} of }South Africa:Pretoria +-{The }Gambia:Bathurst ++{The }Gambia:Banjul|Bathurst +diff --git a/quiz/datfiles/america b/quiz/datfiles/america +index 7f8fee1..5c9e321 100644 +--- a/quiz/datfiles/america ++++ b/quiz/datfiles/america +@@ -1,27 +1,54 @@ ++Anguilla:The Valley ++Antigua and Barbuda:St. John's + Argentina:Buenos Aires +-Bahamas:Nassau ++Aruba:Oranjestad + Barbados:Bridgetown ++Belize:Belmopan ++Bermuda:Hamilton + Bolivia:La Paz|Sucre +-Bra[z|s]il:Brasilia ++Bra[z|s]il:Bras['i|i'|i]lia ++British Virgin Islands:Road Town + Canada:Ottawa ++Cayman Islands:George Town + Chile:Santiago + Colombia:Bogot['a|a'|a] +-Costa Rica:San Jose ++Costa Rica:San Jos['e|e'|e] + Cuba:Ha[v|b]ana ++Dominica:Roseau + Dominican Republic:Santo Domingo + Ecuador:Quito + El Salvador:San Salvador +-Guatemala:Guatemala ++Falkland Islands:Stanley ++French Guiana:Cayenne ++Greenland:Nuuk ++Grenada:St. George's ++Guadeloupe:Basse-Terre ++Guatemala:Guatemala City + Guyana:Georgetown +-Haiti:Port au Prince ++Haiti:Port[-| ]au[-| ]Prince + Honduras:Tegucigalpa + Jamaica:Kingston +-Mexico:Mexico ++Martinique:Fort-de-France ++Mexico:Mexico City ++Montserrat:Plymouth|Brades ++Netherlands Antilles:Willemstad + Nicaragua:Managua +-Panama:Panama ++Panama:Panama City + Paraguay:Asunci['o|o'|o]n + Peru:Lima +-Trinidad[ and Tobago|]:Port of Spain +-United States|US{A}:Washington ++Puerto Rico:San Juan ++SGSSI|South Georgia and the South Sandwich Islands:Grytviken|King Edward Point ++Saint Barth['e|e'|e]lemy:Gustavia ++Saint Kitts and Nevis:Basseterre ++Saint Lucia:Castries ++Saint Martin:Marigot ++Saint Pierre and Miquelon:Saint-Pierre ++Saint Vincent and the Grenadines:Kingstown ++Suriname:Paramaribo ++Trinidad{ and Tobago}:Port of Spain ++Turks and Caicos Islands:Cockburn Town ++United States Virgin Islands:Charlotte Amalie ++United States|US{A}:Washington{ DC} + Uruguay:Montevideo + Venezuela:Caracas ++{The }Bahamas:Nassau +diff --git a/quiz/datfiles/asia b/quiz/datfiles/asia +index b9449f4..8c8ee55 100644 +--- a/quiz/datfiles/asia ++++ b/quiz/datfiles/asia +@@ -1,12 +1,16 @@ + Afghanistan:Kabul ++Armenia:Yerevan + Australia:Canberra +-Bahrein:Manama +-Bangladesh:Dacca +-Bhutan:Thimbu +-Burma:Rangoon +-Cambodia|Khmer:P{h}nom Penh +-China:Peking ++Azerbaijan:Baku ++Bahr[a|e]in:Manama ++Bangladesh:Dhaka ++Bhutan:Thimphu ++Burma:Naypyidaw ++Cambodia:Phnom Penh + Cyprus:Nicosia ++East Timor:Dili ++Egypt:Cairo ++Georgia:Tbilisi + India:New Delhi + Indonesia:Jakarta|Djakarta + Iran:Tehran +@@ -14,28 +18,34 @@ Iraq:Baghdad + Israel:Jerusalem + Japan:Tokyo + Jordan:Amman +-Kuwait:Al-kuwait ++Kazakhstan:Astana ++Kuwait:Kuwait City ++Kyrgyzstan:Bishkek + Laos:Vientiane + Lebanon:Beirut + Malaysia:Kuala Lumpur +-Maldive Islands:Male ++Maldives:Mal['e|e'|e] + Mongolia:Ulan Bator +-Nepal:Katmandu ++Nepal:Kathmandu + North Korea:P{'}yongyang +-North Yemen:San{'}a + Oman:Muscat + Pakistan:Islamabad +-Papua[-| ]New Guinea:Port Moresby ++Papua New Guinea:Port Moresby + Philippines:Manila + Qatar:Doha +-Saudi Arabia:Riyadh|J{ei}ddah ++Russia:Moscow ++Saudi Arabia:Riyadh + Singapore:Singapore + South Korea:Seoul +-South Yemen:Aden +-Sri Lanka:Colombo ++Sri Lanka:Kotte + Syria:Damascus + Taiwan:Taipei ++Tajikistan:Dushanbe + Thailand:Bangkok + Turkey:Ankara +-United Arab Emirates:Abu Dhabi ++Turkmenistan:Ashgabat ++United Arab Emirates|UAE:Abu Dhabi ++Uzbekistan:Tashkent + Vietnam:Hanoi ++{Republic of }Yemen:Sana'a ++{{People's }Republic of }China:Beijing|Peking +diff --git a/quiz/datfiles/europe b/quiz/datfiles/europe +index 91176e5..d089f41 100644 +--- a/quiz/datfiles/europe ++++ b/quiz/datfiles/europe +@@ -1,44 +1,60 @@ +-Albania:Tirana|Tirane" ++Abkhazia:Sukhumi ++Albania:Tirana + Andorra:Andorra la V[ell|iej]a ++Armenia:Yerevan + Austria:Vienna|Wien +-Belarus|Byelorussia:M[i|e]nsk +-Belgium:Brussel[s|]|Bruxelles +-Bosnia[-Herzegovina|]:Sarajevo +-Bulgaria:Sofi[a|ya] ++Azerbaijan:Baku ++Belarus:Minsk ++Belgium:Brussel{s}|Bruxelles ++Bosnia and Herzegovina:Sarajevo ++Bulgaria:Sofia + Croatia:Zagreb ++Cyprus:Nicosia + Czech Republic:Prague|Praha +-Denmark:Copenhagen|K[o|o/]benhavn +-United Kingdom|England|Great Britain|UK:London ++Denmark:Copenhagen|K[o|o/|/o]benhavn + Estonia:Tallinn ++Faroe Islands:T['o|o'|o]rshavn + Finland:Helsinki + France:Paris + Georgia:Tbilisi + Germany:Berlin ++Gibraltar:Gibraltar + Greece:Athens ++Guernsey:Saint Peter Port + Hungary:Budapest +-Iceland:Reykjavik ++Iceland:Reykjav['i|i'|i]k + Ireland|Eire:Dublin ++Isle of Man:Douglas + Italy:Rom[e|a] ++Jersey:Saint Helier ++Kazakhstan:Astana ++Kosovo:Pristina + Latvia:Riga + Liechtenstein:Vaduz + Lithuania:Vilnius + Luxembourg:Luxembourg +-[|Former Yugoslav Republic Of ]Macedonia:Skop[|l]je ++Macedonia:Skopje + Malta:Valletta +-Moldova:Chisinau|Kishinev ++Moldova:Chi[,s|s,|s]inau|Kishinev + Monaco:Monaco +-Netherlands|Holland:Amsterdam ++Montenegro:Podgorica ++Netherlands:Amsterdam + Norway:Oslo + Poland:Wars[aw|zawa] + Portugal:Lisbo[n|a] +-R[u|o]mania:Bucharest|Bucuresti ++Romania:Bucharest + Russia:Mos[cow|kva] + San Marino:San Marino +-Serbia and Montenegro:Belgrade|Beograd +-Slovakia|Slovak Republic:Bratislava ++Serbia:Belgrade ++Slovakia:Bratislava + Slovenia:Ljubljana ++South Ossetia:Tskhinvali + Spain:Madrid ++Svalbard:Longyearbyen + Sweden:Stockholm + Switzerland:Bern{e} + Turkey:Ankara + Ukraine:Kiev|Kyiv ++United Kingdom|England|Great Britain|UK:London ++Vatican City:Vatican City ++[°A|A°|A]land Islands:Mariehamn +diff --git a/quiz/datfiles/murders b/quiz/datfiles/murders +index 30cf324..b1070ce 100644 +--- a/quiz/datfiles/murders ++++ b/quiz/datfiles/murders +@@ -19,7 +19,7 @@ Pompeii:Vesuvius + {Yukio }Mishima:{Yukio }Mishima + {Alexander }Hamilton:{Aaron }Burr + Cleopatra:{the |an }asp +-[Ann Boleyn|Catharine Howard]:Henry{ VIII} ++[Anne Boleyn|Catharine Howard]:Henry{ VIII} + vaudeville:{the }movies|film + {the }movies|film:TV|television + {the }VA patients:{the }nurses +diff --git a/quiz/datfiles/poetry b/quiz/datfiles/poetry +index f4c07d6..78d117a 100644 +--- a/quiz/datfiles/poetry ++++ b/quiz/datfiles/poetry +@@ -64,7 +64,7 @@ Drink deep{,} or taste not the Pierian spring{.}:\ + {Alexander }Pope + The curfew tolls the knell of parting day{,}:\ + The lowing herd wind slowly o'er the lea:\ +-Elegy{ Written in a Country Church{-| }Yard:\ ++Elegy{ Written in a Country Church{-| }Yard}:\ + {Thomas }Gray + The best laid schemes o' mice an' men gang aft a-gley{,}:\ + An{'|d} lea{'|v}e us nought but grief an{'|d} pain for promised joy{.}:\ +diff --git a/quiz/datfiles/pres b/quiz/datfiles/pres +index 6f81228..4ce5862 100644 +--- a/quiz/datfiles/pres ++++ b/quiz/datfiles/pres +@@ -79,5 +79,7 @@ + {J{ames} }{D{anforth|an} }Quayle:{W{illiam|m} }{J{efferson} }Clinton + {W{illiam|m} }{J{efferson} }Clinton:1993-2001:\ + {A{lbert} }{A{rnold} }Gore{{,} J{unio}r}:{G{eorge} }{W{alker} }Bush{{,} J{unio}r} +-{G{eorge} }{W{alker} }Bush{{,} J{unio}r}:2001-:\ +-{R{ichard} }{B{ruce} }Cheney: ++{G{eorge} }{W{alker} }Bush{{,} J{unio}r}:2001-{{20}0}9:\ ++{R{ichard} }{B{ruce} }Cheney:{B{arack} }{H{ussein} }Obama{ II} ++{B{arack} }{H{ussein} }Obama{ II}:2009-:\ ++{J{oe{seph}} }{R{obinette} }{Biden}{{,} J{unio}r}: diff --git a/source/y/bsd-games/patches/0004-Define-__dead-for-GNU-GCC.patch b/source/y/bsd-games/patches/0004-Define-__dead-for-GNU-GCC.patch new file mode 100644 index 00000000..c2ef73de --- /dev/null +++ b/source/y/bsd-games/patches/0004-Define-__dead-for-GNU-GCC.patch @@ -0,0 +1,20 @@ +From: Tobias Quathamer <toddy@debian.org> +Date: Thu, 16 Feb 2012 11:26:51 +0100 +Subject: Define __dead for GNU GCC + +--- + include/sys/cdefs.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/include/sys/cdefs.h b/include/sys/cdefs.h +index 138eaa8..f6e87c2 100644 +--- a/include/sys/cdefs.h ++++ b/include/sys/cdefs.h +@@ -40,3 +40,7 @@ + #ifndef __COPYRIGHT + #define __COPYRIGHT(arg) static const char copyright[] __attribute__((__unused__)) = arg + #endif ++ ++#ifndef __dead ++#define __dead __attribute__((__noreturn__)) ++#endif diff --git a/source/y/bsd-games/patches/0005-rain-Update-default-delay.-Closes-579062.patch b/source/y/bsd-games/patches/0005-rain-Update-default-delay.-Closes-579062.patch new file mode 100644 index 00000000..d38da764 --- /dev/null +++ b/source/y/bsd-games/patches/0005-rain-Update-default-delay.-Closes-579062.patch @@ -0,0 +1,34 @@ +From: Tobias Quathamer <toddy@debian.org> +Date: Thu, 16 Feb 2012 11:26:53 +0100 +Subject: rain: Update default delay. Closes: #579062 + +--- + rain/rain.6 | 2 +- + rain/rain.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/rain/rain.6 b/rain/rain.6 +index 9fb0f0e..c6515e9 100644 +--- a/rain/rain.6 ++++ b/rain/rain.6 +@@ -49,6 +49,6 @@ baud or the + .Fl d + option must be used to specify a delay, in milliseconds, between each + update. +-A reasonable delay is 120; the default is 0. ++The default delay is 120. + .Sh AUTHOR + .An Eric P. Scott +diff --git a/rain/rain.c b/rain/rain.c +index e388f46..63e6276 100644 +--- a/rain/rain.c ++++ b/rain/rain.c +@@ -70,7 +70,7 @@ main(int argc, char **argv) + { + int x, y, j; + long cols, lines; +- unsigned int delay = 0; ++ unsigned int delay = 120; + unsigned long val = 0; + int ch; + char *ep; diff --git a/source/y/bsd-games/patches/0007-Unsorted-Debian-patches.patch b/source/y/bsd-games/patches/0007-Unsorted-Debian-patches.patch new file mode 100644 index 00000000..a31120a9 --- /dev/null +++ b/source/y/bsd-games/patches/0007-Unsorted-Debian-patches.patch @@ -0,0 +1,552 @@ +From: Tobias Quathamer <toddy@debian.org> +Date: Mon, 26 Mar 2012 10:07:17 +0200 +Subject: Unsorted Debian patches + +--- + adventure/crc.c | 4 +++- + arithmetic/arithmetic.6 | 2 +- + backgammon/backgammon/move.c | 3 +++ + backgammon/common_source/allow.c | 4 +++- + backgammon/teachgammon/ttext1.c | 2 +- + backgammon/teachgammon/ttext2.c | 2 +- + dab/gamescreen.h | 6 ++--- + dm/dm.c | 6 ++--- + fish/Makefrag | 8 ++++--- + fish/fish.6 | 4 ++-- + gomoku/gomoku.6 | 2 +- + hack/Makefrag | 3 ++- + hack/config.h | 15 ++++++++----- + hunt/hunt/hunt.6.in | 2 +- + hunt/hunt/hunt.c | 6 +++-- + hunt/hunt/playit.c | 4 ++-- + number/number.c | 47 ++++++++++++++++++++++++++-------------- + sail/pl_main.c | 2 +- + tests/number.-0.1 | 2 +- + tetris/scores.c | 17 +++++++++------ + trek/setup.c | 5 ++++- + 21 files changed, 92 insertions(+), 54 deletions(-) + +diff --git a/adventure/crc.c b/adventure/crc.c +index 66504f1..c6ee5f1 100644 +--- a/adventure/crc.c ++++ b/adventure/crc.c +@@ -42,6 +42,8 @@ __RCSID("$NetBSD: crc.c,v 1.8 2003/08/07 09:36:50 agc Exp $"); + #endif + #endif /* not lint */ + ++#include <limits.h> ++ + #include "extern.h" + + const unsigned long crctab[] = { +@@ -125,7 +127,7 @@ crc(ptr, nr) /* Process nr bytes at a time; ptr points to them */ + + while (nr > 0) + for (p = ptr; nr--; ++p) { +- if (!(i = crcval >> 24 ^ *p)) { ++ if (!(i = crcval >> (sizeof(crcval) * CHAR_BIT - 8) ^ *p)) { + i = step++; + if (step >= sizeof(crctab) / sizeof(crctab[0])) + step = 0; +diff --git a/arithmetic/arithmetic.6 b/arithmetic/arithmetic.6 +index b8d4d8f..bc41bca 100644 +--- a/arithmetic/arithmetic.6 ++++ b/arithmetic/arithmetic.6 +@@ -79,7 +79,7 @@ divide by or subtract will be between 0 and + .Nm + will not ask you to divide by 0.) + The default +-.I range ++.It range + is 10. + .El + .Pp +diff --git a/backgammon/backgammon/move.c b/backgammon/backgammon/move.c +index 9fd81f1..027cab5 100644 +--- a/backgammon/backgammon/move.c ++++ b/backgammon/backgammon/move.c +@@ -152,6 +152,9 @@ move(okay) + trymove(0, 0); + pickmove(); + ++ if (d0) ++ swap; ++ + /* print move */ + writel(" and moves "); + for (i = 0; i < mvlim; i++) { +diff --git a/backgammon/common_source/allow.c b/backgammon/common_source/allow.c +index f6bae78..8189f07 100644 +--- a/backgammon/common_source/allow.c ++++ b/backgammon/common_source/allow.c +@@ -83,8 +83,10 @@ movallow() + p[i--] = bar; + if (p[i] != bar) + continue; +- else ++ else if (d0) + break; ++ swap; ++ continue; + } + if (d0 || m == 4) + break; +diff --git a/backgammon/teachgammon/ttext1.c b/backgammon/teachgammon/ttext1.c +index 82db223..73ea6ee 100644 +--- a/backgammon/teachgammon/ttext1.c ++++ b/backgammon/teachgammon/ttext1.c +@@ -94,7 +94,7 @@ const char *const intro2[] = { + "\n Although not indicated on the board, the players' homes are", + "located just to the right of the board. A player's men are placed", + "there when they are removed from the board. The board you just", +- "saw was in it's initial position. All games start with the board", ++ "saw was in its initial position. All games start with the board", + "looking like this. Notice that red's pieces are represented by the", + "letter 'r' and white's pieces are represented by the letter 'w'.", + "Also, a position may have zero or more pieces on it, e.g. posi-", +diff --git a/backgammon/teachgammon/ttext2.c b/backgammon/teachgammon/ttext2.c +index 5e827d7..eb9a083 100644 +--- a/backgammon/teachgammon/ttext2.c ++++ b/backgammon/teachgammon/ttext2.c +@@ -65,7 +65,7 @@ const char *const stragy[] = { + "points in a row) are difficult to form, many points nestled close-", + "ly together produce a formidable barrier. Also, while it is good", + "to move back men forward, doing so lessens the opportunity for you", +- "to hit men. Finally, remember that once the two player's have", ++ "to hit men. Finally, remember that once the two players have", + "passed each other on the board, there is no chance of either team", + "being hit, so the game reduces to a race off the board. Addi-", + "tional hints on strategy are presented in the practice game.", +diff --git a/dab/gamescreen.h b/dab/gamescreen.h +index ca90cb3..b3db2ea 100644 +--- a/dab/gamescreen.h ++++ b/dab/gamescreen.h +@@ -70,9 +70,9 @@ class GAMESCREEN { + virtual void redraw(void) = 0; // Refresh + virtual int getinput(void) = 0; // Get user input + virtual void bell(void) = 0; // Beep +- virtual void score(size_t p, const PLAYER& p) = 0; // Post current score +- virtual void games(size_t p, const PLAYER& p) = 0; // Post games won +- virtual void total(size_t p, const PLAYER& p) = 0; // Post total score ++ virtual void score(size_t s, const PLAYER& p) = 0; // Post current score ++ virtual void games(size_t s, const PLAYER& p) = 0; // Post games won ++ virtual void total(size_t s, const PLAYER& p) = 0; // Post total score + virtual void ties(const PLAYER& p) = 0; // Post tie games + }; + +diff --git a/dm/dm.c b/dm/dm.c +index c131904..16129d8 100644 +--- a/dm/dm.c ++++ b/dm/dm.c +@@ -134,19 +134,19 @@ read_config() + while (fgets(lbuf, sizeof(lbuf), cfp)) + switch (*lbuf) { + case 'b': /* badtty */ +- if (sscanf(lbuf, "%s%s", f1, f2) != 2 || ++ if (sscanf(lbuf, "%39s%39s", f1, f2) != 2 || + strcasecmp(f1, "badtty")) + break; + c_tty(f2); + break; + case 'g': /* game */ +- if (sscanf(lbuf, "%s%s%s%s%s", ++ if (sscanf(lbuf, "%39s%39s%39s%39s%39s", + f1, f2, f3, f4, f5) != 5 || strcasecmp(f1, "game")) + break; + c_game(f2, f3, f4, f5); + break; + case 't': /* time */ +- if (sscanf(lbuf, "%s%s%s%s", f1, f2, f3, f4) != 4 || ++ if (sscanf(lbuf, "%39s%39s%39s%39s", f1, f2, f3, f4) != 4 || + strcasecmp(f1, "time")) + break; + c_day(f2, f3, f4); +diff --git a/fish/Makefrag b/fish/Makefrag +index 1039af5..1fec493 100644 +--- a/fish/Makefrag ++++ b/fish/Makefrag +@@ -31,7 +31,9 @@ fish_DIRS := $(GAMESDIR) $(MAN6DIR) $(shell dirname $(FISH_INSTRFILE)) + fish_all: fish/fish fish/fish.instr fish/fish.6 + + fish_install: fish_all +- $(INSTALL_BINARY) fish/fish $(INSTALL_PREFIX)$(GAMESDIR)/fish +- $(HIDE_GAME) fish ++ $(INSTALL_BINARY) fish/fish $(INSTALL_PREFIX)$(GAMESDIR)/go-fish ++ $(HIDE_GAME) go-fish + $(INSTALL_DATA) fish/fish.instr $(INSTALL_PREFIX)$(FISH_INSTRFILE) +- $(INSTALL_MANUAL) fish/fish.6 ++ ln -sf fish.6 fish/go-fish.6 # hack for rename ++ $(INSTALL_MANUAL) fish/go-fish.6 ++ rm -f fish/go-fish.6 +diff --git a/fish/fish.6 b/fish/fish.6 +index 398c55f..46eef2b 100644 +--- a/fish/fish.6 ++++ b/fish/fish.6 +@@ -30,10 +30,10 @@ + .\" @(#)fish.6 8.1 (Berkeley) 5/31/93 + .\" + .Dd May 31, 1993 +-.Dt FISH 6 ++.Dt GO-FISH 6 + .Os + .Sh NAME +-.Nm fish ++.Nm go-fish + .Nd play + .Dq Go Fish + .Sh SYNOPSIS +diff --git a/gomoku/gomoku.6 b/gomoku/gomoku.6 +index f78eb0e..024da85 100644 +--- a/gomoku/gomoku.6 ++++ b/gomoku/gomoku.6 +@@ -45,7 +45,7 @@ + .Op Ar inputfile + .Sh DESCRIPTION + .Nm +-is a two player game were the object is to get 5 in a row horizontally, ++is a two player game where the object is to get 5 in a row horizontally, + vertically or diagonally on a 19 by 19 grid. + By convention, black always moves first. + With no arguments, +diff --git a/hack/Makefrag b/hack/Makefrag +index eabbd2a..5807ef0 100644 +--- a/hack/Makefrag ++++ b/hack/Makefrag +@@ -56,7 +56,8 @@ hack_install: hack_all + $(INSTALL_SCORE_GAME) hack/hack $(INSTALL_PREFIX)$(GAMESDIR)/hack + $(HIDE_GAME) hack + $(INSTALL_HACK_DIR) $(INSTALL_PREFIX)$(HACK_DIR) +- set -e; for f in data help hh rumors; do $(INSTALL_DATA) hack/$$f $(INSTALL_PREFIX)$(HACK_DIR)/$$f; done ++ install -d $(INSTALL_PREFIX)/usr/share/games/bsdgames/hack ++ set -e; for f in data help hh rumors; do $(INSTALL_DATA) hack/$$f $(INSTALL_PREFIX)/usr/share/games/bsdgames/hack/$$f; done + $(INSTALL_SCORE_FILE) $(HACK_DIR)/perm + $(INSTALL_SCORE_FILE) $(HACK_DIR)/record + $(INSTALL_MANUAL) hack/hack.6 +diff --git a/hack/config.h b/hack/config.h +index ad3bbcf..03a8b02 100644 +--- a/hack/config.h ++++ b/hack/config.h +@@ -88,13 +88,18 @@ + /* #define PYRAMID_BUG */ /* avoid a bug on the Pyramid */ + /* #define NOWAITINCLUDE */ /* neither <wait.h> nor <sys/wait.h> exists */ + +-#define WIZARD "bruno" /* the person allowed to use the -D option */ ++/* ++ * Debian mods: use root for WIZARD, and move files that are static to ++ * /usr/share/ -- JEH ++ */ ++#define WIZARD "root" /* the person allowed to use the -D option */ ++#define SHAREDIR "/usr/share/games/bsdgames/hack/" + #define RECORD "record"/* the file containing the list of topscorers */ + #define NEWS "news" /* the file containing the latest hack news */ +-#define HELP "help" /* the file containing a description of the commands */ +-#define SHELP "hh" /* abbreviated form of the same */ +-#define RUMORFILE "rumors" /* a file with fortune cookies */ +-#define DATAFILE "data" /* a file giving the meaning of symbols used */ ++#define HELP SHAREDIR "help" /* the file containing a description of the commands */ ++#define SHELP SHAREDIR "hh" /* abbreviated form of the same */ ++#define RUMORFILE SHAREDIR "rumors" /* a file with fortune cookies */ ++#define DATAFILE SHAREDIR "data" /* a file giving the meaning of symbols used */ + #define FMASK 0660 /* file creation mask */ + #define HLOCK "perm" /* an empty file used for locking purposes */ + #define LLOCK "safelock" /* link to previous */ +diff --git a/hunt/hunt/hunt.6.in b/hunt/hunt/hunt.6.in +index 406296e..22e45ec 100644 +--- a/hunt/hunt/hunt.6.in ++++ b/hunt/hunt/hunt.6.in +@@ -387,7 +387,7 @@ how many of player's shots were ducked + how many slime kills player had + .It enemy + how many enemies were killed +-.tI friend ++.It friend + how many friends were killed (self and same team) + .It deaths + how many times player died +diff --git a/hunt/hunt/hunt.c b/hunt/hunt/hunt.c +index 11f4c44..28321bc 100644 +--- a/hunt/hunt/hunt.c ++++ b/hunt/hunt/hunt.c +@@ -394,7 +394,8 @@ broadcast_vec(s, vector) + + vec_cnt = 0; + for (ip = ifp; ip; ip = ip->ifa_next) +- if ((ip->ifa_addr->sa_family == AF_INET) && ++ if (ip->ifa_addr && ++ (ip->ifa_addr->sa_family == AF_INET) && + (ip->ifa_flags & IFF_BROADCAST)) + vec_cnt++; + +@@ -405,7 +406,8 @@ broadcast_vec(s, vector) + + vec_cnt = 0; + for (ip = ifp; ip; ip = ip->ifa_next) +- if ((ip->ifa_addr->sa_family == AF_INET) && ++ if (ip->ifa_addr && ++ (ip->ifa_addr->sa_family == AF_INET) && + (ip->ifa_flags & IFF_BROADCAST)) + memcpy(&(*vector)[vec_cnt++], ip->ifa_broadaddr, + sizeof(struct sockaddr_in)); +diff --git a/hunt/hunt/playit.c b/hunt/hunt/playit.c +index 9acf86e..881a4e7 100644 +--- a/hunt/hunt/playit.c ++++ b/hunt/hunt/playit.c +@@ -114,7 +114,7 @@ playit() + bad_con(); + /* NOTREACHED */ + } +- if (ntohl(version) != (unsigned long)HUNT_VERSION) { ++ if (ntohl(version) != (uint32_t)HUNT_VERSION) { + bad_ver(); + /* NOTREACHED */ + } +@@ -649,7 +649,7 @@ do_message() + bad_con(); + /* NOTREACHED */ + } +- if (ntohl(version) != (unsigned long)HUNT_VERSION) { ++ if (ntohl(version) != (uint32_t)HUNT_VERSION) { + bad_ver(); + /* NOTREACHED */ + } +diff --git a/number/number.c b/number/number.c +index c7559e1..3086a86 100644 +--- a/number/number.c ++++ b/number/number.c +@@ -78,9 +78,9 @@ static const char *const name1[] = { + + void convert(char *); + int main(int, char *[]); +-int number(const char *, int); +-void pfract(int); +-int unit(int, const char *); ++int number(const char *, int, int *); ++void pfract(int, int); ++int unit(int, const char *, int *); + void usage(void) __attribute__((__noreturn__)); + + int lflag; +@@ -131,7 +131,7 @@ void + convert(line) + char *line; + { +- int flen, len, rval; ++ int flen, len, rval, singular; + char *p, *fraction; + + flen = 0; +@@ -174,7 +174,7 @@ badnum: errx(1, "illegal number: %s", line); + --len; + } + +- rval = len > 0 ? unit(len, line) : 0; ++ rval = len > 0 ? unit(len, line, &singular) : 0; + if (fraction != NULL && flen != 0) + for (p = fraction; *p != '\0'; ++p) + if (*p != '0') { +@@ -182,10 +182,10 @@ badnum: errx(1, "illegal number: %s", line); + (void)printf("%sand%s", + lflag ? " " : "", + lflag ? " " : "\n"); +- if (unit(flen, fraction)) { ++ if (unit(flen, fraction, &singular)) { + if (lflag) + (void)printf(" "); +- pfract(flen); ++ pfract(flen, singular); + rval = 1; + } + break; +@@ -197,9 +197,10 @@ badnum: errx(1, "illegal number: %s", line); + } + + int +-unit(len, p) ++unit(len, p, singular) + int len; + const char *p; ++ int *singular; + { + int off, rval; + +@@ -208,7 +209,7 @@ unit(len, p) + if (len % 3) { + off = len % 3; + len -= off; +- if (number(p, off)) { ++ if (number(p, off, singular)) { + rval = 1; + (void)printf(" %s%s", + name3[len / 3], lflag ? " " : ".\n"); +@@ -217,14 +218,16 @@ unit(len, p) + } + for (; len > 3; p += 3) { + len -= 3; +- if (number(p, 3)) { ++ if (number(p, 3, singular)) { + rval = 1; + (void)printf(" %s%s", + name3[len / 3], lflag ? " " : ".\n"); + } + } + } +- if (number(p, len)) { ++ if (number(p, len, singular)) { ++ if (rval) ++ *singular = 0; + if (!lflag) + (void)printf(".\n"); + rval = 1; +@@ -233,17 +236,20 @@ unit(len, p) + } + + int +-number(p, len) ++number(p, len, singular) + const char *p; + int len; ++ int *singular; + { + int val, rval; + + rval = 0; ++ *singular = 1; + switch (len) { + case 3: + if (*p != '0') { + rval = 1; ++ *singular = 0; + (void)printf("%s hundred", name1[*p - '0']); + } + ++p; +@@ -262,33 +268,42 @@ number(p, len) + } + rval = 1; + } ++ if (val != 1) ++ *singular = 0; + break; + case 1: + if (*p != '0') { + rval = 1; + (void)printf("%s", name1[*p - '0']); + } ++ if (*p != '1') ++ *singular = 0; + } + return (rval); + } + + void +-pfract(len) ++pfract(len, singular) + int len; ++ int singular; + { + static const char *const pref[] = { "", "ten-", "hundred-" }; + + switch(len) { + case 1: +- (void)printf("tenths.\n"); ++ (void)printf("tenth"); + break; + case 2: +- (void)printf("hundredths.\n"); ++ (void)printf("hundredth"); + break; + default: +- (void)printf("%s%sths.\n", pref[len % 3], name3[len / 3]); ++ (void)printf("%s%sth", pref[len % 3], name3[len / 3]); + break; + } ++ if (!singular) { ++ printf("s"); ++ } ++ printf(".\n"); + } + + void +diff --git a/sail/pl_main.c b/sail/pl_main.c +index 6183420..b8b26b1 100644 +--- a/sail/pl_main.c ++++ b/sail/pl_main.c +@@ -219,7 +219,7 @@ reprint: + printf("\nInitial broadside %s (grape, chain, round, double): ", + n ? "right" : "left"); + fflush(stdout); +- scanf("%s", buf); ++ scanf("%9s", buf); + switch (*buf) { + case 'g': + load = L_GRAPE; +diff --git a/tests/number.-0.1 b/tests/number.-0.1 +index fea1e89..69c365b 100644 +--- a/tests/number.-0.1 ++++ b/tests/number.-0.1 +@@ -1,3 +1,3 @@ + minus + one. +-tenths. ++tenth. +diff --git a/tetris/scores.c b/tetris/scores.c +index d731e25..c2d36c9 100644 +--- a/tetris/scores.c ++++ b/tetris/scores.c +@@ -335,7 +335,8 @@ checkscores(hs, num) + continue; + } + } +- levelfound[sp->hs_level] = 1; ++ if (sp->hs_level < NLEVELS && sp->hs_level >= 0) ++ levelfound[sp->hs_level] = 1; + i++, sp++; + } + return (num > MAXHISCORES ? MAXHISCORES : num); +@@ -374,11 +375,13 @@ showscores(level) + for (i = MINLEVEL; i < NLEVELS; i++) + levelfound[i] = 0; + for (i = 0, sp = scores; i < nscores; i++, sp++) { +- if (levelfound[sp->hs_level]) +- sp->hs_time = 0; +- else { +- sp->hs_time = 1; +- levelfound[sp->hs_level] = 1; ++ if (sp->hs_level < NLEVELS && sp->hs_level >= 0) { ++ if (levelfound[sp->hs_level]) ++ sp->hs_time = 0; ++ else { ++ sp->hs_time = 1; ++ levelfound[sp->hs_level] = 1; ++ } + } + } + +@@ -433,7 +436,7 @@ printem(level, offset, hs, n, me) + continue; + } + sp = &hs[item]; +- (void)sprintf(buf, ++ (void)snprintf(buf, sizeof(buf), + "%3d%c %6d %-11s (%6d on %d)", + item + offset, sp->hs_time ? '*' : ' ', + sp->hs_score * sp->hs_level, +diff --git a/trek/setup.c b/trek/setup.c +index 1f14f27..fab5136 100644 +--- a/trek/setup.c ++++ b/trek/setup.c +@@ -234,11 +234,14 @@ setup() + for (i = 0; i < NQUADS; i++) + for (j = 0; j < NQUADS; j++) + { ++ signed char tmp; + q = &Quad[i][j]; + q->klings = q->bases = 0; + q->scanned = -1; + q->stars = ranf(9) + 1; +- q->holes = ranf(3) - q->stars / 5; ++ tmp = ranf(3) - q->stars / 5; ++ tmp = tmp < 0 ? 0 : tmp; ++ q->holes = tmp; + q->qsystemname = 0; + } + diff --git a/source/y/bsd-games/patches/0008-quiz-Add-answers-to-adults-babies.-Closes-659528.patch b/source/y/bsd-games/patches/0008-quiz-Add-answers-to-adults-babies.-Closes-659528.patch new file mode 100644 index 00000000..b08ecd08 --- /dev/null +++ b/source/y/bsd-games/patches/0008-quiz-Add-answers-to-adults-babies.-Closes-659528.patch @@ -0,0 +1,21 @@ +From: Tobias Quathamer <toddy@debian.org> +Date: Thu, 16 Feb 2012 12:53:51 +0100 +Subject: quiz: Add answers to adults/babies. Closes: #659528 + +--- + quiz/datfiles/babies | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/quiz/datfiles/babies b/quiz/datfiles/babies +index 5305c0c..45c4bb3 100644 +--- a/quiz/datfiles/babies ++++ b/quiz/datfiles/babies +@@ -3,7 +3,7 @@ kitten:cat|fox|skunk|rabbit|bobcat|panther + gosling:goose + colt|foal:horse|donkey|zebra + puppy:dog +-pup:seal|fox|beaver ++pup:seal|fox|beaver|dog|shark|rat + duckling:duck + fawn:deer + piglet|shoat:pig diff --git a/source/y/bsd-games/patches/0009-hangman-Error-out-on-1000-unsuitable-words.-Closes-6.patch b/source/y/bsd-games/patches/0009-hangman-Error-out-on-1000-unsuitable-words.-Closes-6.patch new file mode 100644 index 00000000..b55d7132 --- /dev/null +++ b/source/y/bsd-games/patches/0009-hangman-Error-out-on-1000-unsuitable-words.-Closes-6.patch @@ -0,0 +1,46 @@ +From: Peter Pentchev <roam@ringlet.net> +Date: Thu, 16 Feb 2012 22:37:50 +0100 +Subject: hangman: Error out on 1000 unsuitable words. Closes: #610270 + +--- + hangman/getword.c | 18 +++++++++++++++++- + 1 file changed, 17 insertions(+), 1 deletion(-) + +diff --git a/hangman/getword.c b/hangman/getword.c +index 1b5396a..dc42a53 100644 +--- a/hangman/getword.c ++++ b/hangman/getword.c +@@ -50,8 +50,10 @@ getword() + FILE *inf; + char *wp, *gp; + long pos; ++ int tries; + + inf = Dict; ++ tries = 0; + for (;;) { + pos = (double) rand() / (RAND_MAX + 1.0) * (double) Dict_size; + fseek(inf, pos, SEEK_SET); +@@ -66,7 +68,21 @@ getword() + if (!islower((unsigned char)*wp)) + goto cont; + break; +-cont: ; ++cont: ++ if (++tries >= 1000) { ++ move(MESGY, MESGX); ++ deleteln(); ++ deleteln(); ++ deleteln(); ++ move(MESGY, MESGX); ++ printw("No suitable word found, try using " ++ "another dictionary!"); ++ leaveok(stdscr, FALSE); ++ refresh(); ++ readch(); ++ leaveok(stdscr, TRUE); ++ die(0); ++ } + } + gp = Known; + wp = Word; diff --git a/source/y/bsd-games/patches/0010-Fix-typos-spotted-by-Lintian.patch b/source/y/bsd-games/patches/0010-Fix-typos-spotted-by-Lintian.patch new file mode 100644 index 00000000..8556d62d --- /dev/null +++ b/source/y/bsd-games/patches/0010-Fix-typos-spotted-by-Lintian.patch @@ -0,0 +1,35 @@ +From: Tobias Quathamer <toddy@debian.org> +Date: Fri, 24 Feb 2012 14:29:11 +0100 +Subject: Fix typos spotted by Lintian + +--- + atc/update.c | 2 +- + hack/hack.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/atc/update.c b/atc/update.c +index 3a145e5..39bbf2a 100644 +--- a/atc/update.c ++++ b/atc/update.c +@@ -153,7 +153,7 @@ update(dummy) + } + if (pp->altitude > 9) + /* "this is impossible" */ +- loser(pp, "exceded flight ceiling."); ++ loser(pp, "exceeded flight ceiling."); + if (pp->altitude <= 0) { + for (i = 0; i < sp->num_airports; i++) + if (pp->xpos == sp->airport[i].x && +diff --git a/hack/hack.c b/hack/hack.c +index 05141af..6e5028e 100644 +--- a/hack/hack.c ++++ b/hack/hack.c +@@ -527,7 +527,7 @@ pickup(int all) + } + lift_some: + if (inv_cnt() >= 52) { +- pline("Your knapsack cannot accomodate anymore items."); ++ pline("Your knapsack cannot accommodate anymore items."); + break; + } + if (wt > -5) diff --git a/source/y/bsd-games/patches/0011-Fix-format-security-compiling-errors.patch b/source/y/bsd-games/patches/0011-Fix-format-security-compiling-errors.patch new file mode 100644 index 00000000..e8f26c74 --- /dev/null +++ b/source/y/bsd-games/patches/0011-Fix-format-security-compiling-errors.patch @@ -0,0 +1,297 @@ +From: Tobias Quathamer <toddy@debian.org> +Date: Mon, 26 Mar 2012 10:51:46 +0200 +Subject: Fix format-security compiling errors + +--- + battlestar/room.c | 2 +- + cribbage/io.c | 10 +++++----- + hack/hack.apply.c | 2 +- + hack/hack.eat.c | 2 +- + hack/hack.end.c | 4 ++-- + hack/hack.invent.c | 4 ++-- + hack/hack.main.c | 2 +- + hack/hack.options.c | 2 +- + hack/hack.pager.c | 4 ++-- + hack/hack.potion.c | 2 +- + hack/hack.rumors.c | 2 +- + hack/hack.timeout.c | 2 +- + hunt/hunt/hunt.c | 4 ++-- + monop/misc.c | 2 +- + sail/assorted.c | 6 +++--- + 15 files changed, 25 insertions(+), 25 deletions(-) + +diff --git a/battlestar/room.c b/battlestar/room.c +index 5cbaf85..f99d5de 100644 +--- a/battlestar/room.c ++++ b/battlestar/room.c +@@ -58,7 +58,7 @@ writedes() + putchar(c); + } else { + if (c != '*') +- printf(truedirec(compass, c)); ++ printf("%s", truedirec(compass, c)); + compass++; + } + } +diff --git a/cribbage/io.c b/cribbage/io.c +index 8100ddd..17853b2 100644 +--- a/cribbage/io.c ++++ b/cribbage/io.c +@@ -103,13 +103,13 @@ msgcrd(c, brfrank, mid, brfsuit) + if (brfrank) + addmsg("%1.1s", rankchar[c.rank]); + else +- addmsg(rankname[c.rank]); ++ addmsg("%s", rankname[c.rank]); + if (mid != NULL) +- addmsg(mid); ++ addmsg("%s", mid); + if (brfsuit) + addmsg("%1.1s", suitchar[c.suit]); + else +- addmsg(suitname[c.suit]); ++ addmsg("%s", suitname[c.suit]); + return (TRUE); + } + +@@ -192,7 +192,7 @@ infrom(hand, n, prompt) + exit(74); + } + for (;;) { +- msg(prompt); ++ msg("%s", prompt); + if (incard(&crd)) { /* if card is full card */ + if (!is_one(crd, hand, n)) + msg("That's not in your hand"); +@@ -345,7 +345,7 @@ number(lo, hi, prompt) + int sum; + + for (sum = 0;;) { +- msg(prompt); ++ msg("%s", prompt); + if (!(p = get_line()) || *p == '\0') { + msg(quiet ? "Not a number" : + "That doesn't look like a number"); +diff --git a/hack/hack.apply.c b/hack/hack.apply.c +index 391cbf4..fa91c88 100644 +--- a/hack/hack.apply.c ++++ b/hack/hack.apply.c +@@ -392,7 +392,7 @@ dig() + digtxt = "Now what exactly was it that you were digging in?"; + mnewsym(dpx, dpy); + prl(dpx, dpy); +- pline(digtxt); /* after mnewsym & prl */ ++ pline("%s", digtxt); /* after mnewsym & prl */ + return (0); + } else { + if (IS_WALL(levl[dpx][dpy].typ)) { +diff --git a/hack/hack.eat.c b/hack/hack.eat.c +index e533ca5..4093f96 100644 +--- a/hack/hack.eat.c ++++ b/hack/hack.eat.c +@@ -132,7 +132,7 @@ opentin() + useup(tin.tin); + r = rn2(2 * TTSZ); + if (r < TTSZ) { +- pline(tintxts[r].txt); ++ pline("%s", tintxts[r].txt); + lesshungry(tintxts[r].nut); + if (r == 1) { /* SALMON */ + Glib = rnd(15); +diff --git a/hack/hack.end.c b/hack/hack.end.c +index 2ffa5cf..3145fd7 100644 +--- a/hack/hack.end.c ++++ b/hack/hack.end.c +@@ -535,7 +535,7 @@ outentry(int rank, struct toptenentry *t1, int so) + if (t1->maxlvl != t1->level) + Sprintf(eos(linebuf), " [max %d]", t1->maxlvl); + if (quit && t1->death[4]) +- Sprintf(eos(linebuf), t1->death + 4); ++ Sprintf(eos(linebuf), "%s", t1->death + 4); + } + if (killed) + Sprintf(eos(linebuf), " by %s%s", +@@ -548,7 +548,7 @@ outentry(int rank, struct toptenentry *t1, int so) + char *bp = eos(linebuf); + char hpbuf[10]; + int hppos; +- Sprintf(hpbuf, (t1->hp > 0) ? itoa(t1->hp) : "-"); ++ Sprintf(hpbuf, "%s", (t1->hp > 0) ? itoa(t1->hp) : "-"); + hppos = COLNO - 7 - strlen(hpbuf); + if (bp <= linebuf + hppos) { + while (bp < linebuf + hppos) +diff --git a/hack/hack.invent.c b/hack/hack.invent.c +index c33d502..2c8ed6e 100644 +--- a/hack/hack.invent.c ++++ b/hack/hack.invent.c +@@ -671,7 +671,7 @@ askchain(objchn, olets, allflag, fn, ckfn, max) + if (ckfn && !(*ckfn) (otmp)) + continue; + if (!allflag) { +- pline(xprname(otmp, ilet)); ++ pline("%s", xprname(otmp, ilet)); + addtopl(" [nyaq]? "); + sym = readchar(); + } else +@@ -717,7 +717,7 @@ void + prinv(obj) + struct obj *obj; + { +- pline(xprname(obj, obj_to_let(obj))); ++ pline("%s", xprname(obj, obj_to_let(obj))); + } + + static char * +diff --git a/hack/hack.main.c b/hack/hack.main.c +index ce4715c..88402f3 100644 +--- a/hack/hack.main.c ++++ b/hack/hack.main.c +@@ -418,7 +418,7 @@ not_recovered: + } + if (multi < 0) { + if (!++multi) { +- pline(nomovemsg ? nomovemsg : ++ pline("%s", nomovemsg ? nomovemsg : + "You can move again."); + nomovemsg = 0; + if (afternmv) +diff --git a/hack/hack.options.c b/hack/hack.options.c +index ea55cb8..ef7012e 100644 +--- a/hack/hack.options.c ++++ b/hack/hack.options.c +@@ -268,7 +268,7 @@ doset() + if (*--eop == ',') + *eop = 0; + } +- pline(buf); ++ pline("%s", buf); + } else + parseoptions(buf, FALSE); + +diff --git a/hack/hack.pager.c b/hack/hack.pager.c +index d72d800..03c0847 100644 +--- a/hack/hack.pager.c ++++ b/hack/hack.pager.c +@@ -104,7 +104,7 @@ dowhatis() + buf[0] = q; + (void) strncpy(buf + 1, " ", 7); + } +- pline(buf); ++ pline("%s", buf); + if (ep[-1] == ';') { + pline("More info? "); + if (readchar() == 'y') { +@@ -298,7 +298,7 @@ cornline(mode, text) + } + /* --- now we really do it --- */ + if (mode == 2 && linect == 1) /* topline only */ +- pline(texthead->line_text); ++ pline("%s", texthead->line_text); + else if (mode == 2) { + int curline, lth; + +diff --git a/hack/hack.potion.c b/hack/hack.potion.c +index 9d210d4..a906cb3 100644 +--- a/hack/hack.potion.c ++++ b/hack/hack.potion.c +@@ -286,7 +286,7 @@ strange_feeling(obj, txt) + if (flags.beginner) + pline("You have a strange feeling for a moment, then it passes."); + else +- pline(txt); ++ pline("%s", txt); + if (!objects[obj->otyp].oc_name_known && !objects[obj->otyp].oc_uname) + docall(obj); + useup(obj); +diff --git a/hack/hack.rumors.c b/hack/hack.rumors.c +index 383bba9..513d395 100644 +--- a/hack/hack.rumors.c ++++ b/hack/hack.rumors.c +@@ -112,7 +112,7 @@ outline(rumf) + if ((ep = strchr(line, '\n')) != 0) + *ep = 0; + pline("This cookie has a scrap of paper inside! It reads: "); +- pline(line); ++ pline("%s", line); + } + + void +diff --git a/hack/hack.timeout.c b/hack/hack.timeout.c +index ef239e4..2a8ee54 100644 +--- a/hack/hack.timeout.c ++++ b/hack/hack.timeout.c +@@ -126,7 +126,7 @@ stoned_dialogue() + long i = (Stoned & TIMEOUT); + + if (i > 0 && i <= SIZE(stoned_texts)) +- pline(stoned_texts[SIZE(stoned_texts) - i]); ++ pline("%s", stoned_texts[SIZE(stoned_texts) - i]); + if (i == 5) + Fast = 0; + if (i == 3) +diff --git a/hunt/hunt/hunt.c b/hunt/hunt/hunt.c +index 28321bc..58d112d 100644 +--- a/hunt/hunt/hunt.c ++++ b/hunt/hunt/hunt.c +@@ -910,7 +910,7 @@ leave(eval, mesg) + int serrno = errno; + fincurs(); + errno = serrno; +- err(eval, mesg ? mesg : ""); ++ err(eval, "%s", mesg ? mesg : ""); + } + + /* +@@ -924,7 +924,7 @@ leavex(eval, mesg) + const char *mesg; + { + fincurs(); +- errx(eval, mesg ? mesg : ""); ++ errx(eval, "%s", mesg ? mesg : ""); + } + + #if !defined(USE_CURSES) && defined(SIGTSTP) +diff --git a/monop/misc.c b/monop/misc.c +index 1d3a566..c363ca2 100644 +--- a/monop/misc.c ++++ b/monop/misc.c +@@ -101,7 +101,7 @@ get_int(prompt) + + for (;;) { + inter: +- printf(prompt); ++ printf("%s", prompt); + num = 0; + for (sp = buf; (c=getchar()) != '\n'; *sp++ = c) + if (c == -1) /* check for interrupted system call */ +diff --git a/sail/assorted.c b/sail/assorted.c +index cfc7d2a..ecb8406 100644 +--- a/sail/assorted.c ++++ b/sail/assorted.c +@@ -163,7 +163,7 @@ table(struct ship *from, struct ship *on, int rig, int shot, int hittable, int r + errx(1, "Unknown shot type %d", shot); + + } +- makesignal(from, message, on); ++ makesignal(from, "%s shot on $$", on, message); + if (roll == 6 && rig) { + switch(Rhit) { + case 0: +@@ -190,7 +190,7 @@ table(struct ship *from, struct ship *on, int rig, int shot, int hittable, int r + default: + errx(1, "Bad Rhit = %d", Rhit); + } +- makemsg(on, message); ++ makemsg(on, "%s", message); + } else if (roll == 6) { + switch (Hhit) { + case 0: +@@ -218,7 +218,7 @@ table(struct ship *from, struct ship *on, int rig, int shot, int hittable, int r + default: + errx(1, "Bad Hhit = %d", Hhit); + } +- makemsg(on, message); ++ makemsg(on, "%s", message); + } + /* + if (Chit > 1 && on->file->readyL&R_INITIAL && on->file->readyR&R_INITIAL) { diff --git a/source/y/bsd-games/patches/0012-Fix-include-stdio.h-C-incompatibility.patch b/source/y/bsd-games/patches/0012-Fix-include-stdio.h-C-incompatibility.patch new file mode 100644 index 00000000..9edb1b39 --- /dev/null +++ b/source/y/bsd-games/patches/0012-Fix-include-stdio.h-C-incompatibility.patch @@ -0,0 +1,43 @@ +From: Sven Joachim <svenjoac@gmx.de> +Date: Wed, 1 Nov 2017 09:03:28 +0100 +Subject: Fix include/stdio.h C++ incompatibility + +I have seen the following error when building bsdgames with +libncurses6: + +In file included from /usr/include/wchar.h:36:0, + from /usr/include/curses.h:400, + from dab/box.cc:48: +include/stdio.h:38:14: error: conflicting declaration of 'char* fgetln(FILE*, size_t*)' with 'C' linkage + extern char *fgetln(FILE *stream, size_t *len); + ^~~~~~ +In file included from /usr/include/curses.h:183:0, + from dab/box.cc:48: +include/stdio.h:38:14: note: previous declaration with 'C++' linkage + extern char *fgetln(FILE *stream, size_t *len); + ^~~~~~ +GNUmakefile:298: recipe for target 'dab/box.o' failed + +Declaring fgetln as extern "C" fixes this. The patch has been taken +from the Fedora bsd-games package, see +https://src.fedoraproject.org/rpms/bsd-games/blob/ac743bec7031199ec6fc09b6eb3760ffcfcfd277/f/bsd-games-2.17-stdio-c++.patch. +--- + include/stdio.h | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/include/stdio.h b/include/stdio.h +index 32a4b71..b1ac049 100644 +--- a/include/stdio.h ++++ b/include/stdio.h +@@ -35,5 +35,11 @@ + #include_next <stdio.h> + + #ifndef HAVE_fgetln ++#ifdef __cplusplus ++extern "C" { ++#endif + extern char *fgetln(FILE *stream, size_t *len); ++#ifdef __cplusplus ++} ++#endif + #endif diff --git a/source/y/bsd-games/patches/0013-Update-acronyms.patch b/source/y/bsd-games/patches/0013-Update-acronyms.patch new file mode 100644 index 00000000..50ae94da --- /dev/null +++ b/source/y/bsd-games/patches/0013-Update-acronyms.patch @@ -0,0 +1,2234 @@ +From: "Dr. Tobias Quathamer" <toddy@debian.org> +Date: Thu, 26 Apr 2018 14:52:22 +0200 +Subject: Update acronyms. + +Source: http://cvsweb.netbsd.org/bsdweb.cgi/src/share/misc/ +--- + wtf/acronyms | 448 +++++++++++++++--- + wtf/acronyms.comp | 1345 +++++++++++++++++++++++++++++++++++++++++++++++++---- + 2 files changed, 1643 insertions(+), 150 deletions(-) + +diff --git a/wtf/acronyms b/wtf/acronyms +index 5baeef2..07598d1 100644 +--- a/wtf/acronyms ++++ b/wtf/acronyms +@@ -1,252 +1,590 @@ +-$NetBSD: acronyms,v 1.145 2005/02/18 01:40:49 jsm Exp $ +- ++$NetBSD: acronyms,v 1.265 2018/01/13 03:35:40 pgoyette Exp $ ++10Q thank you ++10X thanks ++1337 elite ("leet") ++224 today, tomorrow, forever ++31337 elite ("eleet") ++4TW for the win ++A/S/L age/sex/location ++AAMOF as a matter of fact ++ABD all but dissertation ++AC audible chuckle ++ADD attention deficit disorder ++ADHD attention deficit (and) hyperactivity disorder ++ADN any day now ++ADOS attention deficit ... oh, shiny! ++AEAP as early as possible ++AFAIAC as far as I am concerned + AFAIC as far as I'm concerned +-AFAICR as far as I can recall ++AFAICR as far as I can {recall,remember} ++AFAICS as far as I can see + AFAICT as far as I can tell + AFAIK as far as I know +-AFAIR as far as I recall ++AFAIR as far as I {recall,remember} + AFAIU as far as I understand + AFD away from desktop + AFK away from keyboard +-AFU all fucked up + AFW away from window ++AGM annual general meeting ++AINEC and it's not even close ++AISE as I see it + AIU as I understand + AIUI as I understand it + AKA also known as ++AM ante meridiem ++AMA ask me anything ++AMOL a mountain of love + ASAIC as soon as I can + ASAP as soon as possible ++ASL age/sex/location ++ATEOTD at the end of the day + ATM at the moment ++ATM {automated,automatic} teller machine ++ATW around the world ++AWK Aho, Weinberger, [and] Kernighan + AWOL absent without official leave + AYBABTU all your base are belong to us ++AYF all your fault ++AYOR at your own risk + AYT are you there ++B& banned + B/C because +-B/S bullshit ++B/W bandwidth + B/W between ++BAI goodbye ++BAK back at keyboard + BBIAB be back in a bit + BBL [I'll] be back later ++BBR burnt beyond repair + BBS be back soon + BBT be back tomorrow +-BFD big fucking deal ++BCNU be seeing you ++BCNUL8R be seeing you later ++BCP best current practice ++BF best friend ++BF boyfriend ++BFF best {friend,friends} forever + BIAB back in a bit + BIAF back in a few + BIALW back in a little while + BIAS back in a second + BIAW back in a while +-BOATILAS bend over and take it like a slut ++BIDI boy, I did it ++BNYA burned now you are ++BOC but of course + BOFH bastard operator from hell +-BOGAHICA bend over, grab ankles, here it comes again +-BOHICA bend over here it comes again ++BOT back on topic ++BPM beam propagation method ++BPM beats per minute + BRB [I'll] be right back +-BS bullshit ++BSD booze, sex, drugs + BTDT been there, done that ++BTFT been there, fixed that + BTTH boot to the head + BTW by the way ++BYOB bring your own {beer,booze} ++CC credit card ++CEO chief executive officer ++CFV call for votes ++CFY calling for you ++CG center of gravity ++CHANOPS channel operator status + CMIIW correct me if I'm wrong + CNP continued [in my] next post + COB close of business [day] + COTS commercial off-the-shelf ++CPC cost per click ++CPE customer premises equipment ++CRM customer relationship management ++CTN can't talk now ++CU see you ++CUL see you later ++CYA see ya + CYA see you around ++CYE check your email ++D/B/A doing business as + D/L download ++DBA doing business as ++DBEYR don't believe everything you read ++DIAFYO did I ask for your opinion? + DIY do it yourself + DKDC don't know, don't care ++DM direct message ++DM dungeon master ++DME durable medical equipment ++DMEPOS durable medical equipment, prosthetics, orthotics and supplies ++DMZ demilitarized zone ++DND do not disturb ++DNF did not finish ++DNFT do not feed troll ++DOA dead on arrival ++DRY don't repeat yourself + DSTM don't shoot the messenger + DTRT do the right thing + DTWT do the wrong thing + DWIM do what I mean ++DYK do you know? ++EA early adopter ++ECR electronic cash register ++EDS eternal downward spiral ++EFT electronic funds transfer + EG evil grin ++EIE enough is enough + EMSG email message + EOB end of business [day] +-EOD end of discussion ++EOD end of {day,discussion} + EOL end of life ++EOM end of message ++EOS end of story ++ETA edited to add ++ETA estimated time of arrival + ETLA extended three letter acronym ++ETR early to rise + EWAG experienced wild-ass guess ++EZ easy ++EZPZ easy-peasy ++F9 fine + FAQ frequently asked question +-FCFS first come first served +-FIGJAM fuck I'm good, just ask me +-FIIK fuck[ed] if I know +-FIIR fuck[ed] if I remember +-FM fucking magic +-FOAD fall over and die ++FBOW for better or worse ++FCFS first come, first served ++FCOL for crying out loud ++FFS free for shipping ++FITB fill in the blank ++FNO for nerds only ++FNO from now on ++FOC free of charge ++FPS first person shooter ++FPS frames per second + FSDO for some definition of + FSVO for some value of +-FTFM fuck the fuckin' manual! +-FUBAR fucked up beyond all recognition +-FUD fear, uncertainty and doubt ++FTBFS fails to build from source ++FTFY fixed that for you ++FTHOI for the {heck,hell} of it ++FTL faster than light ++FTL for the loss ++FTR for the record ++FTTT from time to time ++FTW for the win ++FUD fear, uncertainty, [and] doubt + FWIW for what it's worth ++FYEO for your eyes only + FYI for your information + G grin + G/C garbage collect ++G2G got to go ++G2K good to know ++GA go ahead + GAC get a clue + GAL get a life ++GBTW get back to work ++GF girlfriend ++GFU good for you ++GFY good for you ++GG good game ++GGA good game all ++GGP good game partner ++GGWP good game, well played + GIGO garbage in, garbage out ++GIYF Google is your friend ++GJ good job ++GL good luck ++GLHF good luck, have fun ++GLINE global kill line ++GLWT good luck with that ++GM game master ++GMT Greenwich mean time + GMTA great minds think alike +-GTFO get the fuck out ++GOK God only knows ++GOP Grand Old Party ++GOWI get on with it ++GPS global positioning system ++GR8 great + GTG got to go ++GTH go to hell ++GTSY {glad,good} to see you ++GWS get well soon ++H8 hate + HAND have a nice day ++HE how embarrasing ++HF have fun + HHIS hanging head in shame ++HHOS ha ha, only serious + HICA here it comes again ++HME home medical equipment ++HNY happy new year ++HOAS hold on a second ++HOPS half-operator status + HTH hope this helps + IAC in any case ++IAE in any event + IANAL I am not a lawyer ++IAW in another window ++IAWTC I agree with this comment ++IAWTP I agree with this post ++IAY I adore you ++IB I'm back + IC I see +-ICBW I could be wrong ++ICBW I could be {worse,wrong} + ICCL I couldn't care less +-IHAFC I haven't a fucking clue ++ICUR I see you are ++ICYMI in case you missed it ++IDC I don't care ++IDGI I don't get it ++IDGW in a good way ++IDI I doubt it ++IDIFTL I did it for the lulz ++IDK I don't know ++IDRC I don't really care ++IDTS I don't think so ++IDTT I drink to that ++IFF if and only if ++IFTTT if this then that + IHBW I have been wrong +-IHNFC I have no fucking clue + IIANM if I am not mistaken +-IIRC if I recall correctly ++IIRC if I {recall,remember} correctly + IIUC if I understand correctly ++IKR I know, right? ++IKWYM I know what you mean ++ILU I love you ++ILY I love you + IMAO in my arrogant opinion ++IMBO in my biased opinion + IMCO in my considered opinion ++IME in my experience + IMHO in my humble opinion + IMNSHO in my not so humble opinion + IMO in my opinion ++INB4 in before ++INPO in no particular order + IOW in other words ++IPML I pissed myself laughing ++IQ intelligence quotient ++IRCOP Internet relay chat {operator,operators} ++IRCOPS Internet relay chat operator status + IRL in real life ++IRT in real time ++IRT in regards to + ISAGN I see a great need ++ISBN International Standard Book Number + ISTM it seems to me +-ISTR I seem to recall ++ISTR I seem to {recall,remember} ++ITC in this {channel,chat} ++ITT in this thread + ITYM I think you mean ++IUD insert usual disclaimers ++IUSS if you say so ++IW it's worse + IWBNI it would be nice if ++IYD in your dreams ++IYKWIM if you know what I mean + IYSS if you say so ++IYSWIM if you see what I mean + J/K just kidding +-JHD just hit ``delete'' ++JAM just a minute ++JAS just a second ++JFK John Fitzgerald Kennedy ++JFTR just for the record ++JFYI just for your information ++JGI just Google it ++JGI just got it ++JHD just hit delete + JIC just in case ++JJA just joking around + JK just kidding + JMO just my opinion ++JSYK just so you know + JTLYK just to let you know ++JW just wondering + KISS keep it simple, stupid + KITA kick in the ass ++KK okay, okay ++KLINE kill line ++KMA keep me advised ++KMA keep moving ahead ++KMA kill me already + KNF kernel normal form ++KOS kill on sight ++KTHX okay, thanks ++KTHXBAI okay, thanks. Goodbye. ++KWIM know what I mean? ++L8 late + L8R later +-LART luser attitude readjustment tool (ie, hammer) ++LART luser attitude readjustment tool + LBNL last but not least ++LGTM looks good to me + LJBF let's just be friends + LMAO laughing my ass off ++LMC let me check ++LMGTFY let me google that for you ++LMHO laughing my head off ++LMK let me know ++LMNO laughing my nuts off + LMSO laughing my socks off ++LOIC low orbit ion cannon + LOL laughing out loud ++LP long playing [record] + LTNS long time no see ++LWYL laugh with you later ++M8 mate ++MAD mutually assured destruction ++MBA master of business administration ++MFW my face when + MIA missing in action ++MMB message me back ++MO modus operandi + MOTAS member of the appropriate sex + MOTOS member of the opposite sex + MOTSS member of the same sex + MTF more to follow ++MVP minimum viable product ++MVP most valuable player + MYOB mind your own business ++N/A not {applicable,available} + N/M never mind ++NAFAIK not as far as I know ++NB nota bene + NBD no big deal +-NFC no fucking clue +-NFI no fucking idea +-NFW no fucking way ++NE1 anyone ++NEDM not even Doom music ++NFA no flaming allowed ++NFC no functional change ++NIFOC naked in front of computer + NIH not invented here ++NIMBY not in my backyard ++NM never mind + NMF not my fault + NMP not my problem ++NMU not much, you? ++NOM no offence meant ++NOOB newbie ++NORP normal ordinary {respectable,responsible} person + NOYB none of your business +-NOYFB none of your fucking business + NP no problem ++NPC non-player character + NRFPT not ready for prime time + NRN no reply necessary ++NRN not right now ++NSFW not suitable for work ++NTN no thanks needed ++NUNP no users, no problems ++NVM never mind ++NW no way ++NXT next ++NYPA not your personal army ++O2W off to work ++OAO over and out ++OBV obviously ++OBVS obviously ++ODTW others do the work (cf. "otdw source") ++OFC of course ++OH other half + OIC oh, I see +-OMG oh, my god ++OMG oh my God ++OMW on my way ++ONNA oh no, not again ++ONNTA oh no, not this again ++OOB out of bounds ++OOC out of curiosity ++OOI out of interest ++OOSOOM out of sight, out of mind ++OPS operator status ++OPS operators ++ORITE oh, right + OT off topic + OTL out to lunch + OTOH on the other hand ++OTP one true pairing ++OTS off the shelf + OTT over the top + OTTOMH off the top of my head ++OWTTE or words to that effect ++PC player character ++PC politically correct ++PCB polychlorinated biphenyl(s) ++PD police department ++PDA public display of affection ++PDQ pretty darn quick ++PDS please don't shout ++PEBCAK problem exists between chair and keyboard + PEBKAC problem exists between keyboard and chair +-PFO please fuck off ++PFI pay for inclusion + PFY pimply faced youth ++PHB pointy haired boss ++PIN personal identification number + PITA pain in the ass ++PITR {parent,parents} in the room + PKSP pound keys and spew profanity ++PM post meridiem ++PMFI problem magically fixed itself ++PMFJI pardon me for jumping in ++PMSL pissing myself laughing + PNG persona non grata + PNP plug and pray + POC point of contact ++POC proof of concept + POLA principle of least astonishment + POLS principle of least surprise +-POS piece of shit ++POS point of sale ++POV point of view ++PPL people + PPL pretty please ++PPP petty pet peeve ++PPS pulse per second (signal) ++PR public relations ++PSA prostate-specific antigen ++PSA public service announcement ++PTA parent-teacher association ++PTO {paid,personal} time off ++PTO parent-teacher organization ++PTO please turn over ++PTO power takeoff + PTV parental tunnel vision + QED quod erat demonstrandum ++QFT quoted for truth ++RA residential advisor + RFC request for comments ++RFD request for discussion ++RFE request for enhancements + RIP rest in peace + RL real life + RLC rod length check ++RMS Richard Matthew Stallman + ROFL rolling on floor laughing + ROFLMAO rolling on floor laughing my ass off ++ROI return on investment + ROTFL rolling on the floor laughing + RP responsible person ++RR railroad ++RSI repetitive strain injury + RSN real soon now +-RTFB read the fine/fucking book +-RTFC read the fine/fucking code +-RTFD read the fine/fucking documentation +-RTFM read the fine/fucking manual +-RTFMP read the fine/fucking man page +-RTFS read the fine/fucking source ++RSVP respondez s'il vous plait ("reply please") ++S/T self titled ++SAR search and rescue ++SAR some assembly required + SCNR sorry, could not resist + SEP someone else's problem +-SFA sweet fuck all ++SERP search engine results page ++SFAICT so far as I can tell + SHID slaps head in disgust + SIMCA sitting in my chair amused ++SITD still in the dark ++SMAP Soil Moisture Active Passive ++SMH shaking my head + SMLSFB so many losers, so few bullets + SMOP simple matter of programming +-SNAFU situation normal, all fucked up + SNERT snot-nosed egotistical rude teenager + SNMP sorry, not my problem +-SNR signal to noise ratio + SO significant other + SOB son of [a] bitch +-SOL shit out [of] luck + SOP standard operating procedure ++SRS serious ++SRSLY seriously + SSIA subject says it all +-STFA search the fucking archives +-STFU shut the fuck up +-STFW search the fucking web ++SSTO single stage to orbit ++STW search the web + SUS stupid user syndrome ++SUX sucks ++SUX2BU sucks to be you + SWAG silly, wild-assed guess + SWAHBI silly, wild-assed hare-brained idea + SWMBO she who must be obeyed ++SYS see you soon ++TA teaching assistant + TANSTAAFL there ain't no such thing as a free lunch ++TBA to be announced + TBC to be continued + TBD to be {decided,determined,done} ++TBH to be honest + TBOMK the best of my knowledge ++TCB taking care of business ++TCO taken care of ++TCO total cost of ownership ++TFOA things falling off aircraft ++TFW that feeling when ++TGIF thank goodness it's Friday + THNX thanks + THX thanks + TIA thanks in advance ++TIAVP this is a volunteer project ++TIC tonque in cheek ++TIL today I learned + TINC there is no cabal ++TINLA this is not legal advice ++TINWIS this is not what I said ++TJM that's just me + TLA three letter acronym +-TLB translation lookaside buffer ++TLA true love always ++TLC tender loving care ++TLDR too long, didn't read ++TM trademark ++TM trust me + TMA too many abbreviations ++TMG too much government + TMI too much information ++TMJ temporomandibular joint ++TMK to my knowledge ++TMTOWTDI there's more than one way to do it + TNF The NetBSD Foundation ++TOC table of contents ++TOCTOU time of check to time of use + TOEFL test of english as a foreign language ++TOH to other half ++TP toilet paper + TPTB the powers that be + TRT the right thing + TTBOMK to the best of my knowledge + TTFN ta ta for now ++TTM to the moderator ++TTT thought that too + TTYL talk to you later ++TTYS talk to you soon ++TWAIN thing without an interesting name ++TWDT the whole damn thing + TWIAVBP the world is a very big place + TY thank you + TYVM thank you very much + U/L upload ++UGT universal greeting time ++UR your ++UR {you're, you are} + UTSL use the source, Luke ++VCR video cassette recorder + VEG very evil grin ++VIP very important person + W/ with ++W/E whatever + W/O without ++W8 wait ++WAFWOT what a foolish waste of time + WAG wild-ass guess + WB welcome back ++WCPGW what could possibly go wrong ++WDYMBT what do you mean by that ++WELC working effectively with legacy code ++WFH working from home + WFM works for me + WIBNI wouldn't it be nice if + WIP work in progress +-WOFTAM waste of fucking time and money ++WMNC watch me not care + WOMBAT waste of money, brain, and time + WRT with respect to +-WTF {what,where,who,why} the fuck +-WTH {what,where,who,why} the hell +-WYSIWYG what you see is what you get ++WTB {waiting,want,willing} to buy ++WTF where's the food ++WTG way to go ++WTH {what,when,where,who,why} the hell ++WTS {waiting,want,willing} to sell ++WTT {waiting,want,willing} to trade ++WWJD what would Jesus do? ++YAGNI you ain't gonna need it + YALIMO you are lame, in my opinion ++YAOTM yet another off-topic message ++YCTAT you can't troll a troll ++YGM you got mail + YHBT you have been trolled + YHL you have lost + YKWIM you know what I mean +-YMA yo momma's ass + YMMV your mileage may vary ++YOLO you only live once + YW you're welcome ++YWSYLS you win some, you lose some ++ZIP zoning improvement plan +diff --git a/wtf/acronyms.comp b/wtf/acronyms.comp +index 6f2b66f..e27697c 100644 +--- a/wtf/acronyms.comp ++++ b/wtf/acronyms.comp +@@ -1,319 +1,1474 @@ +-$NetBSD: acronyms.comp,v 1.58 2005/02/16 00:04:23 kleink Exp $ +- ++$NetBSD: acronyms.comp,v 1.193 2018/03/01 19:09:33 ginsbach Exp $ + 3WHS three-way handshake ++8VSB 8-state vestigial side band modulation ++AA anti-aliasing ++AAA authentication, authorization, [and] accounting ++AAT average access time + ABI application binary interface ++ABR available bit rate ++AC alternating current ++ACI adjacent channel interferer ++ACID atomicity, consistency, isolation, durability ++ACK Amsterdam compiler kit ++ACK acknowledgement + ACL access control list ++ACL active current loop ++ACP auxillary control {process,program} + ACPI advanced configuration and power interface ++ACS access control set ++ACU automatic calling unit ++ADB Apple desktop bus + ADC analog [to] digital converter ++ADD acronym driven development ++ADO active data objects ++ADP automatic data processing + ADPCM adaptive differential pulse code modulation ++ADS alternate data stream + ADSL asymmetric digital subscriber line ++ADT abstract data type ++AES Advanced Encryption Standard ++AFS Andrew File System ++AGC automatic gain control + AGP accelerated graphics port ++AI analog input ++AI artificial intelligence ++AL access list ++AL active link ++ALE address latch enable ++ALS ambient light sensor ++ALU arithmetic and logical unit ++ALUA asymmetric logical unit access ++AM access method ++AM alignment mask + AM amplitude modulation + AMI alternate mark inversion +-ANSI american national standards institute ++AMP asymmetric multiprocessing ++AMQP advanced message queuing protocol ++AMT active management technology ++AN Arabic number ++ANR application not responding ++ANSI American National Standards Institute ++AO analog output ++AOL Alert-on-LAN ++AOS add or subtract + AP access point ++AP application processor + API application programming interface + APIC advanced programmable interrupt controller +-ARP address resolution protocol ++APIPA automatic private IP addressing ++APT advanced persistent threat ++AQM active queue management ++ARAT always running APIC timer ++ARC adaptive replacement cache ++ARC automatic reference counting ++ARM Advanced RISC Machines ++ARP Address Resolution Protocol ++ARPA Advanced Research Projects Agency + ARQ automatic repeat request ++ARR address range register ++ARU audio response unit + AS autonomous system ++ASC advanced smart cache ++ASCII American Standard Code for Information Interchange ++ASD agile software development ++ASE advanced software environment ++ASIC application-specific integrated circuit ++ASK amplitude shif keying ++ASLR address space layout randomization + ASN autonomous system number +-ASCII american standard code for information interchange ++ASPM active state power management ++ASQ automated software quality ++ASR address space register ++AST abstract syntax tree ++AST asynchronous trap ++AT access time + AT advanced technology + ATA advanced technology attachment + ATAPI advanced technology attachment packet interface ++ATC address translation cache + ATM asynchronous transfer mode + ATX advanced technology extended ++AV anti virus ++AVL Adelson-Velsky-Landis ++AVX advanced vector extensions ++BA byte align ++BAL basic assembly language ++BAR base address register ++BBS bulletin board system ++BCC blind carbon copy ++BCD binary coded decimal ++BCR byte count register ++BCS base configuration space ++BD baud ++BDD binary decision diagram ++BDI bit deinterleave ++BDUF big design up front + BEDO burst extended data output + BER basic encoding rules +-BER bit error rate +-BGP border gateway protocol +-BIOS basic input/output system ++BER bit error {rate,ratio} ++BFD binary {file,format} descriptor ++BFKL big fscking kernel lock ++BFS breadth-first search ++BFT binary file transfer ++BGA ball grid array ++BGP Border Gateway Protocol ++BGPSEC BGP Security ++BIND Berkeley Internet Name Daemon ++BIOS Basic Input/Output System ++BIOS built-in operating system ++BIST built-in self-test ++BIU bus interface unit ++BKDG BIOS and kernel developer's guide ++BLAS basic linear algebra subprograms ++BLC back light control + BLOB binary large object ++BM bus master ++BMC baseboard management controller ++BMIC bus master interface controller ++BN boundary neutral ++BNF Backus-Naur form ++BO binary output ++BOF beginning of file ++BOM beginning of message ++BOM byte order mark ++BP base pointer ++BP boot processor ++BPB BIOS parameter block ++BPDU bridge protocol data unit ++BPF Berkeley Packet Filter ++BPI bits per inch ++BPM business process modelling + BPS bits per second +-BSD berkeley software distribution ++BPSK binary phase shift keying ++BQS Berkeley quality software ++BRE basic regular expression ++BS backspace ++BS binary sequence ++BSA basic service area ++BSD Berkeley Software Distribution ++BSF bit scan forward ++BSOD blue screen of death ++BSP binary space partition ++BSP board support package ++BSP bootstrap processor ++BSR bit scan reverse ++BSS basic service set ++BSS block started by symbol ++BSSID basic service set identifier ++BT BitTorrent ++BT Bluetooth ++BT bit test ++BTC bit test [and] complement ++BTR bit test [and] reset ++BTS bit test [and] set ++BTS bug tracking system ++BW bandwidth ++BWM block-write mode ++CA certificate authority + CAD computer-aided design +-CAV constant angular velocity (as opposed to CLV) ++CAM computer assisted manufacturing ++CAM conditional access module ++CAM content addressable memory ++CARP Common Address Redundancy Protocol ++CAS column address strobe ++CAS compare and swap ++CAS computer algebra system ++CASE computer aided software engineering ++CAU control access unit ++CAV constant angular velocity ++CBC cipher block chaining ++CBR constant bit rate ++CC carbon coby + CCD charge coupled device ++CCI co-channel interferer ++CCNUMA cache-coherent non-uniform memory access ++CD cache disable + CD compact disc + CDDA compact disc digital audio ++CDMA code division multiple access ++CDP Cisco Discovery Protocol + CDRAM cache dynamic random access memory + CER canonical encoding rules +-CGA color graphics array ++CF compact flash ++CFB cipher feedback ++CFG context-free grammar ++CFG control-flow graph ++CG control gate ++CGA Color Graphics Adapter + CGI common gateway interface ++CGN Carrier-Grade NAT ++CHAP Challenge-Handshake Authentication Protocol + CHS cylinder/head/sector +-CIDR classless inter-domain routing ++CI continuous integration ++CI {common,component} interface ++CIDR Classless Inter-Domain Routing ++CIFS Common Internet File System ++CIL common intermediate language ++CIR carrier-to-interference ratio + CIS contact image sensor ++CISC complex instruction set {computer,computing} ++CJK Chinese, Japanese, [and] Korean ++CLF common log format + CLI command line interface +-CLV constant linear velocity (as opposed to CAV) ++CLR common language runtime ++CLTT closed loop thermal throttling ++CLUT color look-up table ++CLV constant linear velocity ++CM configuration management ++CMA concert multithread architecture ++CMS {configuration,content,course} management system ++CMI control {management,method} interface ++CMOS complementary metal-oxide-semiconductor ++CMP chip multi-processing ++CMS content management system + CMYK cyan magenta yellow black ++CN {common,canonical} name ++CNC computer numerical control ++CNR carrier-to-noise ratio ++COF current operating frequency ++COFDM coded orthogonal frequency division multiplexing + COFF common object file format ++COM component object model ++COMA cache-only memory architecture ++CORBA common object request broker architecture + COW copy-on-write ++CP continuous pilot ++CPB core performance boost ++CPE common phase error ++CPG clock pulse generator ++CPL current privilege level ++CPLD complex programmable logic device ++CPP C preprocessor ++CPS characters per second ++CPT command pass through + CPU central processing unit ++CR carriage return ++CRC cyclic redundancy check ++CRL carrier recovery loop + CRLF carriage return line feed + CRT cathode ray tube ++CS cable select ++CS chip select ++CS code segment ++CS computer science ++CSDL {common,conceptual} schema definition language ++CSI channel state information ++CSI common system interface + CSMA carrier sense multiple access + CSMA/CA carrier sense multiple access with collision avoidance + CSMA/CD carrier sense multiple access with collision detection ++CSR control [and] status registers ++CSRG Computer Systems Research Group + CSS cascading style sheets ++CSV comma-separated values ++CTM close to metal ++CTR counter [mode] + CTS clear to send +-CVS concurrent versions system ++CUA common user access ++CUT coordinated universal time ++CV control voltage ++CVE common vulnerabilities and exposures ++CVS Concurrent Versions System ++DA destination address ++DAA distributed application architecture ++DAB digital audio broadcasting + DAC digital [to] analog converter ++DAC discretionary access control ++DAD duplicate address detection ++DANE DNS-based Authentication of Named Entities ++DAO disk at once ++DAP Directory Access Protocol ++DAT digital audio tape ++DAT dynamic acceleration technology ++DB database ++DBA database administrator ++DBA dynamic bandwidth allocation ++DBB data bus buffer ++DBC design by contract ++DBL dynamic buffer limiting ++DBMS database management system ++DBS database server ++DC direct current ++DCC Direct Client-to-Client ++DCC direct cable connect ++DCD data carrier detect + DCE data control equipment + DCE distributed computing environment ++DCOM distributed component object model ++DCOP Desktop COmmunication Protocol ++DCS data collection systems + DCT discrete cosine transform ++DCU data cache unit + DDC display data channel ++DDE dynamic data exchange ++DDK device driver kit ++DDL data description language + DDR double data rate +-DDWG digital display working group ++DDS direct digital sound ++DDWG Digital Display Working Group ++DE debugging extensions ++DE desktop environment ++DEA data encryption algorithm ++DEK data encryption key ++DEP data execution prevention + DER distinguished encoding rules +-DFT discrete fourier transform +-DHCP dynamic host configuration protocol ++DES Data Encryption Standard ++DF don't fragment ++DFA deterministic finite automaton ++DFC data flow control ++DFS depth first search ++DFS distributed file system ++DFT diagnostic function test ++DFT discrete Fourier transform ++DGL data generation language ++DH Diffie-Hellman ++DHCP Dynamic Host Configuration Protocol + DIFS distributed inter-frame space ++DIMM dual inline memory module ++DIRT design in real time ++DL diode logic ++DL discrete logarithm ++DL download + DLE data link escape ++DLL dynamic link library ++DLP discrete logarithm problem + DMA direct memory access +-DNS domain name system ++DMI desktop management interface ++DMS document management system ++DMT discrete multitone modulation ++DNARD Digital network appliance reference design ++DND drag and drop ++DNS Domain Name System ++DNSSEC DNS Security Extensions ++DOE distributed object environment ++DOF data over fibre ++DOM document object model + DOS denial of service ++DOS disk operating system ++DP DisplayPort ++DPC deferred procedure call + DPCM differential pulse code modulation ++DPD dead peer detection ++DPI deep packet inspection + DPI dots per inch ++DPL descriptor privilege level ++DPS Display PostScript ++DPST display power savings technology ++DRAAS disaster recovery as a service + DRAM dynamic random access memory ++DRBG deterministic random bit generator ++DRI direct rendering infrastructure ++DRM digital rights management ++DRRS display refresh rate switching ++DS debug store ++DSA digital signature algorithm ++DSAP destination service access point ++DSB double-sideband modulation ++DSDT differentiated system descriptor table + DSL digital subscriber line ++DSL domain specific language ++DSLAM digital subscriber line access multiplexer ++DSN delivery status notification ++DSO dynamic shared object ++DSP digital signal processor + DSSS direct sequence spread spectrum + DTD document type definition + DTE data terminal equipment + DTE dumb terminal emulator ++DTL diode-transistor logic ++DTLS datagram transport layer security ++DTS digital thermal sensor ++DUT device under test ++DVB digital video broadcasting ++DVCS distributed version control system + DVD digital versatile disc +-DVI digital visual interface ++DVFS dynamic voltage and frequency scaling ++DVI device independent ++DVI Digital Visual Interface ++DVR digital video recorder ++E-XER extended XML encoding rules ++EABI embedded-application binary interface ++EAI Email Address Internationalization ++EAI Enterprise Application Integration ++EAP Extensible Authentication Protocol ++EAPOL EAP over Lan ++EBCDIC Extended Binary Coded Decimal Interchange Code ++EBR extended boot record ++EC elliptic curve ++ECC elliptic curve cryptography ++ECC error correction code ++ECDH elliptic curve Diffie-Hellman ++ECDL elliptic curve discrete logarithm ++ECDLP elliptic curve discrete logarithm problem ++ECDSA elliptic curve digital signature algorithm ++ECL emitter-coupled logic ++ECN explicit congestion notification + ECP enhanced capability port ++ECS enhanced chip set ++ECS extended configuration space ++EDAT enhanced dynamic acceleration technology ++EdDSA Edwards curve digital signature algorithm ++EDGE explicit data graph execution + EDID extended display identification data + EDO extended data out ++EDS electronical data sheet ++EEE energy efficient ethernet + EEPROM electrically erasable programmable read only memory ++EFI extensible firmware interface ++EFL emitter follower logic + EFM eight to fourteen modulation +-EGA enhanced graphics array ++EGA Enhanced Graphics Adapter + EGP exterior gateway protocol ++EH extension header ++EIDE enhanced IDE + EISA extended industry standard architecture + ELF executable and linking format ++ELS entry level system ++EMI electro-magnetic interference ++EMP electro-magnetic pulse ++EMR electro-magnetic radiation ++EOF end of file ++EOI end of interrupt ++EOL end of line ++EOT end of transmission ++EPIC explicitly parallel instruction computing + EPP enhanced parallel port + EPRML extended partial response, maximum likelihood + EPROM erasable programmable read only memory ++ERD emergency recovery disk ++ERD entity relationship diagram ++ERE extended regular expression + ESDRAM enhanced synchronous dynamic random access memory +-E-XER extended XML encoding rules ++ESS electronic switching system ++ESS extended service set ++ESSID extended service set identifier ++EST enhanced speedstep ++ETL extract, transform, load ++EU execution unit ++EULA end user license agreement + FAT file allocation table + FBRAM frame buffer random access memory ++FCL fiber channel loop + FCS frame check sequence ++FDC floppy disk controller ++FDD floppy disk drive + FDDI fiber distributed data interface +-FFS fast file system ++FDE full disk encryption ++FEA finite element analysis ++FEC forward error correction ++FET field-effect transistor ++FF finite field ++FF form feed ++FFDH finite-field Diffie-Hellman ++FFH functional fixed hardware ++FFI foreign function interface ++FFM focus follows mouse ++FFS Fast File System ++FFS find first set ++FFT fast Fourier transform ++FG floating gate + FHSS frequency hop spread spectrum ++FID frequency identifier ++FIFO first in, first out ++FILO first in, last out ++FIPS Federal Information Processing Standards + FIR fast infrared + FLOPS floating [point] operations per second ++FLOSS free/libre/open source software + FM frequency modulation ++FMR false match rate ++FOSS free/open source software ++FPGA field programmable gate array + FPM fast page mode ++FPR floating point register ++FPU floating point unit + FQDN fully qualified domain name +-FTP file transfer protocol ++FRR false rejection rate ++FRU field replaceable unit ++FS file system ++FSB front side bus ++FSCK file system check ++FSF Free Software Foundation ++FSK frequency shift keying ++FSM finite-state machine ++FTA fault tree analysis ++FTL flash translation layer ++FTP File Transfer Protocol ++FTPS File Transfer Protocol Secure ++FUS fast user switching ++FWH firmware hub ++FWS folding white space ++GAL generic array logic ++GAS generic address structure + GC garbage collector ++GCM Galois counter mode + GCR group-coded recording ++GDT global descriptor table ++GEM graphics environment manager ++GEM graphics execution manager ++GENA general event notification architecture ++GHC Glasgow Haskell compiler ++GID group identifier + GIF graphics interchange format +-GNU gnu's not unix +-GPL gnu/general public license ++GMCH graphics and memory controller hub ++GNU GNU's Not Unix ++GOP graphics output protocol ++GOT global offset table ++GPE general purpose event ++GPF general protection fault ++GPG GNU Privacy Guard ++GPL [GNU] General Public License ++GPR general purpose register ++GPS generalized processor sharing ++GPT GUID partition table + GPU graphics processing unit ++GR golden ratio + GRE generic routing encapsulation +-GUI graphics user interface +-HDCP high-bandwidth digital content protection +-HTML hyper-text markup language +-HTTP hyper-text transfer protocol ++GSI global system interrupt ++GUI graphical user interface ++GUID globally unique identifier ++GVFS git virtual file system ++HA high availability ++HAL hardware abstraction layer ++HAT hashed array tree ++HBA host bus adapter ++HCF halt and catch fire ++HCI host controller interface ++HCI human-computer interaction ++HCL hardware compatibility list ++HDCP High-bandwidth Digital Content Protection ++HDD hard disk drive ++HDL hardware description language ++HDMI High-Definition Multimedia Interface ++HDTV high-definition television ++HF high frequency ++HFM highest frequency mode ++HID human interface device ++HLL high-level language ++HMA high memory area ++HMI human-machine interface ++HOOD hierarchical object oriented design ++HP Hewlett-Packard ++HPC high performance computing ++HPET high precision event timer ++HSM hardware security module ++HSM hierarchical storage management ++HT hyper-threading ++HTC hardware thermal control ++HTCC high temperature co-fired ceramic ++HTML HyperText Markup Language ++HTT hyper-threading technology ++HTTP Hypertext Transfer Protocol ++HTTPS Hypertext Transfer Protocol Secure ++HVM hardware virtual machine ++HZ Hertz + I2O intelligent input/output +-IANA internet assigned number authority ++IA information assurance ++IAAS infrastructure as a service ++IANA Internet Assigned Numbers Authority ++IBC iterated block cipher ++IBM International Business Machines ++IBS instruction based sampling ++IBSS independent basic service set + IC integrated circuit +-ICB internet citizen's band +-ICMP internet control message protocol ++ICA independent computer architecture ++ICB Internet Citizen's Band ++ICE in-circuit emulator ++ICE internal compiler error ++ICH I/O controller hub ++ICMP Internet Control Message Protocol ++ICT information and communications technology ++ICW initialization command word ++IDA Intel dynamic acceleration ++IDCMP Intuition direct communication message port ++IDE integrated development environment + IDE integrated drive electronics ++IDPS intrusion detection [and] prevention system + IDRP inter-domain routing protocol +-IEC international electrotechnical commission +-IEEE institute [of] electrical [and] electronics engineers +-IESG internet engineering steering group +-IETF internet engineering task force ++IDS intrusion detection system ++IDT interrupt descriptor table ++IE Internet Explorer ++IEC International Electrotechnical Commission ++IEEE Institute of Electrical and Electronics Engineers ++IESG Internet Engineering Steering Group ++IETF Internet Engineering Task Force ++IF intermediate frequency ++IFCM isochronous flow control mode ++IFF Interchange File Format ++IGD Internet gateway device ++IGMP Internet Group Management Protocol + IGP interior gateway protocol +-IKE internet key exchange +-IMAP internet mail access protocol +-INCITS international committee on information technology standards +-IPC interprocess communication ++IHV independent hardware vendor ++IKE Internet key exchange ++ILM internal loopback mode ++ILOM integrated lights-out management ++ILP instruction level parallelism ++IM instant messaging ++IMAP Internet Message Access Protocol ++IMC integrated memory controller ++IMCR interrupt mode configuration register ++IMR interrupt mask register ++IMS information management system ++INCITS InterNational Committee for Information Technology Standards + IO input/output + IOCTL input/output control +-IP internet protocol +-IPNG internet protocol, next generation +-IPSEC internet protocol security +-IRC internet relay chat ++IOMMU input/output memory management unit ++IOT Internet of Things ++IP Internet Protocol ++IP intellectual property ++IPC interprocess communication ++IPE integrated programming environment ++IPI interprocessor interrupt ++IPNG Internet Protocol, Next Generation ++IPS in-plane switching ++IPS intrusion prevention system ++IPSEC Internet Protocol Security ++IRC Internet Relay Chat ++IRDA infrared data association + IRQ interrupt request +-IRTF internet research task force ++IRQL interrupt request level ++IRR interrupt request register ++IRTF Internet Research Task Force ++IS information system + ISA industry standard architecture ++ISA instruction set architecture + ISDN integrated services digital network + ISI inter-symbol interference +-ISM industrial, scientific and medical ++ISM industrial, scientific, [and] medical + ISN initial serial number +-ISO international standards organization +-ISOC internet society +-ISP internet service provider +-JPEG joint photographic experts group ++ISO International Standards Organization ++ISOC Internet Society ++ISP Internet service provider ++ISR in-service register ++ISR interrupt service routine ++IST interrupt stack table ++ISV independent software vendor ++IT information technology ++ITB Intel Turbo Boost ++ITIL information technology infrastructure library ++ITSM IT service management ++IV initialization vector ++IVT interrupt vector table ++JBOD just a bunch of disks ++JFET junction [gate] field-effect transistor ++JIT just in time ++JPEG Joint Photographic Experts Group ++JRE Java Runtime Environment ++JTAG joint test action group ++KASLR kernel address space layout randomization ++KB keyboard ++KB kilobyte ++KBD keyboard ++KBD kilobaud ++KLOC thousand lines of code ++KMS kernel-mode setting ++KPI kernel programming interface + KVA kernel virtual address ++KVM kernel virtual machine ++KVM kernel virtual memory ++KVM keyboard, video, [and] mouse ++LAMP Linux Apache MySQL {Perl,PHP,Python} + LAN local area network ++LAPIC local advanced programmable interrupt controller ++LAR load access rights + LBA logical block addressing ++LBS location-based service + LCD liquid crystal display + LCP link control protocol +-LDAP lightweight directory access protocol ++LDA local delivery agent ++LDAP Lightweight Directory Access Protocol ++LDR light-dependent resistor ++LDT local descriptor table ++LE logical extent + LED light emitting diode +-LIR local internet registry ++LER label edge router ++LF line feed ++LF low frequency ++LFM lowest frequency mode ++LFN long file names ++LFO low-frequency oscillation ++LFS log-structured file system ++LFU least frequently used ++LHP loop heat pipe ++LIFO last in, first out ++LILO LInux LOader ++LILO last in, last out ++LINT local interrupt ++LIR local Internet registry ++LKM {Linux,loadable} kernel module ++LKML Linux kernel mailing list ++LL load linked ++LL/SC load linked/store conditional + LLC logical link control ++LLDP link layer discovery protocol ++LLF low level format ++LLMNR link-local multicast name resolution ++LLVM Low Level Virtual Machine ++LM long mode ++LMM link management mode ++LNO loop nest optimization ++LOC lines of code ++LOM lights-out management ++LPC low pin count ++LPS local positioning system + LRC longitudinal redundancy check +-LSB least significant bit [or: byte] ++LRM left-to-right mark ++LRO left-to-right override ++LRU least recently used ++LSB Linux standards base ++LSB least significant {bit,byte} ++LSI large scale integration ++LSL load segment limit ++LSN Large Scale NAT ++LSN log sequence number ++LSR label switch router ++LTCC low temperature co-fired ceramic ++LTO linear tape-open ++LTO link time optimization ++LTR left to right ++LTR load task register ++LTR letter(-sized paper) ++LTS long term support ++LUA Lua Uppercase Accident + LUN logical unit number ++LV logical volume ++LVM logical volume management ++LVT local vector table ++LWP light-weight process + LZW Lempel Ziv Welch +-MAC medium access control ++MAC mandatory access control ++MAC {media,medium} access control ++MAC message authentication {check,code} ++MADT multiple APIC descriptor table ++MB megabyte ++MBA multi-boot agent + MBR master boot record ++MBS megabits per second ++MC memory controller ++MCA machine check architecture ++MCA MicroChannel architecture ++MCC multiversion concurrency control ++MCE machine check exception ++MCGA Multi-Color Graphics Array ++MCH memory controller hub ++MCM multi-chip module ++MCQ memory controlled queue ++MD machine-dependent ++MDA mail delivery agent ++MDA Monochrome Display Adapter + MDRAM multibank dynamic random access memory ++MESI modified, exclusive, shared, invalid ++MFC merge from current ++MFC Microsoft Foundation Classes + MFM modified frequency modulation ++MI machine-independent ++MIB management information base ++MIC message integrity {check,code} ++MID mobile Internet device + MIDI musical instrument digital interface +-MIME multipurpose internet mail extensions ++MIF management information format ++MII media independent interface ++MIM man in the middle ++MIMD multiple instruction, multiple data ++MIME Multipurpose Internet Mail Extensions ++MIMO multiple input multiple output + MIPS million instructions per second ++MISD multiple instruction, single data ++MIT Massachusetts Institute of Technology ++MITM man in the middle ++ML machine language ++ML machine learning ++ML mailing list ++ML markup language ++ML maximum likelihood ++MLC multi-level cell ++MLD multicast listener discovery ++MLHP micro loop heat pipe ++MMF multi-mode fiber ++MMIC monolithic microwave integrated circuit ++MMIO memory mapped input/output ++MMORPG massive multiplayer online role playing game + MMU memory management unit ++MMX matrix math extension ++MMX multimedia extension ++MMX multiple math extension ++MO magneto-optical ++MOESI modified, owned, exclusive, shared, invalid ++MOF maximum operating frequency ++MOSFET metal-oxide-semiconductor field-effect transistor ++MOSI modified, owned, shared, invalid ++MP multi-platform ++MP multiplayer ++MP {multiprocessing,multiprocessor} + MPEG moving picture experts group +-MSB most significant bit [or: byte] ++MPI message passing interface ++MPLS Multiprotocol Label Switching ++MPP massively parallel processor ++MPS memory pool system ++MPS multiprocessor specification ++MR modem ready ++MRU most recently used ++MS Microsoft ++MSB most significant {bit,byte} ++MSE mean square error + MSF minutes seconds frames ++MSI message signaled interrupt ++MSI modified, shared, invalid ++MSR machine state register + MSS maximum segment size ++MSTP Multiple Spanning Tree Protocol ++MT machine translation + MTA mail transfer agent ++MTBF mean time between failures ++MTP media transfer protocol ++MTRR memory type range register ++MTTF mean time to failure + MTU maximum transmission unit + MUA mail user agent ++MUD multi-user domain ++MVCC multiversion concurrency control + MWE module width encoding ++MX mail exchange ++NACK negative acknowledgement ++NAN not a number ++NAPT Network Address Port Translation ++NAS network attached storage + NAT network address translation + NAV network allocation vector +-NCP network control protocol ++NC numerical control ++NCO numerically-controlled oscillator ++NCP Network Control Protocol ++NCQ native command queuing ++ND neighbor discovery ++NDFA nondeterministic finite automaton ++NE numeric error ++NFA nondeterministic finite automaton ++NFC near-field communication ++NFCI no functional change intended + NFS network file system ++NFV network function virtualization ++NIA next instruction address ++NIC network information center + NIC network interface card ++NIDS network intrusion detection system ++NIP network interface protocol ++NIPS network intrusion prevention system + NIS network information service ++NIST National Institute of Standards and Technology ++NLS native language support ++NMI non-maskable interrupt ++NNTP Network News Transfer Protocol ++NOC network operations center ++NOP no operation ++NOS network operating system ++NP nondeterministic polynomial time + NRZ non-return to zero +-NUMA non uniform memory access ++NSA nation-state adversary ++NSA no such agency ++NSA National Security Agency ++NTM non-deterministic Turing machine ++NTP Network Time Protocol ++NUMA non-uniform memory access ++NVRAM non-volatile random access memory ++NW not write-through ++NX no execute ++OAEP optimal asymmetric encryption padding ++OBO off by one ++OBOE off by one error + OCL object constraint language + OCR optical character recognition ++ODCM on-demand clock modulation ++ODT on-die termination + OEM original equipment manufacturer ++OFB output feedback + OFDM orthogonal frequency division multiplexing ++OFET organic field-effect transistor ++OLAP online analytical processing ++OLE object linking and embedding ++OLTP online transaction processing ++ONFI open nand flash interface ++OO OpenOffice ++OO object oriented ++OOB out of band ++OOE out of order execution ++OOM out of memory ++OOO OpenOffice.org ++OOP object oriented programming ++OOPS object oriented programming systems ++OOSE object oriented software engineering ++OPM operations per minute ++OPS operations per second ++OQL Object Query Language ++ORB object request broker ++ORM object-relational mapping ++OS operating system ++OSD open source definition + OSF open software foundation ++OSI Open Source Initiative + OSI open systems interconnection ++OSPF open shortest path first ++OSPM OS power management ++OSS open sound system ++OSS open source software ++OSVW operating system visible workarounds + OTP one time password ++OTP open telecom platform ++OU organizational unit ++OUI organizationally unique identifier ++OWL Web Ontology Language ++P2P PCI to PCI ++P2P peer to peer ++PA phase accumulator ++PA physical address ++PAAS platform as a service ++PAC phase-amplitude converter ++PAE physical address extension ++PAL phase alternating line ++PAL programmable array logic + PAM pluggable authentication modules + PAM pulse amplitude modulation ++PAP password authentication protocol ++PAT page attribute table + PAT port address translation ++PATA parallel ATA + PAX portable archive exchange ++PBE pending break encoding ++PBE programming by example + PC personal computer ++PC program counter ++PCB printed circuit board ++PCB process control block ++PCC Portable C Compiler ++PCD page-level cache disable ++PCE performance-monitor counter enable + PCI peripheral component interconnect ++PCM phase change memory + PCM pulse code modulation +-PCMCIA personal computer memory card international association ++PCMCIA Personal Computer Memory Card International Association ++PCP Port Control Protocol ++PD public domain ++PDA personal digital assistant ++PDA pushdown automaton ++PDAG propositional directed acyclic graph ++PDB power distribution board ++PDF portable document format ++PDM pulse-duration modulation ++PDN pull-down network ++PDP page {descriptor,directory} page ++PDS product data sheet + PDU protocol data unit +-PDP page descriptor page ++PE protection enable ++PEAP Protected EAP ++PECI platform environment control interface ++PEP protocol extension protocol + PER packed encoding rules +-PERL practical extraction [and] report language +-PGP pretty good privacy ++PFS perfect forward secrecy ++PGAS partitioned global address space ++PGE page global enable ++PGP Pretty Good Privacy ++PHB PCI host bridge ++PHP PHP: Hypertext Preprocessor ++PIC position independent code + PIC programmable interrupt controller ++PICNIC problem in chair, not in computer + PID process id +-PIN personal identification number ++PIE position independent executable ++PIL Priority Interrupt Level ++PIM personal information manager ++PIM platform-independent model + PIO programmed input/output ++PIPT physically indexed, physically tagged ++PIQ prefetch input queue ++PIT programmable interrupt timer ++PIV personal identity verification ++PKCS public-key cryptography standards ++PKI public key infrastructure ++PLC programmable logic controller ++PLD programmable logic device + PLL phase locked loop ++PLRU pseudo LRU ++PLTM package level thermal management ++PM power management ++PM {phase,pulse} modulation ++PME power management event ++PMI platform management interrupt ++PMIO port-mapped input/output + PMT photo-multiplier tube ++PMU power management unit + PNG portable network graphics +-POP post office protocol +-POSIX portable operating system interface [for] unix ++PNP plug and play ++POE power over ethernet ++POF probability of failure ++POP Post Office Protocol ++POP power on password ++POSIX Portable Operating System Interface [for Unix] + POST power on self test + POTS plain old telephone system +-PPP point-to-point protocol +-PPPOA point-to-point protocol over ATM +-PPPOE point-to-point protocol over ethernet ++PP pair programming ++PPB PCI [to] PCI bridge ++PPC PowerPC ++PPI pixels per inch ++PPM pages per minute ++PPP Point-to-Point Protocol ++PPPOA Point-to-Point Protocol over ATM ++PPPOE Point-to-Point Protocol over Ethernet ++PPU physics processing unit ++PRBS pseudorandom bit sequence ++PRG pseudorandom generator ++PRF pseudorandom function [family] + PRML partial response, maximum likelihood ++PRN pseudorandom {noise,number} ++PRNG pseudorandom number generator + PROM programmable read only memory ++PRP pseudorandom permutation ++PSD power spectral density ++PSE page size extensions ++PSK phase shift keying ++PSK pre-shared key ++PSTN public switched telephone network ++PSW program status word + PTE page table entry + PTLA pseudo top level aggregator + PTP page table page +-PSTN public switched telephone network ++PTV perceived target value ++PU processing unit ++PUN physical unit number ++PV physical volume ++PVG physical volume group ++PVI protected-mode virtual interrupt ++PVST Per-VLAN Spanning Tree + PWM pulse width modulation ++PXE preboot execution environment ++QA quality assurance ++QAM quadrature amplitude modulation ++QAM quality assurance management ++QBE query by example ++QC quality control ++QDI quasi delay insensitive + QOS quality of service +-RAID redundant array of inexpensive disks ++QVL qualified vendor list ++R/O read only ++R/W read/write ++RA receiver address ++RA remote assistance ++RA resource affinity ++RA router advertisement ++RAD rapid application development ++RAID redundant array of {independent,inexpensive} disks + RAM random access memory ++RAS reliability, availability and serviceability ++RAS remote access service ++RAS restartable atomic sequence ++RAS row address strobe ++RBF radial basis function ++RBT red-black tree ++RC release candidate ++RC remote control ++RCS Revision Control System + RCS revision control system +-RFC request for comments ++RCU read, copy, update ++RDB Rigid Disk Block ++RDBMS relational database management system ++RDF Resource Description Framework ++RDM relational data model ++RDMA remote direct memory access ++RE regular expression ++REST representational state transfer ++RF radio frequency ++RFI radio frequency interference ++RFO request for ownership + RGB red green blue +-RIP routing information protocol +-RIR regional internet registry +-RISC reduced instruction set computing ++RGBA red green blue alpha ++RGMII reduced gigabit media independent interface ++RH read hit ++RHEL Red Hat Enterprise Linux ++RHL Red Hat Linux ++RIB routing information base ++RIFF Resource Interchange File Format ++RIP Routing Information Protocol ++RIR regional Internet registry ++RISC reduced instruction set {computer,computing} ++RKM ROM Kernel Manual + RLE run length encoding + RLL run length limited ++RLO right-to-left override ++RM read miss ++RMI remote method invocation ++RMO Relaxed Memory Ordering ++RMPM rapid memory power management ++RMS root mean square ++RMW read, modify, write ++RNG random number generator + ROM read only memory ++RPC remote procedure call ++RPKI resource PKI ++RPL requested privilege level + RPM revolutions per minute ++RPN reverse Polish notation ++RPVST Rapid Per-VLAN Spanning Tree ++RR random replacement ++RR round robin ++RS relay station ++RSA Rivest, Shamir, [and] Adleman ++RSIP Realm Specific IP ++RSN Robust Secure Network ++RSS really simple syndication ++RSS residual sum of squares ++RSTP Rapid Spanning Tree Protocol ++RT real time ++RTC real time clock ++RTC real time computing + RTF rich text format ++RTL register transfer language ++RTL resistor-transistor logic ++RTL right to left ++RTOS real time operating system + RTS request to send +-RTT round time trip +-S/PDIF sony/phillips digital interface ++RTT round trip time ++RUP rational unified process ++RW Rabin-Williams ++RWM read-write memory ++RX {receive,receiver} ++S/PDIF Sony/Philips Digital Interface Format ++SA security advisory ++SA security association ++SA source address ++SA structured analysis ++SAAS software as a service + SACD super audio compact disc ++SAD security association database ++SAL system abstraction layer + SAM serial access memory +-SASI shugart associates system interface (predecessor to SCSI) ++SAM sum addressed memory ++SAN storage area network ++SAP service access point ++SAPIC streamlined advanced programmable interrupt controller ++SASD structured analysis, structured design ++SASI Shugart Associates System Interface ++SASL simple authentication [and] security layer + SATA serial advanced technology attachment +-SCSI small computer system interface ++SB sound blaster ++SBU standard build unit ++SC store conditional ++SCA source code analyzer ++SCADA supervisory control and data acquisition ++SCC single chip cloud ++SCC source code control ++SCCS Source Code Control System ++SCI scalable coherent interface ++SCI system control interrupt ++SCM software configuration management ++SCM source code management ++SCM storage-class memory ++SCP secure copy ++SCSI Small Computer System Interface ++SCTP Stream Control Transmission Protocol ++SDI symbol deinterleave ++SDK software development kit ++SDL Simple Declarative Language ++SDL Simple Direct-media Layer ++SDLC {software,system,systems} development life cycle ++SDN software defined networking + SDRAM synchronous dynamic random access memory ++SDS software defined storage ++SDT syntax-directed translation ++SEGV segmentation violation ++SEO search engine optimization ++SFC sequential function chart ++SFI simple firmware interface ++SFI software fault isolation ++SFTP SSH File Transfer Protocol ++SFTP Serial File Transfer Protocol ++SFTP Simple File Transfer Protocol ++SGMII serial gigabit media independent interface + SGRAM synchronous graphics random access memory ++SHA secure hash algorithm ++SIDH supersingular isogeny Diffie-Hellman ++SIEM security information and event management + SIFS short inter-frame space +-SIP session initiation protocol ++SIMD single instruction, multiple data ++SIMM single inline memory module ++SIP Session Initiation Protocol ++SIR signal-to-interference ratio + SIR slow infrared ++SISD single instruction, single data ++SLC single-level cell + SLDRAM synchronous-link dynamic random access memory ++SLED single large expensive disk ++SLI scalable link interface ++SLI scan-line interleave ++SLOC source lines of code ++SLRU segmented LRU ++SMA smart memory access ++SMAF system management action field ++SMAP Simple Mail Access Protocol ++SMAP supervisor mode access prevention + SMART self-monitoring analysis and reporting technology ++SMBIOS System Management BIOS ++SMC system management controller ++SMEP supervisor mode execution protection ++SMF single mode fiber ++SMI structure of management information ++SMI system management interrupt ++SMM system management mode + SMP symmetric multiprocessing +-SMTP simple mail transfer protocol +-SNMP simple network management protocol ++SMT simultaneous multithreading ++SMTP Simple Mail Transfer Protocol ++SMU system management unit ++SNAP Sub-Network Access Protocol ++SNMP Simple Network Management Protocol ++SNR signal-to-noise ratio ++SOA service oriented architecture ++SOAP Simple Object Access Protocol ++SOC system on chip ++SOF start of frame ++SOH start of header ++SOHO small office/home office ++SOL serial over LAN ++SP service pack ++SP stack pointer ++SPARC scalable processor architecture ++SPARQL SPARQL Protocol and RDF Query Language ++SPD security policy database + SPD serial presence detect ++SPDIF Sony/Philips digital interface format ++SPI serial peripheral interface ++SPI stateful packet inspection ++SPL system interrupt priority level ++SPL spinlock ++SPMD single process, multiple data ++SPR special purpose register ++SPT sectors per track ++SQA software quality assurance ++SQL Structured Query Language + SRAM static random access memory ++SRC sample rate conversion ++SS self-snoop ++SS stack segment ++SSA static single assignment ++SSAP source service access point ++SSB single-sideband modulation ++SSD solid state drive ++SSE streaming SIMD extensions + SSFDC solid state floppy disc card + SSH secure shell ++SSI server side includes ++SSID service set identifier + SSL secure sockets layer ++SSP stack smashing protection ++STC software thermal control ++STD state transition diagram ++STP Spanning Tree Protocol + STP shielded twisted pair +-SVGA super video graphics array ++SUS Single Unix Specification ++SUT system under test ++SVG scalable vector graphics ++SVGA Super Video Graphics Array ++SVM secure virtual machine ++SVM support vector machine ++SVR System V Release ++SVS Separate Virtual Space ++SWF Shockwave Flash ++SWIG simplified wrapper [and] interface generator ++SYR symbol timing recovery ++TA test assertion ++TA transmitter address ++TAI international atomic time ++TAO track at once ++TAOCP The Art of Computer Programming ++TAP Test Anything Protocol ++TAS test and set ++TB terabyte ++TCB trace capture buffer ++TCB trusted computing base ++TCC thermal control circuit + TCL tool command language +-TCP transmission control protocol ++TCP Transmission Control Protocol ++TCQ tagged command queueing ++TDC time [to] digital converter + TDD test driven development ++TDD time division duplex ++TDM time division multiplexing ++TDMA time division multiple access ++TDOA time difference of arrival ++TDP thermal design {point,power} ++TECO Text Editor and Corrector + TFT thin film transistor ++TFTP Trivial File Transfer Protocol ++TIAS try it and see + TIFF tagged image file format ++TITS try it to see ++TK temporal key ++TKIP Temporal Key Integrity Protocol + TLA top level aggregator +-TLB transition lookaside buffer ++TLB translation lookaside buffer + TLD top level domain ++TLS thread local storage ++TLS transport layer security ++TM Turing machine ++TM thermal monitor + TMDS transition minimized differential signaling ++TMO timeout ++TOD time of day ++TOS terms of service ++TOS trusted operating system ++TOS type of service ++TP transaction processing ++TPI tracks per inch ++TPM transactions per minute ++TPM trusted platform module ++TPR task priority register ++TPS transactions per second ++TPS transmission parameters signaling ++TR task register + TR token ring ++TRL timing recovery loop ++TRNG true random number generator ++TS terminal services ++TS time series ++TS time stamp ++TS transport stream ++TSC time stamp counter ++TSD time stamp disable ++TSL test, set, lock ++TSO time sharing option ++TSO Total Store Ordering ++TSP Time-Stamp Protocol ++TSP Tunnel Setup Protocol ++TSP time synchronization protocol ++TSP traveling salesman problem ++TSS task state segment + TTL time to live ++TTL transistor-transistor logic ++TTM translation table maps + TTY teletype ++TUI {terminal,text-based,textual} user interface ++TX {transmit out,transmitter} + TZ time zone ++UAC user {access,account} control ++UAF use-after-free + UART universal asynchronous receiver/transmitter ++UAT user acceptance testing ++UB undefined behavior + UC uncacheable +-UDO ultra density optical (storage) +-UDP user datagram protocol +-UFS unix file system ++UCS uniform-cost search ++UDMA ultra DMA ++UDO ultra density optical ++UDP User Datagram Protocol ++UEFI unified extensible firmware interface ++UFS Unix File System ++UGA universal graphics adapter ++UI unit interval ++UI user interface ++UID unique identifier ++UID user identifier ++UL upload ++UMA uniform memory access ++UMA upper memory area ++UMB upper memory block + UML unified modeling language ++UMPC ultra-mobile PC ++UPNP universal plug and play + UPS uninterruptible power supply + URI uniform resource identifier + URL uniform resource locator ++URN uniform resource name + USART universal synchronous/asynchronous receiver/transmitter + USB universal serial bus + USWC uncacheable speculative write combining ++UT unit test ++UTC coordinated universal time + UTP unshielded twisted pair +-UUCP unix-to-unix copy protocol ++UUCP Unix-to-Unix Copy Protocol ++UUID universally unique identifier ++UUOC useless use of cat ++UUT unit under test ++UX user experience ++VA vertical alignment ++VA virtual address ++VA volt-ampere + VAX virtual address extension ++VB Visual Basic ++VCA variable-gain amplifier ++VCC common collector voltage ++VCF voltage-controlled filter + VCM virtual channel memory +-VESA video electronics standards association +-VGA video graphics array ++VCO voltage-controlled oscillator ++VCS version control system ++VESA Video Electronics Standards Association ++VFO variable-frequency oscillator ++VG volume group ++VGA Video Graphics Array ++VHDCI very high density cable interconnect ++VID voltage level identifier ++VIPT virtually indexed, physically tagged ++VIVT virtually indexed, virtually tagged + VLAN virtual local area network +-VLSM variable length subnetting mask +-VM virtual memory ++VLIW very long instruction word ++VLSI very large scale integration ++VLSM variable length subnet mask ++VM virtual {machine,memory} ++VME virtual mode extension ++VMX vector multimedia extensions ++VMX virtual machine extensions ++VOD video on demand + VPN virtual private network ++VR virtual reality + VRAM video random access memory ++VRF virtual routing and forwarding ++VRM voltage regulator module ++VRRP Virtual Router Redundancy Protocol ++VSTP VLAN Spanning Tree Protocol ++VTP VLAN Trunking Protocol ++W watt ++W3C World Wide Web Consortium + WAN wide area network +-WAP wireless application protocol ++WAP Wireless Application Protocol ++WAP wireless access point ++WDT watchdog timer ++WEP Wired Equivalent Privacy ++WFI wait for interrupt ++WFQ weighted fair queuing ++WH write hit ++WIFI wireless fidelity + WLAN wireless local area network ++WM write miss ++WMI Windows Management Instrumentation ++WOL Wake-on-LAN ++WOM Wake-on-Modem ++WOR Wake-on-Ring ++WORM write once read many ++WP WordPerfect ++WP word processor ++WP write protect ++WPA Wi-Fi Protected Access ++WPA2 Wi-Fi Protected Access II ++WPS Wi-Fi Protected Setup + WRAM window random access memory ++WS web services ++WTC write through caching ++WWAN wireless wide area network + WWW world wide web ++WYSIWYG what you see is what you get ++XBAR crossbar ++XDMCP X Display Manager control protocol + XER XML encoding rules +-XGA extended graphics array +-XML extensible markup language ++XGA Extended Graphics Array ++XIP execute in place ++XML Extensible Markup Language ++XOR exclusive or ++XP extreme programming ++XSI X/Open System Interface + XSL extensible stylesheet language ++XSS cross site scripting + XT extended technology ++XUL XML user interface language ++YACC yet another compiler compiler ++YAWPFAPR you are welcome; please file a problem report ++YP Yellow Pages ++YTD year to date ++ZBR zone bit recording + ZFOD zero-filled on demand ++ZIF zero insertion force ++ZIFS zero insertion force socket ++ZMA zone multicast address diff --git a/source/y/bsd-games/patches/0015-primes-Update-to-NetBSD-CVS-2018-02-03.patch b/source/y/bsd-games/patches/0015-primes-Update-to-NetBSD-CVS-2018-02-03.patch new file mode 100644 index 00000000..a21e51f0 --- /dev/null +++ b/source/y/bsd-games/patches/0015-primes-Update-to-NetBSD-CVS-2018-02-03.patch @@ -0,0 +1,813 @@ +From: "Dr. Tobias Quathamer" <toddy@debian.org> +Date: Thu, 26 Apr 2018 15:42:07 +0200 +Subject: primes: Update to NetBSD CVS, 2018-02-03 + +--- + exec.objs | 2 +- + primes/Makefile.bsd | 4 +- + primes/pattern.c | 13 ++-- + primes/pr_tbl.c | 16 ++-- + primes/primes.6 | 41 +++++++--- + primes/primes.c | 148 ++++++++++++++++++------------------ + primes/primes.h | 33 ++++++-- + primes/spsp.c | 215 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + 8 files changed, 362 insertions(+), 110 deletions(-) + create mode 100644 primes/spsp.c + +diff --git a/exec.objs b/exec.objs +index f081d60..3c184cc 100644 +--- a/exec.objs ++++ b/exec.objs +@@ -100,7 +100,7 @@ phantasia/setup phantglobs.o setup.o + pig pig.o + pom pom.o + ppt ppt.o +-primes pattern.o pr_tbl.o primes.o ++primes pattern.o pr_tbl.o primes.o spsp.o + quiz quiz.o rxp.o lib/fgetln.o + rain rain.o lib/getprogname.o + random random.o +diff --git a/primes/Makefile.bsd b/primes/Makefile.bsd +index 4235041..8ed845c 100644 +--- a/primes/Makefile.bsd ++++ b/primes/Makefile.bsd +@@ -1,8 +1,8 @@ +-# $NetBSD: Makefile,v 1.7 2004/02/08 13:16:25 jsm Exp $ ++# $NetBSD: Makefile,v 1.8 2014/10/02 21:36:37 ast Exp $ + # @(#)Makefile 8.1 (Berkeley) 5/31/93 + + PROG= primes +-SRCS= pattern.c pr_tbl.c primes.c ++SRCS= pattern.c pr_tbl.c primes.c spsp.c + MAN= primes.6 + DPADD= ${LIBM} + LDADD= -lm +diff --git a/primes/pattern.c b/primes/pattern.c +index 1196056..52784a5 100644 +--- a/primes/pattern.c ++++ b/primes/pattern.c +@@ -1,4 +1,4 @@ +-/* $NetBSD: pattern.c,v 1.6 2003/08/07 09:37:33 agc Exp $ */ ++/* $NetBSD: pattern.c,v 1.7 2014/10/02 21:36:37 ast Exp $ */ + + /* + * Copyright (c) 1989, 1993 +@@ -32,21 +32,20 @@ + * SUCH DAMAGE. + */ + +-#include <sys/cdefs.h> ++#include <sys/types.h> ++ + #ifndef lint + #if 0 + static char sccsid[] = "@(#)pattern.c 8.1 (Berkeley) 5/31/93"; + #else +-__RCSID("$NetBSD: pattern.c,v 1.6 2003/08/07 09:37:33 agc Exp $"); ++__RCSID("$NetBSD: pattern.c,v 1.7 2014/10/02 21:36:37 ast Exp $"); + #endif + #endif /* not lint */ + + /* + * pattern - the Eratosthenes sieve on odd numbers for 3,5,7,11 and 13 + * +- * By: Landon Curt Noll chongo@toad.com +- * +- * chongo <for a good prime call: 391581 * 2^216193 - 1> /\oo/\ ++ * By Landon Curt Noll, http://www.isthe.com/chongo/index.html /\oo/\ + * + * To avoid excessive sieves for small factors, we use the table below to + * setup our sieve blocks. Each element represents a odd number starting +@@ -440,4 +439,4 @@ const char pattern[] = { + 0,0,1,1,0,0,0,0,1,1,0,0,1,0,1,0,0,0,0,0,0,1,0,1,1,0,1,1,0,1,0,0,0,1,0,0,1,0,1, + 0,0,1,1,0,1,0,0,1,1,0,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,0,0,0,0,0,1 + }; +-const int pattern_size = (sizeof(pattern)/sizeof(pattern[0])); ++const size_t pattern_size = (sizeof(pattern)/sizeof(pattern[0])); +diff --git a/primes/pr_tbl.c b/primes/pr_tbl.c +index d45204a..5e2f813 100644 +--- a/primes/pr_tbl.c ++++ b/primes/pr_tbl.c +@@ -1,4 +1,4 @@ +-/* $NetBSD: pr_tbl.c,v 1.7 2003/08/07 09:37:33 agc Exp $ */ ++/* $NetBSD: pr_tbl.c,v 1.8 2014/10/02 21:36:37 ast Exp $ */ + + /* + * Copyright (c) 1989, 1993 +@@ -37,24 +37,24 @@ + #if 0 + static char sccsid[] = "@(#)pr_tbl.c 8.1 (Berkeley) 5/31/93"; + #else +-__RCSID("$NetBSD: pr_tbl.c,v 1.7 2003/08/07 09:37:33 agc Exp $"); ++__RCSID("$NetBSD: pr_tbl.c,v 1.8 2014/10/02 21:36:37 ast Exp $"); + #endif + #endif /* not lint */ + + /* + * prime - prime table + * +- * By: Landon Curt Noll chongo@toad.com, ...!{sun,tolsoft}!hoptoad!chongo ++ * By Landon Curt Noll, http://www.isthe.com/chongo/index.html /\oo/\ + * +- * chongo <for a good prime call: 391581 * 2^216193 - 1> /\oo/\ +- * +- * We are able to sieve 2^32-1 because this table has primes up to 65537 ++ * We are able to sieve 2^32-1 because this table has primes up to 65537 + * and 65537^2 > 2^32-1. + */ + ++#include <stddef.h> ++ + #include "primes.h" + +-const ubig prime[] = { ++const uint64_t prime[] = { + 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103, + 107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199, + 211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313, +@@ -546,4 +546,4 @@ const ubig prime[] = { + }; + + /* pr_limit - largest prime in the prime table */ +-const ubig *pr_limit = &prime[(sizeof(prime)/sizeof(prime[0]))-1]; ++const uint64_t *const pr_limit = &prime[(sizeof(prime)/sizeof(prime[0]))-1]; +diff --git a/primes/primes.6 b/primes/primes.6 +index 14d5101..aa000ef 100644 +--- a/primes/primes.6 ++++ b/primes/primes.6 +@@ -1,4 +1,4 @@ +-.\" $NetBSD: primes.6,v 1.2 2004/02/09 23:25:47 wiz Exp $ ++.\" $NetBSD: primes.6,v 1.6 2018/02/03 15:40:29 christos Exp $ + .\" + .\" Copyright (c) 1989, 1993 + .\" The Regents of the University of California. All rights reserved. +@@ -33,11 +33,9 @@ + .\" @(#)factor.6 8.1 (Berkeley) 5/31/93 + .\" + .\" +-.\" By: Landon Curt Noll chongo@toad.com, ...!{sun,tolsoft}!hoptoad!chongo ++.\" By Landon Curt Noll, http://www.isthe.com/chongo/index.html /\oo/\ + .\" +-.\" chongo <for a good prime call: 391581 * 2^216193 - 1> /\oo/\ +-.\" +-.Dd February 8, 2004 ++.Dd February 2, 2018 + .Dt PRIMES 6 + .Os + .Sh NAME +@@ -45,6 +43,7 @@ + .Nd generate primes + .Sh SYNOPSIS + .Nm primes ++.Op Fl dh + .Op Ar start Op Ar stop + .Sh DESCRIPTION + The +@@ -60,18 +59,18 @@ value must be at least 0 and not greater than + .Ar stop . + The + .Ar stop +-value must not be greater than 4294967295. ++value must not be greater than 3825123056546413050. + The default value of + .Ar stop +-is 4294967295. ++is 3825123056546413050. + .Pp + When the + .Nm + utility is invoked with no arguments, + .Ar start +-is read from standard input. ++is read from standard input and + .Ar stop +-is taken to be 4294967295. ++is taken to be 3825123056546413050. + The + .Ar start + value may be preceded by a single +@@ -80,10 +79,28 @@ The + .Ar start + value is terminated by a non-digit character (such as a newline). + The input line must not be longer than 255 characters. ++.Pp ++When given the ++.Fl d ++argument, ++.Nm ++prints the difference between the current and the previous prime. ++.Pp ++When given the ++.Fl h ++argument, ++.Nm ++prints the prime numbers in hexadecimal. + .Sh DIAGNOSTICS + Out of range or invalid input results in +-an appropriate error message +-being written to standard error. ++an appropriate error message to standard error. ++.Sh AUTHORS ++.An -nosplit ++Originally by ++.An Landon Curt Noll , ++extended to some 64-bit primes by ++.An Colin Percival . + .Sh BUGS ++This + .Nm +-won't get you a world record. ++program won't get you a world record. +diff --git a/primes/primes.c b/primes/primes.c +index 2d93594..a022aa9 100644 +--- a/primes/primes.c ++++ b/primes/primes.c +@@ -1,4 +1,4 @@ +-/* $NetBSD: primes.c,v 1.12 2004/01/27 20:30:30 jsm Exp $ */ ++/* $NetBSD: primes.c,v 1.22 2018/02/03 15:40:29 christos Exp $ */ + + /* + * Copyright (c) 1989, 1993 +@@ -34,31 +34,31 @@ + + #include <sys/cdefs.h> + #ifndef lint +-__COPYRIGHT("@(#) Copyright (c) 1989, 1993\n\ +- The Regents of the University of California. All rights reserved.\n"); ++__COPYRIGHT("@(#) Copyright (c) 1989, 1993\ ++ The Regents of the University of California. All rights reserved."); + #endif /* not lint */ + + #ifndef lint + #if 0 + static char sccsid[] = "@(#)primes.c 8.5 (Berkeley) 5/10/95"; + #else +-__RCSID("$NetBSD: primes.c,v 1.12 2004/01/27 20:30:30 jsm Exp $"); ++__RCSID("$NetBSD: primes.c,v 1.22 2018/02/03 15:40:29 christos Exp $"); + #endif + #endif /* not lint */ + + /* + * primes - generate a table of primes between two values + * +- * By: Landon Curt Noll chongo@toad.com, ...!{sun,tolsoft}!hoptoad!chongo +- * +- * chongo <for a good prime call: 391581 * 2^216193 - 1> /\oo/\ ++ * By Landon Curt Noll, http://www.isthe.com/chongo/index.html /\oo/\ + * + * usage: +- * primes [start [stop]] ++ * primes [-dh] [start [stop]] + * + * Print primes >= start and < stop. If stop is omitted, +- * the value 4294967295 (2^32-1) is assumed. If start is ++ * the value SPSPMAX is assumed. If start is + * omitted, start is read from standard input. ++ * -d: print difference to previous prime, e.g. 3 (1) ++ * -h: print primes in hexadecimal + * + * validation check: there are 664579 primes between 0 and 10^7 + */ +@@ -66,11 +66,12 @@ __RCSID("$NetBSD: primes.c,v 1.12 2004/01/27 20:30:30 jsm Exp $"); + #include <ctype.h> + #include <err.h> + #include <errno.h> ++#include <inttypes.h> + #include <limits.h> + #include <math.h> +-#include <memory.h> + #include <stdio.h> + #include <stdlib.h> ++#include <string.h> + #include <unistd.h> + + #include "primes.h" +@@ -80,49 +81,35 @@ __RCSID("$NetBSD: primes.c,v 1.12 2004/01/27 20:30:30 jsm Exp $"); + * + * We only sieve the odd numbers. The base of our sieve windows are always + * odd. If the base of table is 1, table[i] represents 2*i-1. After the +- * sieve, table[i] == 1 if and only iff 2*i-1 is prime. ++ * sieve, table[i] == 1 if and only if 2*i-1 is prime. + * + * We make TABSIZE large to reduce the overhead of inner loop setup. + */ +-char table[TABSIZE]; /* Eratosthenes sieve of odd numbers */ ++static char table[TABSIZE]; /* Eratosthenes sieve of odd numbers */ + +-/* +- * prime[i] is the (i-1)th prime. +- * +- * We are able to sieve 2^32-1 because this byte table yields all primes +- * up to 65537 and 65537^2 > 2^32-1. +- */ +-extern const ubig prime[]; +-extern const ubig *pr_limit; /* largest prime in the prime array */ ++static int dflag, hflag; + +-/* +- * To avoid excessive sieves for small factors, we use the table below to +- * setup our sieve blocks. Each element represents a odd number starting +- * with 1. All non-zero elements are factors of 3, 5, 7, 11 and 13. +- */ +-extern const char pattern[]; +-extern const int pattern_size; /* length of pattern array */ ++static void primes(uint64_t, uint64_t); ++static uint64_t read_num_buf(void); ++static void usage(void) __dead; + +-int main(int, char *[]); +-void primes(ubig, ubig); +-ubig read_num_buf(void); +-void usage(void) __attribute__((__noreturn__)); + + int +-main(argc, argv) +- int argc; +- char *argv[]; ++main(int argc, char *argv[]) + { +- ubig start; /* where to start generating */ +- ubig stop; /* don't generate at or above this value */ ++ uint64_t start; /* where to start generating */ ++ uint64_t stop; /* don't generate at or above this value */ + int ch; + char *p; + +- /* Revoke setgid privileges */ +- setregid(getgid(), getgid()); +- +- while ((ch = getopt(argc, argv, "")) != -1) ++ while ((ch = getopt(argc, argv, "dh")) != -1) + switch (ch) { ++ case 'd': ++ dflag++; ++ break; ++ case 'h': ++ hflag++; ++ break; + case '?': + default: + usage(); +@@ -131,10 +118,10 @@ main(argc, argv) + argv += optind; + + start = 0; +- stop = BIG; ++ stop = (uint64_t)(-1); + + /* +- * Convert low and high args. Strtoul(3) sets errno to ++ * Convert low and high args. Strtoumax(3) sets errno to + * ERANGE if the number is too large, but, if there's + * a leading minus sign it returns the negation of the + * result of the conversion, which we'd rather disallow. +@@ -146,14 +133,14 @@ main(argc, argv) + errx(1, "negative numbers aren't permitted."); + + errno = 0; +- start = strtoul(argv[0], &p, 10); ++ start = strtoumax(argv[0], &p, 0); + if (errno) + err(1, "%s", argv[0]); + if (*p != '\0') + errx(1, "%s: illegal numeric format.", argv[0]); + + errno = 0; +- stop = strtoul(argv[1], &p, 10); ++ stop = strtoumax(argv[1], &p, 0); + if (errno) + err(1, "%s", argv[1]); + if (*p != '\0') +@@ -165,7 +152,7 @@ main(argc, argv) + errx(1, "negative numbers aren't permitted."); + + errno = 0; +- start = strtoul(argv[0], &p, 10); ++ start = strtoumax(argv[0], &p, 0); + if (errno) + err(1, "%s", argv[0]); + if (*p != '\0') +@@ -181,18 +168,18 @@ main(argc, argv) + if (start > stop) + errx(1, "start value must be less than stop value."); + primes(start, stop); +- exit(0); ++ return (0); + } + + /* + * read_num_buf -- +- * This routine returns a number n, where 0 <= n && n <= BIG. ++ * This routine returns a number n, where 0 <= n && n <= ULONG_MAX. + */ +-ubig +-read_num_buf() ++static uint64_t ++read_num_buf(void) + { +- ubig val; +- char *p, buf[100]; /* > max number of digits. */ ++ uint64_t val; ++ char *p, buf[LINE_MAX]; /* > max number of digits. */ + + for (;;) { + if (fgets(buf, sizeof(buf), stdin) == NULL) { +@@ -200,13 +187,13 @@ read_num_buf() + err(1, "stdin"); + exit(0); + } +- for (p = buf; isblank(*p); ++p); ++ for (p = buf; isblank((unsigned char)*p); ++p); + if (*p == '\n' || *p == '\0') + continue; + if (*p == '-') + errx(1, "negative numbers aren't permitted."); + errno = 0; +- val = strtoul(buf, &p, 10); ++ val = strtoumax(buf, &p, 0); + if (errno) + err(1, "%s", buf); + if (*p != '\n') +@@ -218,28 +205,27 @@ read_num_buf() + /* + * primes - sieve and print primes from start up to and but not including stop + */ +-void +-primes(start, stop) +- ubig start; /* where to start generating */ +- ubig stop; /* don't generate at or above this value */ ++static void ++primes(uint64_t start, uint64_t stop) + { + char *q; /* sieve spot */ +- ubig factor; /* index and factor */ ++ uint64_t factor; /* index and factor */ + char *tab_lim; /* the limit to sieve on the table */ +- const ubig *p; /* prime table pointer */ +- ubig fact_lim; /* highest prime for current block */ +- ubig mod; /* temp storage for mod */ ++ const uint64_t *p; /* prime table pointer */ ++ uint64_t fact_lim; /* highest prime for current block */ ++ uint64_t mod; /* temp storage for mod */ ++ uint64_t prev = 0; + + /* + * A number of systems can not convert double values into unsigned + * longs when the values are larger than the largest signed value. +- * We don't have this problem, so we can go all the way to BIG. ++ * We don't have this problem, so we can go all the way to ULONG_MAX. + */ + if (start < 3) { +- start = (ubig)2; ++ start = 2; + } + if (stop < 3) { +- stop = (ubig)2; ++ stop = 2; + } + if (stop <= start) { + return; +@@ -263,8 +249,13 @@ primes(start, stop) + for (p = &prime[0], factor = prime[0]; + factor < stop && p <= pr_limit; factor = *(++p)) { + if (factor >= start) { +- printf("%lu\n", (unsigned long) factor); ++ printf(hflag ? "%" PRIx64 : "%" PRIu64, factor); ++ if (dflag) { ++ printf(" (%" PRIu64 ")", factor - prev); ++ } ++ putchar('\n'); + } ++ prev = factor; + } + /* return early if we are done */ + if (p <= pr_limit) { +@@ -298,11 +289,10 @@ primes(start, stop) + /* note highest useful factor and sieve spot */ + if (stop-start > TABSIZE+TABSIZE) { + tab_lim = &table[TABSIZE]; /* sieve it all */ +- fact_lim = (int)sqrt( +- (double)(start)+TABSIZE+TABSIZE+1.0); ++ fact_lim = sqrt(start+1.0+TABSIZE+TABSIZE); + } else { + tab_lim = &table[(stop-start)/2]; /* partial sieve */ +- fact_lim = (int)sqrt((double)(stop)+1.0); ++ fact_lim = sqrt(stop+1.0); + } + /* sieve for factors >= 17 */ + factor = 17; /* 17 is first prime to use */ +@@ -315,26 +305,36 @@ primes(start, stop) + } else { + q = &table[mod ? factor-(mod/2) : 0]; + } +- /* sive for our current factor */ ++ /* sieve for our current factor */ + for ( ; q < tab_lim; q += factor) { + *q = '\0'; /* sieve out a spot */ + } +- } while ((factor=(ubig)(*(p++))) <= fact_lim); ++ factor = *p++; ++ } while (factor <= fact_lim); + + /* + * print generated primes + */ + for (q = table; q < tab_lim; ++q, start+=2) { + if (*q) { +- printf("%lu\n", (unsigned long) start); ++ if (start > SIEVEMAX) { ++ if (!isprime(start)) ++ continue; ++ } ++ printf(hflag ? "%" PRIx64 : "%" PRIu64, start); ++ if (dflag && (prev || (start <= *pr_limit))) { ++ printf(" (%" PRIu64 ")", start - prev); ++ } ++ putchar('\n'); ++ prev = start; + } + } + } + } + +-void +-usage() ++static void ++usage(void) + { +- (void)fprintf(stderr, "usage: primes [start [stop]]\n"); ++ (void)fprintf(stderr, "usage: primes [-dh] [start [stop]]\n"); + exit(1); + } +diff --git a/primes/primes.h b/primes/primes.h +index a032c9b..2c00446 100644 +--- a/primes/primes.h ++++ b/primes/primes.h +@@ -1,4 +1,4 @@ +-/* $NetBSD: primes.h,v 1.5 2003/08/07 09:37:34 agc Exp $ */ ++/* $NetBSD: primes.h,v 1.7 2018/02/03 15:40:29 christos Exp $ */ + + /* + * Copyright (c) 1989, 1993 +@@ -37,14 +37,35 @@ + /* + * primes - generate a table of primes between two values + * +- * By: Landon Curt Noll chongo@toad.com, ...!{sun,tolsoft}!hoptoad!chongo ++ * By Landon Curt Noll, http://www.isthe.com/chongo/index.html /\oo/\ + * +- * chongo <for a good prime call: 391581 * 2^216193 - 1> /\oo/\ + */ + +-/* ubig is the type that holds a large unsigned value */ +-typedef unsigned long ubig; /* must be >=32 bit unsigned value */ +-#define BIG ULONG_MAX /* largest value will sieve */ ++#include <stdint.h> + + /* bytes in sieve table (must be > 3*5*7*11) */ + #define TABSIZE 256*1024 ++ ++/* ++ * prime[i] is the (i-1)th prime. ++ * ++ * We are able to sieve 2^32-1 because this byte table yields all primes ++ * up to 65537 and 65537^2 > 2^32-1. ++ */ ++ ++extern const uint64_t prime[]; /* must be >=32 bit unsigned values */ ++extern const uint64_t *const pr_limit; /* largest prime in the prime array */ ++ ++/* Maximum size sieving alone can handle. */ ++#define SIEVEMAX 4295098368ULL ++ ++/* ++ * To avoid excessive sieves for small factors, we use the table below to ++ * setup our sieve blocks. Each element represents an odd number starting ++ * with 1. All non-zero elements are factors of 3, 5, 7, 11 and 13. ++ */ ++extern const char pattern[]; ++extern const size_t pattern_size; /* length of pattern array */ ++ ++/* Test for primality using strong pseudoprime tests. */ ++int isprime(uint64_t); +diff --git a/primes/spsp.c b/primes/spsp.c +new file mode 100644 +index 0000000..998751c +--- /dev/null ++++ b/primes/spsp.c +@@ -0,0 +1,215 @@ ++/* $NetBSD: spsp.c,v 1.2 2018/02/03 15:40:29 christos Exp $ */ ++ ++/*- ++ * Copyright (c) 2014 Colin Percival ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ */ ++ ++#include <sys/cdefs.h> ++#ifndef lint ++__COPYRIGHT("@(#) Copyright (c) 1989, 1993\ ++ The Regents of the University of California. All rights reserved."); ++#endif /* not lint */ ++ ++#ifndef lint ++#if 0 ++static char sccsid[] = "@(#)primes.c 8.5 (Berkeley) 5/10/95"; ++#else ++__RCSID("$NetBSD: spsp.c,v 1.2 2018/02/03 15:40:29 christos Exp $"); ++#endif ++#endif /* not lint */ ++ ++#include <assert.h> ++#include <stddef.h> ++#include <stdint.h> ++ ++#include "primes.h" ++ ++/* Return a * b % n, where 0 <= n. */ ++static uint64_t ++mulmod(uint64_t a, uint64_t b, uint64_t n) ++{ ++ uint64_t x = 0; ++ uint64_t an = a % n; ++ ++ while (b != 0) { ++ if (b & 1) { ++ x += an; ++ if ((x < an) || (x >= n)) ++ x -= n; ++ } ++ if (an + an < an) ++ an = an + an - n; ++ else if (an + an >= n) ++ an = an + an - n; ++ else ++ an = an + an; ++ ++ b >>= 1; ++ } ++ ++ return (x); ++} ++ ++/* Return a^r % n, where 0 < n. */ ++static uint64_t ++powmod(uint64_t a, uint64_t r, uint64_t n) ++{ ++ uint64_t x = 1; ++ ++ while (r != 0) { ++ if (r & 1) ++ x = mulmod(a, x, n); ++ a = mulmod(a, a, n); ++ r >>= 1; ++ } ++ ++ return (x); ++} ++ ++/* Return non-zero if n is a strong pseudoprime to base p. */ ++static int ++spsp(uint64_t n, uint64_t p) ++{ ++ uint64_t x; ++ uint64_t r = n - 1; ++ int k = 0; ++ ++ /* Compute n - 1 = 2^k * r. */ ++ while ((r & 1) == 0) { ++ k++; ++ r >>= 1; ++ } ++ ++ /* Compute x = p^r mod n. If x = 1, n is a p-spsp. */ ++ x = powmod(p, r, n); ++ if (x == 1) ++ return (1); ++ ++ /* Compute x^(2^i) for 0 <= i < n. If any are -1, n is a p-spsp. */ ++ while (k > 0) { ++ if (x == n - 1) ++ return (1); ++ x = powmod(x, 2, n); ++ k--; ++ } ++ ++ /* Not a p-spsp. */ ++ return (0); ++} ++ ++/* Test for primality using strong pseudoprime tests. */ ++int ++isprime(uint64_t _n) ++{ ++ uint64_t n = _n; ++ ++ /* ++ * Values from: ++ * C. Pomerance, J.L. Selfridge, and S.S. Wagstaff, Jr., ++ * The pseudoprimes to 25 * 10^9, Math. Comp. 35(151):1003-1026, 1980. ++ */ ++ ++ /* No SPSPs to base 2 less than 2047. */ ++ if (!spsp(n, 2)) ++ return (0); ++ if (n < 2047ULL) ++ return (1); ++ ++ /* No SPSPs to bases 2,3 less than 1373653. */ ++ if (!spsp(n, 3)) ++ return (0); ++ if (n < 1373653ULL) ++ return (1); ++ ++ /* No SPSPs to bases 2,3,5 less than 25326001. */ ++ if (!spsp(n, 5)) ++ return (0); ++ if (n < 25326001ULL) ++ return (1); ++ ++ /* No SPSPs to bases 2,3,5,7 less than 3215031751. */ ++ if (!spsp(n, 7)) ++ return (0); ++ if (n < 3215031751ULL) ++ return (1); ++ ++ /* ++ * Values from: ++ * G. Jaeschke, On strong pseudoprimes to several bases, ++ * Math. Comp. 61(204):915-926, 1993. ++ */ ++ ++ /* No SPSPs to bases 2,3,5,7,11 less than 2152302898747. */ ++ if (!spsp(n, 11)) ++ return (0); ++ if (n < 2152302898747ULL) ++ return (1); ++ ++ /* No SPSPs to bases 2,3,5,7,11,13 less than 3474749660383. */ ++ if (!spsp(n, 13)) ++ return (0); ++ if (n < 3474749660383ULL) ++ return (1); ++ ++ /* No SPSPs to bases 2,3,5,7,11,13,17 less than 341550071728321. */ ++ if (!spsp(n, 17)) ++ return (0); ++ if (n < 341550071728321ULL) ++ return (1); ++ ++ /* No SPSPs to bases 2,3,5,7,11,13,17,19 less than 341550071728321. */ ++ if (!spsp(n, 19)) ++ return (0); ++ if (n < 341550071728321ULL) ++ return (1); ++ ++ /* ++ * Value from: ++ * Y. Jiang and Y. Deng, Strong pseudoprimes to the first eight prime ++ * bases, Math. Comp. 83(290):2915-2924, 2014. ++ */ ++ ++ /* No SPSPs to bases 2..23 less than 3825123056546413051. */ ++ if (!spsp(n, 23)) ++ return (0); ++ if (n < 3825123056546413051) ++ return (1); ++ /* ++ * Value from: ++ * J. Sorenson and J. Webster, Strong pseudoprimes to twelve prime ++ * bases, Math. Comp. 86(304):985-1003, 2017. ++ */ ++ ++ /* No SPSPs to bases 2..37 less than 318665857834031151167461. */ ++ if (!spsp(n, 29)) ++ return (0); ++ if (!spsp(n, 31)) ++ return (0); ++ if (!spsp(n, 37)) ++ return (0); ++ ++ /* All 64-bit values are less than 318665857834031151167461. */ ++ return (1); ++} diff --git a/source/y/bsd-games/patches/0016-Better-explanation-how-to-read-the-documentation.patch b/source/y/bsd-games/patches/0016-Better-explanation-how-to-read-the-documentation.patch new file mode 100644 index 00000000..0ab32b12 --- /dev/null +++ b/source/y/bsd-games/patches/0016-Better-explanation-how-to-read-the-documentation.patch @@ -0,0 +1,46 @@ +From: "Dr. Tobias Quathamer" <toddy@debian.org> +Date: Fri, 27 Apr 2018 10:01:22 +0200 +Subject: Better explanation how to read the documentation. + +This patch is based on a suggestion from Ben Wong. + +Thanks: Ben Wong <galadriel@wongs.net> +Closes: #874680 +--- + trek/trek.6.in | 19 +++++++++++++++---- + 1 file changed, 15 insertions(+), 4 deletions(-) + +diff --git a/trek/trek.6.in b/trek/trek.6.in +index e3cc135..9d4b0a1 100644 +--- a/trek/trek.6.in ++++ b/trek/trek.6.in +@@ -75,10 +75,6 @@ You should normally start out with a novice and work up. + .Pp + In general, throughout the game, if you forget what is appropriate + the game will tell you what it expects if you just type in a question mark. +-.Sh AUTHOR +-.An Eric Allman +-.Sh SEE ALSO +-.Pa @docdir@/trek.me + .Sh COMMAND SUMMARY + .Bl -item -compact + .It +@@ -137,3 +133,18 @@ amt1 course1 spread1 ... + .It + .Ic w Ns arp warp_factor + .El ++.Sh AUTHOR ++.An Eric Allman ++.Sh SEE ALSO ++.Pp ++The complete documentation, ++.Em Trek ++by Eric Allman, is in ++.Pa @docdir@/trek.me.gz ++which can be viewed using ++.Dl cd @docdir@ ++.Dl zcat trek.me.gz | tbl | nroff -me | less -r ++.Pp ++Or you can view a PDF version of the documentation, ++available here: ++.Dl @docdir@/trek.pdf diff --git a/source/y/bsd-games/patches/0017-hack-Fix-segv-when-i-inventory-done-after-load-from-.patch b/source/y/bsd-games/patches/0017-hack-Fix-segv-when-i-inventory-done-after-load-from-.patch new file mode 100644 index 00000000..51116aee --- /dev/null +++ b/source/y/bsd-games/patches/0017-hack-Fix-segv-when-i-inventory-done-after-load-from-.patch @@ -0,0 +1,67 @@ +From: "Dr. Tobias Quathamer" <toddy@debian.org> +Date: Sat, 28 Apr 2018 15:09:16 +0200 +Subject: hack: Fix segv when 'i' (inventory) done after load from saved game. + +Not all name information was saved or recovered leaving pointers to +nothing. + +Thanks: Richard Henschel <rhenschel@accesscomm.ca> +--- + hack/hack.o_init.c | 25 +++++++++++++++++++++++-- + 1 file changed, 23 insertions(+), 2 deletions(-) + +diff --git a/hack/hack.o_init.c b/hack/hack.o_init.c +index dc5bf93..fdab26e 100644 +--- a/hack/hack.o_init.c ++++ b/hack/hack.o_init.c +@@ -184,8 +184,7 @@ savenames(fd) + bwrite(fd, (char *) bases, sizeof bases); + bwrite(fd, (char *) objects, sizeof objects); + /* +- * as long as we use only one version of Hack/Quest we need not save +- * oc_name and oc_descr, but we must save oc_uname for all objects ++ * Save oc_name, oc_descr, as well as oc_uname for all objects + */ + for (i = 0; i < SIZE(objects); i++) { + if (objects[i].oc_uname) { +@@ -193,6 +192,16 @@ savenames(fd) + bwrite(fd, (char *) &len, sizeof len); + bwrite(fd, objects[i].oc_uname, len); + } ++ if (objects[i].oc_name) { ++ len = strlen(objects[i].oc_name) + 1; ++ bwrite(fd, (char *) &len, sizeof len); ++ bwrite(fd, objects[i].oc_name, len); ++ } ++ if (objects[i].oc_descr) { ++ len = strlen(objects[i].oc_descr) + 1; ++ bwrite(fd, (char *) &len, sizeof len); ++ bwrite(fd, objects[i].oc_descr, len); ++ } + } + } + +@@ -205,11 +214,23 @@ restnames(fd) + mread(fd, (char *) bases, sizeof bases); + mread(fd, (char *) objects, sizeof objects); + for (i = 0; i < SIZE(objects); i++) ++ { + if (objects[i].oc_uname) { + mread(fd, (char *) &len, sizeof len); + objects[i].oc_uname = (char *) alloc(len); + mread(fd, objects[i].oc_uname, len); + } ++ if (objects[i].oc_name) { ++ mread(fd, (char *) &len, sizeof len); ++ objects[i].oc_name = (char *) alloc(len); ++ mread(fd, objects[i].oc_name, len); ++ } ++ if (objects[i].oc_descr) { ++ mread(fd, (char *) &len, sizeof len); ++ objects[i].oc_descr = (char *) alloc(len); ++ mread(fd, objects[i].oc_descr, len); ++ } ++ } + } + + int diff --git a/source/y/bsd-games/patches/bsd-games.config.params.diff b/source/y/bsd-games/patches/bsd-games.config.params.diff new file mode 100644 index 00000000..b250ed04 --- /dev/null +++ b/source/y/bsd-games/patches/bsd-games.config.params.diff @@ -0,0 +1,38 @@ +--- ./config.params.orig Sat Mar 9 20:59:34 2002 ++++ ./config.params Sat Mar 9 20:59:52 2002 +@@ -0,0 +1,35 @@ ++# Don't run configure interactively. ++bsd_games_cfg_non_interactive=y ++ ++# Install into here for building the package. ++bsd_games_cfg_install_prefix=/tmp/package-bsdgames ++ ++# Do not build or install these games: ++bsd_games_cfg_no_build_dirs="boggle dm tetris" ++ ++# Keep huntd in /usr/sbin as it was in the past. I may ++# change this later. ++bsd_games_cfg_sbindir=/usr/sbin ++ ++# Use /usr/man still. Slackware doesn't use this part of FHS yet. ++bsd_games_cfg_man8dir=/usr/man/man8 ++bsd_games_cfg_man6dir=/usr/man/man6 ++bsd_games_cfg_man5dir=/usr/man/man5 ++ ++# We don't like cluttering up the /usr/games/ dir too much, ++# use a subdir. /var too. ++bsd_games_cfg_usrlibdir=/usr/share/games ++bsd_games_cfg_sharedir=/usr/share/games ++bsd_games_cfg_varlibdir=/var/lib/bsdgames ++ ++# Do not do chown now: ++bsd_games_cfg_do_chown=n ++ ++# Use compressed .so links for manpages: ++bsd_games_cfg_use_dot_so=.so ++ ++# Compress the manpages: ++bsd_games_cfg_gzip_manpages=y ++ ++# Use /usr/bin/less by default. ++bsd_games_cfg_pager=/usr/bin/less diff --git a/source/y/bsd-games/patches/bsd-games.factor.no.ubig.diff b/source/y/bsd-games/patches/bsd-games.factor.no.ubig.diff new file mode 100644 index 00000000..21fbcf1b --- /dev/null +++ b/source/y/bsd-games/patches/bsd-games.factor.no.ubig.diff @@ -0,0 +1,22 @@ +--- ./factor/factor.c.orig 2004-02-08 07:20:03.000000000 -0600 ++++ ./factor/factor.c 2019-02-17 15:38:29.289767009 -0600 +@@ -96,8 +96,8 @@ + * We are able to sieve 2^32-1 because this byte table yields all primes + * up to 65537 and 65537^2 > 2^32-1. + */ +-extern const ubig prime[]; +-extern const ubig *pr_limit; /* largest prime in the prime array */ ++extern const uint64_t prime[]; ++extern const uint64_t *const pr_limit; /* largest prime in the prime array */ + + #define PRIME_CHECKS 5 + +@@ -202,7 +202,7 @@ + void + pr_fact(BIGNUM *val) + { +- const ubig *fact; /* The factor found. */ ++ const uint64_t *fact; /* The factor found. */ + + /* Firewall - catch 0 and 1. */ + if (BN_is_zero(val)) /* Historical practice; 0 just exits. */ diff --git a/source/y/bsd-games/patches/bsd-games.fortunepath.diff b/source/y/bsd-games/patches/bsd-games.fortunepath.diff new file mode 100644 index 00000000..0ce0ddf8 --- /dev/null +++ b/source/y/bsd-games/patches/bsd-games.fortunepath.diff @@ -0,0 +1,11 @@ +--- ./configure.orig 2004-02-08 19:37:31.000000000 -0600 ++++ ./configure 2019-02-17 16:07:03.818785361 -0600 +@@ -521,7 +521,7 @@ + game_ask dm "File to disable games playing" dm_nogamesfile /etc/nogames + game_ask dm "Log file for dm" dm_logfile "$varlibdir/games.log" + game_ask fish "File for fish instructions" fish_instrfile "$sharedir/fish.instr" +-game_ask fortune "Directory for fortune files" fortune_dir "$sharedir/fortune" ++game_ask fortune "Directory for fortune files" fortune_dir "$sharedir/fortunes" + game_ask hack "Directory for hack variable data" hack_dir "$varlibdir/hack" + + if building_in hack; then diff --git a/source/y/bsd-games/patches/bsd-games.pom.diff b/source/y/bsd-games/patches/bsd-games.pom.diff new file mode 100644 index 00000000..80bbd9ab --- /dev/null +++ b/source/y/bsd-games/patches/bsd-games.pom.diff @@ -0,0 +1,152 @@ +--- ./pom/pom.6.orig 2001-08-29 10:11:31.000000000 -0500 ++++ ./pom/pom.6 2006-09-08 19:36:28.000000000 -0500 +@@ -33,7 +33,7 @@ + .\" + .\" @(#)pom.6 8.1 (Berkeley) 5/31/93 + .\" +-.Dd January 9, 1999 ++.Dd September 8, 2006 + .Dt POM 6 + .Os + .Sh NAME +@@ -41,7 +41,8 @@ + .Nd display the phase of the moon + .Sh SYNOPSIS + .Nm +-.Op [[[[[cc]yy]mm]dd]HH] ++.Op Fl d Ar num ++.Op Ar [[[[cc]yy]mm]dd]HH + .Sh DESCRIPTION + The + .Nm +@@ -49,6 +50,13 @@ + Useful for selecting software completion target dates and predicting + managerial behavior. + .Pp ++.Bl -tag -width [-d num] ++.It Ar [-d num] ++Display the percentage with ++.Ar num ++decimals (within reasonable limits). ++The default is to display an integer percentage. ++.El + .Bl -tag -width [[[[[cc]yy]mm]dd]HH] + .It Ar [[[[[cc]yy]mm]dd]HH] + Display the phase of the moon for a given time. The format is similar to +@@ -67,6 +75,9 @@ + .Pp + This program does not allow for the difference between the TDT and + UTC timescales (about one minute at the time of writing). ++.Sh NOTES ++.Nm ++recognizes 3321 as being within reasonable limits. + .Sh ACKNOWLEDGEMENTS + This program is based on algorithms from + .%B Practical Astronomy with Your Calculator, Third Edition +--- ./pom/pom.c.orig 2000-08-03 19:12:33.000000000 -0500 ++++ ./pom/pom.c 2006-09-08 19:47:09.000000000 -0500 +@@ -59,11 +59,14 @@ + * + * Updated to the Third Edition of Duffett-Smith's book, Paul Janzen, IX 1998 + * ++ * Modified for Slackware by Eric Hameleers <alien@slackware.com> 09-09-2006 ++ * + */ + + #include <ctype.h> + #include <err.h> + #include <math.h> ++#include <limits.h> + #include <stdio.h> + #include <string.h> + #include <stdlib.h> +@@ -101,16 +104,36 @@ + char *argv[]; + { + time_t tmpt, now; +- double days, today, tomorrow; ++ double days, today, tomorrow, accuracy; + char buf[1024]; ++ int ch, decimals=0; + + /* Revoke setgid privileges */ + setregid(getgid(), getgid()); + ++ while ((ch = getopt(argc, argv, "d:h?")) != -1) ++ switch (ch) { ++ case 'd': ++ decimals = atoi(optarg); ++ if (decimals < 0 || (decimals != 3321 && decimals > __DBL_DIG__)) ++ errx(1, "illegal argument for -d option"); ++ break; ++ case 'h': ++ case '?': ++ (void)fprintf(stderr, "usage: pom [-d digits] [[[[[cc]yy]mm]dd]HH]\n"); ++ exit(1); ++ default: ++ break; ++ } ++ argc -= optind; ++ argv += optind; ++ ++ accuracy = ( decimals == 3321 ? 0.5: 0.5 / pow(10, decimals) ); ++ + if (time(&now) == (time_t)-1) + err(1, "time"); +- if (argc > 1) { +- tmpt = parsetime(argv[1]); ++ if (argc > 0) { ++ tmpt = parsetime(argv[0]); + strftime(buf, sizeof(buf), "%a %Y %b %e %H:%M:%S (%Z)", + localtime(&tmpt)); + printf("%s: ", buf); +@@ -118,15 +141,20 @@ + tmpt = now; + } + days = (tmpt - EPOCH_MINUS_1970 * 86400) / 86400.0; +- today = potm(days) + .5; ++ today = potm(days) + accuracy; + if (tmpt < now) + (void)printf("The Moon was "); + else if (tmpt == now) + (void)printf("The Moon is "); + else + (void)printf("The Moon will be "); +- if ((int)today == 100) ++ if ((int)today == 100) { + (void)printf("Full\n"); ++ if (decimals == 3321) ++ /* (void)printf("Howl!!! Know me, I am PJV.\n"); */ ++ /* PJV's number is not 3321, and shan't be revealed here */ ++ (void)printf("I saw the best minds of my generation destroyed by\n"); ++ } + else if (!(int)today) + (void)printf("New\n"); + else { +@@ -134,19 +162,19 @@ + if ((int)today == 50) + (void)printf("%s\n", tomorrow > today ? + "at the First Quarter" : "at the Last Quarter"); +- /* today is 0.5 too big, but it doesn't matter here +- * since the phase is changing fast enough ++ /* today is "accuracy" too big, but it doesn't matter ++ * here since the phase is changing fast enough + */ + else { +- today -= 0.5; /* Now it might matter */ ++ today -= accuracy; /* Now it might matter */ + (void)printf("%s ", tomorrow > today ? + "Waxing" : "Waning"); + if (today > 50) +- (void)printf("Gibbous (%1.0f%% of Full)\n", +- today); ++ (void)printf("Gibbous (%1.*f%% of Full)\n", ++ decimals, today); + else if (today < 50) +- (void)printf("Crescent (%1.0f%% of Full)\n", +- today); ++ (void)printf("Crescent (%1.*f%% of Full)\n", ++ decimals, today); + } + } + exit(0); |