From e4b8ed4a85d964cfd0e3cf88075de476c9647650 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Sat, 25 Jul 2015 10:05:00 -0400 Subject: [PATCH 001/126] images/regular: Delete DVB stuff. Thanks to Axel for reviewing! --- build/jam/images/definitions/regular | 5 ----- 1 file changed, 5 deletions(-) diff --git a/build/jam/images/definitions/regular b/build/jam/images/definitions/regular index e0eb53875d..0384d6b5ca 100644 --- a/build/jam/images/definitions/regular +++ b/build/jam/images/definitions/regular @@ -255,11 +255,6 @@ AddDirectoryToHaikuImage home config settings printers Preview AddDirectoryToHaikuImage home config settings printers "Save as PDF" : home-config-settings-printers-save-as-pdf.rdef ; -# dvb channel settings -#CopyDirectoryToHaikuImage home config settings Media -# : [ FDirName $(HAIKU_TOP) data settings media dvb ] -# : dvb : -x Jamfile ; - # repository config and cache files local repository ; for repository in $(HAIKU_REPOSITORIES) { From 4a839f2daaeb237f0fb8c5192899c9e0993e762e Mon Sep 17 00:00:00 2001 From: Josef Gajdusek Date: Sat, 25 Jul 2015 10:15:24 -0400 Subject: [PATCH 002/126] partitioning_systems/gpt: Fix _IsHeaderValid(). Signed-off-by: Augustin Cavalier --- .../kernel/partitioning_systems/gpt/Header.cpp | 18 +++++++++--------- .../kernel/partitioning_systems/gpt/Header.h | 4 ++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/add-ons/kernel/partitioning_systems/gpt/Header.cpp b/src/add-ons/kernel/partitioning_systems/gpt/Header.cpp index e279c0c6d3..6099445c0b 100644 --- a/src/add-ons/kernel/partitioning_systems/gpt/Header.cpp +++ b/src/add-ons/kernel/partitioning_systems/gpt/Header.cpp @@ -290,24 +290,24 @@ Header::_Read(int fd, off_t offset, void* data, size_t size) const bool -Header::_IsHeaderValid(const efi_table_header& header, uint64 block) +Header::_IsHeaderValid(efi_table_header& header, uint64 block) { - return !memcmp(fHeader.header, EFI_PARTITION_HEADER, sizeof(fHeader.header)) - && _ValidateHeaderCRC() - && fHeader.AbsoluteBlock() == block; + return !memcmp(header.header, EFI_PARTITION_HEADER, sizeof(header.header)) + && _ValidateHeaderCRC(header) + && header.AbsoluteBlock() == block; } bool -Header::_ValidateHeaderCRC() +Header::_ValidateHeaderCRC(efi_table_header& header) { - uint32 originalCRC = fHeader.HeaderCRC(); - fHeader.SetHeaderCRC(0); + uint32 originalCRC = header.HeaderCRC(); + header.SetHeaderCRC(0); - bool matches = originalCRC == crc32((const uint8*)&fHeader, + bool matches = originalCRC == crc32((const uint8*)&header, sizeof(efi_table_header)); - fHeader.SetHeaderCRC(originalCRC); + header.SetHeaderCRC(originalCRC); return matches; } diff --git a/src/add-ons/kernel/partitioning_systems/gpt/Header.h b/src/add-ons/kernel/partitioning_systems/gpt/Header.h index f6781c642b..7bc10a0d22 100644 --- a/src/add-ons/kernel/partitioning_systems/gpt/Header.h +++ b/src/add-ons/kernel/partitioning_systems/gpt/Header.h @@ -53,9 +53,9 @@ private: status_t _Read(int fd, off_t offset, void* data, size_t size) const; - bool _IsHeaderValid(const efi_table_header& header, + bool _IsHeaderValid(efi_table_header& header, uint64 block); - bool _ValidateHeaderCRC(); + bool _ValidateHeaderCRC(efi_table_header& header); bool _ValidateEntriesCRC() const; void _SetBackupHeaderFromPrimary(uint64 lastBlock); size_t _EntryArraySize() const From 3860139319a16a1f009bb63e69d9e468b6e28f9d Mon Sep 17 00:00:00 2001 From: Andrew Lindesay Date: Thu, 23 Jul 2015 23:00:02 +1200 Subject: [PATCH 003/126] hvif2png: Fix build on Mac OS X. * Add support for macports lib and headers dirs. * Link libs change for Mac OS X for tool build. Signed-off-by: Augustin Cavalier --- build/jam/BuildSetup | 5 +++++ src/tools/hvif2png/Jamfile | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/build/jam/BuildSetup b/build/jam/BuildSetup index d91714038f..d13922a9a4 100644 --- a/build/jam/BuildSetup +++ b/build/jam/BuildSetup @@ -594,6 +594,11 @@ if $(HOST_PLATFORM) = freebsd { if $(HOST_PLATFORM) = darwin { HOST_HDRS += [ FDirName $(HAIKU_TOP) src build libgnuregex ] ; + + # Mac OS X users may be using macports libraries, in which case the headers + # and the libs are located in /opt/local/. + HOST_HDRS += /opt/local/include ; + HOST_LINKFLAGS += -L/opt/local/lib ; } HOST_BE_API_HEADERS = diff --git a/src/tools/hvif2png/Jamfile b/src/tools/hvif2png/Jamfile index 10b698c2e2..1048fb3049 100644 --- a/src/tools/hvif2png/Jamfile +++ b/src/tools/hvif2png/Jamfile @@ -7,5 +7,5 @@ USES_BE_API on hvif2png = true ; BuildPlatformMain hvif2png : hvif2png.cpp : - $(HOST_LIBBE) $(HOST_LIBROOT) png + $(HOST_LIBBE) $(HOST_LIBROOT) $(HOST_LIBSUPC++) png ; From ca8ed5ea660fb6275799a3b7f138b201c41a667b Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Sat, 25 Jul 2015 10:33:45 -0400 Subject: [PATCH 004/126] index_server: Fix the build. Partially based on a patch from Paradoxianer. Thanks! --- src/servers/index/AnalyserDispatcher.h | 2 +- src/servers/index/IndexServer.cpp | 2 +- src/servers/index/VolumeWatcher.cpp | 4 ++-- src/servers/index/VolumeWatcher.h | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/servers/index/AnalyserDispatcher.h b/src/servers/index/AnalyserDispatcher.h index 95e596ba46..7da7bae889 100644 --- a/src/servers/index/AnalyserDispatcher.h +++ b/src/servers/index/AnalyserDispatcher.h @@ -49,7 +49,7 @@ protected: private: FileAnalyser* _FindAnalyser(const BString& name); - vint32 fStopped; + int32 fStopped; }; #endif // ANALYSER_DISPATCHER diff --git a/src/servers/index/IndexServer.cpp b/src/servers/index/IndexServer.cpp index 9270609fe1..ef73b55134 100644 --- a/src/servers/index/IndexServer.cpp +++ b/src/servers/index/IndexServer.cpp @@ -317,7 +317,7 @@ IndexServer::_StartWatchingAddOns() fPulseRunner = new BMessageRunner(&fAddOnMonitorHandler, &pulse, 1000000LL); // the monitor handler needs a pulse to check if add-ons are ready - &fAddOnMonitorHandler->AddAddOnDirectories("index_server"); + fAddOnMonitorHandler.AddAddOnDirectories("index_server"); } diff --git a/src/servers/index/VolumeWatcher.cpp b/src/servers/index/VolumeWatcher.cpp index a945e17c8c..15762758d3 100644 --- a/src/servers/index/VolumeWatcher.cpp +++ b/src/servers/index/VolumeWatcher.cpp @@ -59,7 +59,7 @@ WatchNameHandler::EntryMoved(const char *name, const char *fromName, { entry_ref ref(device, to_directory, name); entry_ref refFrom(device, from_directory, fromName); - + fVolumeWatcher->fMovedList.CurrentList()->push_back(ref); fVolumeWatcher->fMovedFromList.CurrentList()->push_back(refFrom); fVolumeWatcher->_NewEntriesArrived(); @@ -470,7 +470,7 @@ VolumeWatcher::StartWatching() void VolumeWatcher::Stop() { - + char name[255]; fVolume.GetName(name); diff --git a/src/servers/index/VolumeWatcher.h b/src/servers/index/VolumeWatcher.h index 7131ae3226..e17eea041c 100644 --- a/src/servers/index/VolumeWatcher.h +++ b/src/servers/index/VolumeWatcher.h @@ -71,7 +71,7 @@ private: void _SetBusy(bool busy = true); VolumeWatcher* fVolumeWatcher; - vint32 fBusy; + int32 fBusy; }; From 971f8f5041afc65f8eee909eabd01d63e5a81068 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Sat, 25 Jul 2015 11:04:59 -0400 Subject: [PATCH 005/126] partitioning_systems/gpt: Make _IsHeaderValid and _ValidateHeaderCRC static. Thanks to Pawel for reviewing! --- src/add-ons/kernel/partitioning_systems/gpt/Header.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/add-ons/kernel/partitioning_systems/gpt/Header.h b/src/add-ons/kernel/partitioning_systems/gpt/Header.h index 7bc10a0d22..64566d08b2 100644 --- a/src/add-ons/kernel/partitioning_systems/gpt/Header.h +++ b/src/add-ons/kernel/partitioning_systems/gpt/Header.h @@ -53,9 +53,9 @@ private: status_t _Read(int fd, off_t offset, void* data, size_t size) const; - bool _IsHeaderValid(efi_table_header& header, + static bool _IsHeaderValid(efi_table_header& header, uint64 block); - bool _ValidateHeaderCRC(efi_table_header& header); + static bool _ValidateHeaderCRC(efi_table_header& header); bool _ValidateEntriesCRC() const; void _SetBackupHeaderFromPrimary(uint64 lastBlock); size_t _EntryArraySize() const From d6f83df4bb0ac993083f5b94a3fffe7485b6c6fe Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Sat, 25 Jul 2015 11:11:03 -0400 Subject: [PATCH 006/126] servers/net: DHCPClient: Hard-code the message IDs. Even though C++ should increment the enum for us, since these IDs are set and used by things outside of this file, we should hard-code the numbers. No functional change (or if there is, it means there's a compiler bug somewhere.) --- src/servers/net/DHCPClient.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/servers/net/DHCPClient.cpp b/src/servers/net/DHCPClient.cpp index 850861a4cb..b3d4c1ab5c 100644 --- a/src/servers/net/DHCPClient.cpp +++ b/src/servers/net/DHCPClient.cpp @@ -85,14 +85,14 @@ enum message_option { enum message_type { DHCP_NONE = 0, - DHCP_DISCOVER, - DHCP_OFFER, - DHCP_REQUEST, - DHCP_DECLINE, - DHCP_ACK, - DHCP_NACK, - DHCP_RELEASE, - DHCP_INFORM + DHCP_DISCOVER = 1, + DHCP_OFFER = 2, + DHCP_REQUEST = 3, + DHCP_DECLINE = 4, + DHCP_ACK = 5, + DHCP_NACK = 6, + DHCP_RELEASE = 7, + DHCP_INFORM = 8 }; struct dhcp_option_cookie { @@ -913,7 +913,7 @@ DHCPClient::_TimeoutShift(int socket, dhcp_state& state, time_t& timeout, state = INIT; return false; } - + tries++; timeout += timeout; if (timeout > MAX_TIMEOUT) From 5dab45be766adf3716d356b8c7fa5858548f6d90 Mon Sep 17 00:00:00 2001 From: Markus Himmel Date: Sat, 25 Jul 2015 18:35:06 +0000 Subject: [PATCH 007/126] Screenshot: Fix aspect ratio. The aspect ratio of the preview was wrong for two reasons: * The height of the preview was always assumed to be 150 while it actually depends on the layout. * The size was then only set using SetExplicitMinSize(), which is not sufficient to actually change the size to the desired value. Fixes #11644. Signed-off-by: Augustin Cavalier --- src/apps/screenshot/ScreenshotWindow.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/apps/screenshot/ScreenshotWindow.cpp b/src/apps/screenshot/ScreenshotWindow.cpp index 796c1bc49b..e15a930a5b 100644 --- a/src/apps/screenshot/ScreenshotWindow.cpp +++ b/src/apps/screenshot/ScreenshotWindow.cpp @@ -239,6 +239,7 @@ ScreenshotWindow::ScreenshotWindow(const Utility& utility, bool silent, saveScreenshot->MakeDefault(true); + Layout(false); _UpdatePreviewPanel(); _UpdateFilenameSelection(); @@ -439,7 +440,7 @@ ScreenshotWindow::_NewScreenshot(bool silent, bool clipboard) void ScreenshotWindow::_UpdatePreviewPanel() { - float height = 150.0f; + float height = fPreview->Bounds().Height(); float width = (fScreenshot->Bounds().Width() / fScreenshot->Bounds().Height()) * height; @@ -451,6 +452,7 @@ ScreenshotWindow::_UpdatePreviewPanel() } fPreview->SetExplicitMinSize(BSize(width, height)); + fPreview->SetExplicitMaxSize(BSize(width, height)); fPreview->ClearViewBitmap(); fPreview->SetViewBitmap(fScreenshot, fScreenshot->Bounds(), From b2a0b6323e67b7285efd1767a0e0a439853e8bf5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Sat, 25 Jul 2015 16:22:07 +0200 Subject: [PATCH 008/126] screenshot: fixed parenthesis warning on not operator... * "logical not is only applied to the left hand side of comparison" * found with GCC6 --- src/apps/screenshot/Screenshot.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps/screenshot/Screenshot.cpp b/src/apps/screenshot/Screenshot.cpp index 88bac5d000..ef179787f9 100644 --- a/src/apps/screenshot/Screenshot.cpp +++ b/src/apps/screenshot/Screenshot.cpp @@ -308,7 +308,7 @@ Screenshot::_GetActiveWindowFrame() token = tokens[i]; windowInfo = get_window_info(token); if (windowInfo && !windowInfo->is_mini - && !windowInfo->show_hide_level > 0) { + && !(windowInfo->show_hide_level > 0)) { foundActiveWindow = true; break; } From d0017f376642742c180e2c3b6da1a155903acc51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Sat, 25 Jul 2015 16:26:29 +0200 Subject: [PATCH 009/126] libtracker.so: fixed parenthesis warning on not operator... * "logical not is only applied to the left hand side of comparison" * found with GCC6 --- src/kits/tracker/SettingsViews.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/kits/tracker/SettingsViews.cpp b/src/kits/tracker/SettingsViews.cpp index 4b80b8c752..18be42255f 100644 --- a/src/kits/tracker/SettingsViews.cpp +++ b/src/kits/tracker/SettingsViews.cpp @@ -234,7 +234,7 @@ DesktopSettingsView::MessageReceived(BMessage* message) { // Turn on and off related settings: fMountVolumesOntoDesktopRadioButton->SetValue( - !fShowDisksIconRadioButton->Value() == 1); + !(fShowDisksIconRadioButton->Value() == 1)); fMountSharedVolumesOntoDesktopCheckBox->SetEnabled( fMountVolumesOntoDesktopRadioButton->Value() == 1); @@ -267,7 +267,7 @@ DesktopSettingsView::MessageReceived(BMessage* message) { // Turn on and off related settings: fShowDisksIconRadioButton->SetValue( - !fMountVolumesOntoDesktopRadioButton->Value() == 1); + !(fMountVolumesOntoDesktopRadioButton->Value() == 1)); fMountSharedVolumesOntoDesktopCheckBox->SetEnabled( fMountVolumesOntoDesktopRadioButton->Value() == 1); From 66fdfe327035ca1df9eb10926aa084392e648eb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Sat, 25 Jul 2015 16:28:44 +0200 Subject: [PATCH 010/126] setmime: hash() conflicts with std::hash. * found with GCC6 --- src/bin/setmime.cpp | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/bin/setmime.cpp b/src/bin/setmime.cpp index 37029e24d1..8078c6099e 100644 --- a/src/bin/setmime.cpp +++ b/src/bin/setmime.cpp @@ -103,7 +103,7 @@ const char* kAttrEditable = "-attrEditable"; const char* kAttrExtra = "-attrExtra"; -const uint32 hash(const char* str) +const uint32 hash_function(const char* str) { uint32 h = 0; uint32 g = 0; @@ -466,7 +466,7 @@ MimeAttribute::StoreInto(BMessage* target) const char* MimeAttribute::UserArgValue(TUserArgs& map, const char* name) { - TUserArgsI i = map.find(hash(name)); + TUserArgsI i = map.find(hash_function(name)); if (i == map.end()) return NULL; return i->second != NULL ? i->second : ""; @@ -574,7 +574,7 @@ MimeType::_Init(char** argv) throw (Error) map cmdOptionsMap; for (size_t i = 0; i < sizeof(gCmdOptions) / sizeof(gCmdOptions[0]); i++) cmdOptionsMap.insert(pair( - hash(gCmdOptions[i].fName), &gCmdOptions[i])); + hash_function(gCmdOptions[i].fName), &gCmdOptions[i])); // parse the command line arguments for (char** arg = argv; *arg; arg++) { @@ -588,7 +588,7 @@ MimeType::_Init(char** argv) throw (Error) } // check op.modes, options and attribs - uint32 key = hash(*arg); + uint32 key = hash_function(*arg); map::iterator I = cmdOptionsMap.find(key); if (I == cmdOptionsMap.end()) @@ -605,7 +605,7 @@ MimeType::_Init(char** argv) throw (Error) throw Error(kWrongModeMessage); fOpMode = key; - if (hash(I->second->fName) != hash(kCheckSniffRule)) + if (hash_function(I->second->fName) != hash_function(kCheckSniffRule)) break; // else -> fallthrough, CheckRule works both as mode and Option case CmdOption::kOption: @@ -669,15 +669,15 @@ MimeType::_Init(char** argv) throw (Error) throw Error("error instantiating mime for '%s': %s", Type(), strerror(InitCheck())); - fDoAdd = fOpMode == hash(kAdd); - fDoSet = fOpMode == hash(kSet); - fDoForce = fOpMode == hash(kForce); - fDoRemove = fOpMode == hash(kRemove); - fDumpNormal = fOpMode == hash(kDump); - fDumpRule = fOpMode == hash(kDumpSniffRule); - fDumpIcon = fOpMode == hash(kDumpIcon); - fDumpAll = fOpMode == hash(kDumpAll); - fCheckSniffRule = fOpMode == hash(kCheckSniffRule); + fDoAdd = fOpMode == hash_function(kAdd); + fDoSet = fOpMode == hash_function(kSet); + fDoForce = fOpMode == hash_function(kForce); + fDoRemove = fOpMode == hash_function(kRemove); + fDumpNormal = fOpMode == hash_function(kDump); + fDumpRule = fOpMode == hash_function(kDumpSniffRule); + fDumpIcon = fOpMode == hash_function(kDumpIcon); + fDumpAll = fOpMode == hash_function(kDumpAll); + fCheckSniffRule = fOpMode == hash_function(kCheckSniffRule); if (fDoAdd || fDoSet || fDoForce || fDoRemove) { if (Type() == NULL) @@ -835,7 +835,7 @@ MimeType::_SetTo(const char* mimetype) throw (Error) uint32 i = 0; const char* ext = NULL; while (exts.FindString("extensions", i++, &ext) == B_OK) - fExtensions.insert(pair(hash(ext), ext)); + fExtensions.insert(pair(hash_function(ext), ext)); } BMessage attrs; @@ -847,7 +847,7 @@ MimeType::_SetTo(const char* mimetype) throw (Error) break; fAttributes.insert( - pair(hash(attr.fName), attr)); + pair(hash_function(attr.fName), attr)); } } @@ -871,7 +871,7 @@ MimeType::_SetTo(const char* mimetype) throw (Error) const char* MimeType::_UserArgValue(const char* name) { - TUserArgsI i = fUserArguments.find(hash(name)); + TUserArgsI i = fUserArguments.find(hash_function(name)); if (i == fUserArguments.end()) return NULL; @@ -1030,9 +1030,9 @@ MimeType::_DoEdit() throw (Error) // handle extensions update pair exts - = fUserArguments.equal_range(hash(kExtension)); + = fUserArguments.equal_range(hash_function(kExtension)); for (TUserArgsI i = exts.first; i != exts.second; i++) { - uint32 key = hash(i->second); + uint32 key = hash_function(i->second); if (fExtensions.find(key) == fExtensions.end()) fExtensions.insert(pair(key, i->second)); } @@ -1054,18 +1054,18 @@ MimeType::_DoEdit() throw (Error) userAttr != fUserAttributes.end(); userAttr++ ) { // search for -attribute "name" in args map - TUserArgsI attrArgs = userAttr->find(hash(kAttribute)); + TUserArgsI attrArgs = userAttr->find(hash_function(kAttribute)); if (attrArgs == userAttr->end()) throw Error("internal error: %s arg not found", kAttribute); // check if we already have this attribute cached map::iterator - attr = fAttributes.find(hash(attrArgs->second)); + attr = fAttributes.find(hash_function(attrArgs->second)); if (attr == fAttributes.end()) { // add new one MimeAttribute mimeAttr(*userAttr); fAttributes.insert( - pair(hash(mimeAttr.fName), mimeAttr)); + pair(hash_function(mimeAttr.fName), mimeAttr)); } else if (!fDoAdd) attr->second.SyncWith(*userAttr); } From 9cd62a24e5680e70edbeb81069e0e01b1fb4874f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Sat, 25 Jul 2015 17:06:53 +0200 Subject: [PATCH 011/126] Fixed C++11 warnings. invalid suffix on literal; C++11 requires a space between literal and string macro [-Werror=literal-suffix] --- .../outbound_protocols/smtp/SMTP.cpp | 20 +++++++++---------- src/apps/remotedesktop/RemoteView.cpp | 6 +++--- src/apps/tv/config.h | 6 +++--- src/preferences/notifications/GeneralView.cpp | 3 ++- .../drawing/interface/remote/NetReceiver.cpp | 4 ++-- .../drawing/interface/remote/NetSender.cpp | 4 ++-- 6 files changed, 22 insertions(+), 21 deletions(-) diff --git a/src/add-ons/mail_daemon/outbound_protocols/smtp/SMTP.cpp b/src/add-ons/mail_daemon/outbound_protocols/smtp/SMTP.cpp index f156104fa9..59ad170d0d 100644 --- a/src/add-ons/mail_daemon/outbound_protocols/smtp/SMTP.cpp +++ b/src/add-ons/mail_daemon/outbound_protocols/smtp/SMTP.cpp @@ -450,9 +450,9 @@ SMTPProtocol::Open(const char *address, int port, bool esmtp) char *cmd = new char[::strlen(localhost)+8]; if (!esmtp) - ::sprintf(cmd,"HELO %s"CRLF, localhost); + ::sprintf(cmd,"HELO %s" CRLF, localhost); else - ::sprintf(cmd,"EHLO %s"CRLF, localhost); + ::sprintf(cmd,"EHLO %s" CRLF, localhost); if (SendCommand(cmd) != B_OK) { delete[] cmd; @@ -467,7 +467,7 @@ SMTPProtocol::Open(const char *address, int port, bool esmtp) SSL_library_init(); RAND_seed(this,sizeof(SMTPProtocol)); - ::sprintf(cmd, "STARTTLS"CRLF); + ::sprintf(cmd, "STARTTLS" CRLF); if ((p = ::strstr(res, "STARTTLS")) != NULL) { // Server advertises STARTTLS support @@ -489,9 +489,9 @@ SMTPProtocol::Open(const char *address, int port, bool esmtp) // Should send EHLO command again if(!esmtp) - ::sprintf(cmd, "HELO %s"CRLF, localhost); + ::sprintf(cmd, "HELO %s" CRLF, localhost); else - ::sprintf(cmd, "EHLO %s"CRLF, localhost); + ::sprintf(cmd, "EHLO %s" CRLF, localhost); if (SendCommand(cmd) != B_OK) { delete[] cmd; @@ -604,7 +604,7 @@ SMTPProtocol::Login(const char *_login, const char *password) // required for authentication to SMTP-servers. Integrity- // and confidentiality-protection are not implemented, as // they are provided by the use of OpenSSL. - SendCommand("AUTH DIGEST-MD5"CRLF); + SendCommand("AUTH DIGEST-MD5" CRLF); const char *res = fLog.String(); if (strncmp(res, "334", 3) != 0) @@ -677,7 +677,7 @@ SMTPProtocol::Login(const char *_login, const char *password) } if (fAuthType & CRAM_MD5) { //******* CRAM-MD5 Authentication ( tested. works fine [with Cyrus SASL] ) - SendCommand("AUTH CRAM-MD5"CRLF); + SendCommand("AUTH CRAM-MD5" CRLF); const char *res = fLog.String(); if (strncmp(res, "334", 3) != 0) @@ -715,7 +715,7 @@ SMTPProtocol::Login(const char *_login, const char *password) //******* LOGIN Authentication ( tested. works fine) ssize_t encodedsize; // required by our base64 implementation - SendCommand("AUTH LOGIN"CRLF); + SendCommand("AUTH LOGIN" CRLF); const char *res = fLog.String(); if (strncmp(res, "334", 3) != 0) @@ -938,9 +938,9 @@ SMTPProtocol::Send(const char* to, const char* from, BPositionIO *message) delete [] data; if (messageEndedWithCRLF) - cmd = "."CRLF; // The standard says don't add extra CRLF. + cmd = "." CRLF; // The standard says don't add extra CRLF. else - cmd = CRLF"."CRLF; + cmd = CRLF "." CRLF; if (SendCommand(cmd.String()) != B_OK) return B_ERROR; diff --git a/src/apps/remotedesktop/RemoteView.cpp b/src/apps/remotedesktop/RemoteView.cpp index 1f31d75b2e..0693886d1b 100644 --- a/src/apps/remotedesktop/RemoteView.cpp +++ b/src/apps/remotedesktop/RemoteView.cpp @@ -39,9 +39,9 @@ static const uint8 kCursorData[] = { 16 /* size, 16x16 */, }; -#define TRACE(x...) /*printf("RemoteView: "x)*/ -#define TRACE_ALWAYS(x...) printf("RemoteView: "x) -#define TRACE_ERROR(x...) printf("RemoteView: "x) +#define TRACE(x...) /*printf("RemoteView: " x)*/ +#define TRACE_ALWAYS(x...) printf("RemoteView: " x) +#define TRACE_ERROR(x...) printf("RemoteView: " x) typedef struct engine_state { diff --git a/src/apps/tv/config.h b/src/apps/tv/config.h index 85d2075b55..5ddb5e2b75 100644 --- a/src/apps/tv/config.h +++ b/src/apps/tv/config.h @@ -31,9 +31,9 @@ #define NAME "TV" #define REVISION "unknown" #define VERSION "1.1" -#define BUILD __DATE__ " "__TIME__ -#define COPYRIGHT B_UTF8_COPYRIGHT" Marcus Overhagen 2005-2007" +#define BUILD __DATE__ " " __TIME__ +#define COPYRIGHT B_UTF8_COPYRIGHT " Marcus Overhagen 2005-2007" #define INFO1 "DVB - Digital Video Broadcasting TV" -#define APP_SIG "application/x-vnd.Haiku."NAME +#define APP_SIG "application/x-vnd.Haiku." NAME #endif diff --git a/src/preferences/notifications/GeneralView.cpp b/src/preferences/notifications/GeneralView.cpp index 50ca791858..55a1f91a16 100644 --- a/src/preferences/notifications/GeneralView.cpp +++ b/src/preferences/notifications/GeneralView.cpp @@ -239,7 +239,8 @@ GeneralView::_CanFindServer(entry_ref* ref) volume.GetName(volName); BQuery *query = new BQuery(); - query->SetPredicate("(BEOS:APP_SIG==\""kNotificationServerSignature"\")"); + query->SetPredicate("(BEOS:APP_SIG==\"" kNotificationServerSignature + "\")"); query->SetVolume(&volume); query->Fetch(); diff --git a/src/servers/app/drawing/interface/remote/NetReceiver.cpp b/src/servers/app/drawing/interface/remote/NetReceiver.cpp index e342066bc9..d88fcfae7c 100644 --- a/src/servers/app/drawing/interface/remote/NetReceiver.cpp +++ b/src/servers/app/drawing/interface/remote/NetReceiver.cpp @@ -16,8 +16,8 @@ #include #include -#define TRACE(x...) /*debug_printf("NetReceiver: "x)*/ -#define TRACE_ERROR(x...) debug_printf("NetReceiver: "x) +#define TRACE(x...) /*debug_printf("NetReceiver: " x)*/ +#define TRACE_ERROR(x...) debug_printf("NetReceiver: " x) NetReceiver::NetReceiver(BNetEndpoint *listener, StreamingRingBuffer *target) diff --git a/src/servers/app/drawing/interface/remote/NetSender.cpp b/src/servers/app/drawing/interface/remote/NetSender.cpp index 0d7cca0d53..4e2dbb3ac6 100644 --- a/src/servers/app/drawing/interface/remote/NetSender.cpp +++ b/src/servers/app/drawing/interface/remote/NetSender.cpp @@ -16,8 +16,8 @@ #include #include -#define TRACE(x...) /*debug_printf("NetSender: "x)*/ -#define TRACE_ERROR(x...) debug_printf("NetSender: "x) +#define TRACE(x...) /*debug_printf("NetSender: " x)*/ +#define TRACE_ERROR(x...) debug_printf("NetSender: " x) NetSender::NetSender(BNetEndpoint *endpoint, StreamingRingBuffer *source) From 4fb4b32043174432f9b12b56f2e20a652ff2091c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Sat, 25 Jul 2015 17:28:39 +0200 Subject: [PATCH 012/126] Force use of std::isnan() in agg_conv_curve.h. cmath could be included before inclusion of this header, thus undefining isnan. --- headers/libs/agg/agg_conv_curve.h | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/headers/libs/agg/agg_conv_curve.h b/headers/libs/agg/agg_conv_curve.h index 751e08d9fa..bc286910ff 100644 --- a/headers/libs/agg/agg_conv_curve.h +++ b/headers/libs/agg/agg_conv_curve.h @@ -23,6 +23,9 @@ #include "agg_basics.h" #include "agg_curves.h" +#include + + namespace agg { @@ -165,8 +168,8 @@ namespace agg case path_cmd_curve3: m_source->vertex(&end_x, &end_y); - if (!isnan(m_last_x) && !isnan(m_last_y) && !isnan(*x) && !isnan(*y) - && !isnan(end_x) && !isnan(end_y)) { + if (!std::isnan(m_last_x) && !std::isnan(m_last_y) && !std::isnan(*x) + && !std::isnan(*y) && !std::isnan(end_x) && !std::isnan(end_y)) { m_curve3.init(m_last_x, m_last_y, *x, *y, end_x, end_y); @@ -181,8 +184,8 @@ namespace agg m_source->vertex(&ct2_x, &ct2_y); m_source->vertex(&end_x, &end_y); - if (!isnan(m_last_x) && !isnan(m_last_y) && !isnan(*x) && !isnan(*y) - && !isnan(end_x) && !isnan(end_y)) { + if (!std::isnan(m_last_x) && !std::isnan(m_last_y) && !std::isnan(*x) + && !std::isnan(*y) && !std::isnan(end_x) && !std::isnan(end_y)) { m_curve4.init(m_last_x, m_last_y, *x, *y, ct2_x, ct2_y, From 189156a069af7dc6f09b94a132a7a09d2fbcd3e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Sun, 26 Jul 2015 10:07:21 +0200 Subject: [PATCH 013/126] Boot stdio.h: define a bunch of functions required by c++ headers. --- headers/private/kernel/boot/stdio.h | 30 +++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/headers/private/kernel/boot/stdio.h b/headers/private/kernel/boot/stdio.h index 2a404be15b..f6862a1f27 100644 --- a/headers/private/kernel/boot/stdio.h +++ b/headers/private/kernel/boot/stdio.h @@ -8,6 +8,8 @@ #include +typedef off_t fpos_t; + #ifdef __cplusplus extern "C" { #endif @@ -46,6 +48,34 @@ extern int vsnprintf(char *str, size_t size, char const *format, va_list ap); extern int vasprintf(char **ret, char const *format, va_list ap); // ToDo: not everything is or should be implemented here +extern void clearerr(FILE *stream); +extern int fclose(FILE *stream); +extern int feof(FILE *stream); +extern int ferror(FILE *stream); +extern int fflush(FILE *stream); +extern int fgetpos(FILE *stream, fpos_t *position); +extern FILE *fopen(const char *name, const char *mode); +extern size_t fread(void *buffer, size_t size, size_t numItems, FILE *stream); +extern FILE *freopen(const char *name, const char *mode, FILE *stream); +extern int fscanf(FILE *stream, char const *format, ...); +extern int fseek(FILE *stream, long offset, int seekType); +extern int fsetpos(FILE *stream, const fpos_t *position); +extern long ftell(FILE *stream); +extern size_t fwrite(const void *buffer, size_t size, size_t numItems, FILE *stream); +extern void perror(const char *errorPrefix); +extern int rename(const char *from, const char *to); +extern void rewind(FILE *stream); +extern int scanf(char const *format, ...); +extern void setbuf (FILE *file, char *buff); +extern int setvbuf(FILE *file, char *buff, int mode, size_t size); +extern int sscanf(char const *str, char const *format, ...); +extern FILE *tmpfile(void); +extern char *tmpnam(char *nameBuffer); +extern int ungetc(int c, FILE *stream); +extern int vscanf(char const *format, va_list ap); +extern int vsscanf(char const *str, char const *format, va_list ap); +extern int vfscanf(FILE *stream, char const *format, va_list ap); + extern int fgetc(FILE *); extern char *fgets(char *, int, FILE *); extern int fputc(int, FILE *); From 2a868d76457840c145bb98305249b8a235b065d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Sun, 26 Jul 2015 10:09:22 +0200 Subject: [PATCH 014/126] glibc: replace extern __inline with __extern_inline. * this helps to comply with C99. As a reminder, some of these headers are also used by x86_gcc2 src/libs/stdc++. --- src/system/libroot/posix/glibc/ctype/ctype.h | 4 +-- .../libroot/posix/glibc/include/allocalim.h | 2 +- .../include/arch/x86_64/bits/mathinline.h | 4 +-- .../libroot/posix/glibc/include/bits/stdio.h | 2 +- .../posix/glibc/include/misc/sys/cdefs.h | 32 +++++++++++++++++++ src/system/libroot/posix/glibc/stdlib/gmp.h | 4 ++- .../libroot/posix/glibc/stdlib/stdlib.h | 26 +++++++-------- .../libroot/posix/glibc/string/bits/string2.h | 2 +- src/system/libroot/posix/glibc/wcsmbs/wchar.h | 14 ++++---- 9 files changed, 62 insertions(+), 28 deletions(-) diff --git a/src/system/libroot/posix/glibc/ctype/ctype.h b/src/system/libroot/posix/glibc/ctype/ctype.h index f92fa2b6b5..adffe76cb0 100644 --- a/src/system/libroot/posix/glibc/ctype/ctype.h +++ b/src/system/libroot/posix/glibc/ctype/ctype.h @@ -164,13 +164,13 @@ __exctype (_tolower); # endif # ifdef __USE_EXTERN_INLINES -extern __inline int +__extern_inline int tolower (int __c) __THROW { return __c >= -128 && __c < 256 ? __ctype_tolower[__c] : __c; } -extern __inline int +__extern_inline int toupper (int __c) __THROW { return __c >= -128 && __c < 256 ? __ctype_toupper[__c] : __c; diff --git a/src/system/libroot/posix/glibc/include/allocalim.h b/src/system/libroot/posix/glibc/include/allocalim.h index f9bc036bc3..fb2a205a5e 100644 --- a/src/system/libroot/posix/glibc/include/allocalim.h +++ b/src/system/libroot/posix/glibc/include/allocalim.h @@ -1,5 +1,5 @@ #ifndef _EXTERN_INLINE -#define _EXTERN_INLINE extern inline +#define _EXTERN_INLINE __extern_inline #endif _EXTERN_INLINE int __libc_use_alloca (size_t size) { diff --git a/src/system/libroot/posix/glibc/include/arch/x86_64/bits/mathinline.h b/src/system/libroot/posix/glibc/include/arch/x86_64/bits/mathinline.h index 80f6d6453e..a5c7c405b1 100644 --- a/src/system/libroot/posix/glibc/include/arch/x86_64/bits/mathinline.h +++ b/src/system/libroot/posix/glibc/include/arch/x86_64/bits/mathinline.h @@ -22,10 +22,10 @@ #define __NTH(fct) __attribute__ ((__nothrow__)) fct -#ifdef __cplusplus +#ifndef __extern_always_inline # define __MATH_INLINE __inline #else -# define __MATH_INLINE extern __inline +# define __MATH_INLINE __extern_always_inline #endif diff --git a/src/system/libroot/posix/glibc/include/bits/stdio.h b/src/system/libroot/posix/glibc/include/bits/stdio.h index 118118adce..387da3c4b0 100644 --- a/src/system/libroot/posix/glibc/include/bits/stdio.h +++ b/src/system/libroot/posix/glibc/include/bits/stdio.h @@ -24,7 +24,7 @@ #ifdef __cplusplus # define __STDIO_INLINE inline #else -# define __STDIO_INLINE extern __inline +# define __STDIO_INLINE __extern_inline #endif diff --git a/src/system/libroot/posix/glibc/include/misc/sys/cdefs.h b/src/system/libroot/posix/glibc/include/misc/sys/cdefs.h index 18143058fa..f4aa3d76c6 100644 --- a/src/system/libroot/posix/glibc/include/misc/sys/cdefs.h +++ b/src/system/libroot/posix/glibc/include/misc/sys/cdefs.h @@ -226,6 +226,38 @@ # define __attribute_format_strfmon__(a,b) /* Ignore */ #endif + +/* Forces a function to be always inlined. */ +#if __GNUC_PREREQ (3,2) +# define __always_inline __inline __attribute__ ((__always_inline__)) +#else +# define __always_inline __inline +#endif + +/* Associate error messages with the source location of the call site rather + than with the source location inside the function. */ +#if __GNUC_PREREQ (4,3) +# define __attribute_artificial__ __attribute__ ((__artificial__)) +#else +# define __attribute_artificial__ /* Ignore */ +#endif + +/* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 + inline semantics, unless -fgnu89-inline is used. */ +#if !defined __cplusplus || __GNUC_PREREQ (4,3) +# if defined __GNUC_STDC_INLINE__ || defined __cplusplus +# define __extern_inline extern __inline __attribute__ ((__gnu_inline__)) +# define __extern_always_inline \ + extern __always_inline __attribute__ ((__gnu_inline__)) +# else +# define __extern_inline extern __inline +# define __extern_always_inline extern __always_inline +# endif +#else +# define __extern_inline extern __inline +#endif + + /* It is possible to compile containing GCC extensions even if GCC is run in pedantic mode if the uses are carefully marked using the `__extension__' keyword. But this is not generally available before diff --git a/src/system/libroot/posix/glibc/stdlib/gmp.h b/src/system/libroot/posix/glibc/stdlib/gmp.h index 0ecc6d1024..c9eb744dc8 100644 --- a/src/system/libroot/posix/glibc/stdlib/gmp.h +++ b/src/system/libroot/posix/glibc/stdlib/gmp.h @@ -21,6 +21,8 @@ MA 02111-1307, USA. */ #ifndef __GMP_H__ +#include + #ifndef __GNU_MP__ #define __GNU_MP__ 2 #define __need_size_t @@ -41,7 +43,7 @@ MA 02111-1307, USA. */ #ifndef _EXTERN_INLINE #ifdef __GNUC__ -#define _EXTERN_INLINE extern __inline__ +#define _EXTERN_INLINE __extern_inline #else #define _EXTERN_INLINE static #endif diff --git a/src/system/libroot/posix/glibc/stdlib/stdlib.h b/src/system/libroot/posix/glibc/stdlib/stdlib.h index 6d175df441..a38d7010db 100644 --- a/src/system/libroot/posix/glibc/stdlib/stdlib.h +++ b/src/system/libroot/posix/glibc/stdlib/stdlib.h @@ -306,18 +306,18 @@ extern unsigned long long int __strtoull_internal (__const char * /* Define inline functions which call the internal entry points. */ __BEGIN_NAMESPACE_STD -extern __inline double +__extern_inline double strtod (__const char *__restrict __nptr, char **__restrict __endptr) __THROW { return __strtod_internal (__nptr, __endptr, 0); } -extern __inline long int +__extern_inline long int strtol (__const char *__restrict __nptr, char **__restrict __endptr, int __base) __THROW { return __strtol_internal (__nptr, __endptr, __base, 0); } -extern __inline unsigned long int +__extern_inline unsigned long int strtoul (__const char *__restrict __nptr, char **__restrict __endptr, int __base) __THROW { @@ -327,12 +327,12 @@ __END_NAMESPACE_STD # ifdef __USE_ISOC99 __BEGIN_NAMESPACE_C99 -extern __inline float +__extern_inline float strtof (__const char *__restrict __nptr, char **__restrict __endptr) __THROW { return __strtof_internal (__nptr, __endptr, 0); } -extern __inline long double +__extern_inline long double strtold (__const char *__restrict __nptr, char **__restrict __endptr) __THROW { return __strtold_internal (__nptr, __endptr, 0); @@ -341,13 +341,13 @@ __END_NAMESPACE_C99 # endif # ifdef __USE_BSD -__extension__ extern __inline long long int +__extension__ __extern_inline long long int strtoq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) __THROW { return __strtoll_internal (__nptr, __endptr, __base, 0); } -__extension__ extern __inline unsigned long long int +__extension__ __extern_inline unsigned long long int strtouq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) __THROW { @@ -357,13 +357,13 @@ strtouq (__const char *__restrict __nptr, char **__restrict __endptr, # if defined __USE_MISC || defined __USE_ISOC99 __BEGIN_NAMESPACE_C99 -__extension__ extern __inline long long int +__extension__ __extern_inline long long int strtoll (__const char *__restrict __nptr, char **__restrict __endptr, int __base) __THROW { return __strtoll_internal (__nptr, __endptr, __base, 0); } -__extension__ extern __inline unsigned long long int +__extension__ __extern_inline unsigned long long int strtoull (__const char * __restrict __nptr, char **__restrict __endptr, int __base) __THROW { @@ -373,17 +373,17 @@ __END_NAMESPACE_C99 # endif __BEGIN_NAMESPACE_STD -extern __inline double +__extern_inline double atof (__const char *__nptr) __THROW { return strtod (__nptr, (char **) NULL); } -extern __inline int +__extern_inline int atoi (__const char *__nptr) __THROW { return (int) strtol (__nptr, (char **) NULL, 10); } -extern __inline long int +__extern_inline long int atol (__const char *__nptr) __THROW { return strtol (__nptr, (char **) NULL, 10); @@ -392,7 +392,7 @@ __END_NAMESPACE_STD # if defined __USE_MISC || defined __USE_ISOC99 __BEGIN_NAMESPACE_C99 -__extension__ extern __inline long long int +__extension__ __extern_inline long long int atoll (__const char *__nptr) __THROW { return strtoll (__nptr, (char **) NULL, 10); diff --git a/src/system/libroot/posix/glibc/string/bits/string2.h b/src/system/libroot/posix/glibc/string/bits/string2.h index a02b0558f1..29c91964a7 100644 --- a/src/system/libroot/posix/glibc/string/bits/string2.h +++ b/src/system/libroot/posix/glibc/string/bits/string2.h @@ -43,7 +43,7 @@ # ifdef __cplusplus # define __STRING_INLINE inline # else -# define __STRING_INLINE extern __inline +# define __STRING_INLINE __extern_inline # endif #endif diff --git a/src/system/libroot/posix/glibc/wcsmbs/wchar.h b/src/system/libroot/posix/glibc/wcsmbs/wchar.h index de2b5ab24a..579e74c922 100644 --- a/src/system/libroot/posix/glibc/wcsmbs/wchar.h +++ b/src/system/libroot/posix/glibc/wcsmbs/wchar.h @@ -218,34 +218,34 @@ extern unsigned long long int __wcstoull_internal (__const wchar_t * #if defined __OPTIMIZE__ && __GNUC__ >= 2 /* Define inline functions which call the internal entry points. */ -extern __inline double wcstod (__const wchar_t *__restrict __nptr, +__extern_inline double wcstod (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr) __THROW { return __wcstod_internal (__nptr, __endptr, 0); } -extern __inline long int wcstol (__const wchar_t *__restrict __nptr, +__extern_inline long int wcstol (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) __THROW { return __wcstol_internal (__nptr, __endptr, __base, 0); } -extern __inline unsigned long int wcstoul (__const wchar_t *__restrict __nptr, +__extern_inline unsigned long int wcstoul (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) __THROW { return __wcstoul_internal (__nptr, __endptr, __base, 0); } # ifdef __USE_GNU -extern __inline float wcstof (__const wchar_t *__restrict __nptr, +__extern_inline float wcstof (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr) __THROW { return __wcstof_internal (__nptr, __endptr, 0); } -extern __inline long double wcstold (__const wchar_t *__restrict __nptr, +__extern_inline long double wcstold (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr) __THROW { return __wcstold_internal (__nptr, __endptr, 0); } __extension__ -extern __inline long long int wcstoq (__const wchar_t *__restrict __nptr, +__extern_inline long long int wcstoq (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) __THROW { return __wcstoll_internal (__nptr, __endptr, __base, 0); } __extension__ -extern __inline unsigned long long int wcstouq (__const wchar_t * +__extern_inline unsigned long long int wcstouq (__const wchar_t * __restrict __nptr, wchar_t **__restrict __endptr, int __base) __THROW From eef1c442a3c922a1f894449abda77f0ae7b2ea82 Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Sun, 26 Jul 2015 09:47:50 -0500 Subject: [PATCH 015/126] test/kits/net: Fix build of NetEndpointTest --- src/tests/kits/net/NetEndpointTest.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tests/kits/net/NetEndpointTest.cpp b/src/tests/kits/net/NetEndpointTest.cpp index 2488d6040c..acb41c857a 100644 --- a/src/tests/kits/net/NetEndpointTest.cpp +++ b/src/tests/kits/net/NetEndpointTest.cpp @@ -46,10 +46,10 @@ checkArchive(const BNetEndpoint ne, int32 protocol, localNetAddress.GetAddr(localAddr, &localPort); remoteNetAddress.GetAddr(remoteAddr, &remotePort); - BMessage archive(0UL); + BMessage archive; status_t status = ne.Archive(&archive); if (status != B_OK) { - fprintf(stderr, "Archive() failed - %lx:%s\n", status, + fprintf(stderr, "Archive() failed - %lx:%s\n", status, strerror(status)); problemCount++; exit(1); From 89de7826607770a33a540a0ec08e7f399479f1b0 Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Sun, 26 Jul 2015 09:55:45 -0500 Subject: [PATCH 016/126] test/kits/net: Fix build of cookie_test --- src/tests/kits/net/cookie/cookie_test.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tests/kits/net/cookie/cookie_test.cpp b/src/tests/kits/net/cookie/cookie_test.cpp index 8172910048..78fe60b4e0 100644 --- a/src/tests/kits/net/cookie/cookie_test.cpp +++ b/src/tests/kits/net/cookie/cookie_test.cpp @@ -53,7 +53,7 @@ void stressTest(int32 domainNumber, int32 totalCookies, char** flat, ssize_t* si } delete watch; - BNetworkCookie* c; + const BNetworkCookie* c; int16 domain = (rand() % domainNumber); BString host("http://"); host << domains[domain] << "/"; @@ -94,7 +94,7 @@ main(int, char**) j.Unflatten(B_ANY_TYPE, flatJar, size); int32 count = 0; - BNetworkCookie* c; + const BNetworkCookie* c; for (BNetworkCookieJar::Iterator it(j.GetIterator()); (c = it.Next()); ) count++; cout << "Count : " << count << endl; From 32a6b04592d9f8ad02c37bb68c62c04843c2b8d7 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sun, 26 Jul 2015 14:58:25 +0200 Subject: [PATCH 017/126] PVS76: useless check of null pointer Refactor BResources::WriteResource to return early in case of errors, instead of checking permanently if (error == B_OK). Makes the code more readable and removes some useless checks. --- src/kits/storage/Resources.cpp | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/src/kits/storage/Resources.cpp b/src/kits/storage/Resources.cpp index 54bf553a1c..b644f35256 100644 --- a/src/kits/storage/Resources.cpp +++ b/src/kits/storage/Resources.cpp @@ -618,23 +618,27 @@ BResources::WriteResource(type_code type, int32 id, const void* data, error = InitCheck(); if (error == B_OK) error = (fReadOnly ? B_NOT_ALLOWED : B_OK); - ResourceItem *item = NULL; - if (error == B_OK) { - item = fContainer->ResourceAt(fContainer->IndexOf(type, id)); - if (!item) - error = B_BAD_VALUE; - } - if (error == B_OK && fResourceFile) + + if (error != B_OK) + return error; + + ResourceItem *item = fContainer->ResourceAt(fContainer->IndexOf(type, id)); + if (!item) + return B_BAD_VALUE; + + if (fResourceFile) { error = fResourceFile->ReadResource(*item); - if (error == B_OK) { - if (item) { - ssize_t written = item->WriteAt(offset, data, length); - if (written < 0) - error = written; - else if (written != (ssize_t)length) - error = B_ERROR; - } + if (error != B_OK) + return error; } + + ssize_t written = item->WriteAt(offset, data, length); + + if (written < 0) + error = written; + else if (written != (ssize_t)length) + error = B_ERROR; + return error; } From 69ee6a6d621db9711d6623af6f8d5e8d2dfe6c9e Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sun, 26 Jul 2015 15:02:18 +0200 Subject: [PATCH 018/126] PVS 78-85: useless checks * These were always true, so remove them. --- src/build/libbe/storage/AppFileInfo.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/build/libbe/storage/AppFileInfo.cpp b/src/build/libbe/storage/AppFileInfo.cpp index 2b81579cb8..d4e7499e52 100644 --- a/src/build/libbe/storage/AppFileInfo.cpp +++ b/src/build/libbe/storage/AppFileInfo.cpp @@ -181,13 +181,13 @@ BAppFileInfo::SetType(const char* type) { // check initialization status_t error = B_OK; - if (error == B_OK && InitCheck() != B_OK) + if (InitCheck() != B_OK) error = B_NO_INIT; if (error == B_OK) { if (type != NULL) { // check param size_t typeLen = strlen(type); - if (error == B_OK && typeLen >= B_MIME_TYPE_LENGTH) + if (typeLen >= B_MIME_TYPE_LENGTH) error = B_BAD_VALUE; // write the data if (error == B_OK) { @@ -230,13 +230,13 @@ BAppFileInfo::SetSignature(const char* signature) { // check initialization status_t error = B_OK; - if (error == B_OK && InitCheck() != B_OK) + if (B_OK && InitCheck() != B_OK) error = B_NO_INIT; if (error == B_OK) { if (signature) { // check param size_t signatureLen = strlen(signature); - if (error == B_OK && signatureLen >= B_MIME_TYPE_LENGTH) + if (signatureLen >= B_MIME_TYPE_LENGTH) error = B_BAD_VALUE; // write the data if (error == B_OK) { @@ -318,7 +318,7 @@ BAppFileInfo::SetAppFlags(uint32 flags) { // check initialization status_t error = B_OK; - if (error == B_OK && InitCheck() != B_OK) + if (InitCheck() != B_OK) error = B_NO_INIT; if (error == B_OK) { // write the data @@ -334,7 +334,7 @@ BAppFileInfo::RemoveAppFlags() { // check initialization status_t error = B_OK; - if (error == B_OK && InitCheck() != B_OK) + if (InitCheck() != B_OK) error = B_NO_INIT; if (error == B_OK) { // remove the data @@ -373,7 +373,7 @@ BAppFileInfo::SetSupportedTypes(const BMessage* types, bool updateMimeDB, { // check initialization status_t error = B_OK; - if (error == B_OK && InitCheck() != B_OK) + if (InitCheck() != B_OK) error = B_NO_INIT; BMimeType mimeType; @@ -590,7 +590,7 @@ BAppFileInfo::SetVersionInfo(const version_info* info, version_kind kind) { // check initialization status_t error = B_OK; - if (error == B_OK && InitCheck() != B_OK) + if (InitCheck() != B_OK) error = B_NO_INIT; if (error == B_OK) { if (info != NULL) { From c13e346a48b100efef2756df3a0788e285ba71ef Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sun, 26 Jul 2015 15:06:38 +0200 Subject: [PATCH 019/126] PVS 95-103: useless error checks These conditions were always true, remove them. --- src/kits/storage/AppFileInfo.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/kits/storage/AppFileInfo.cpp b/src/kits/storage/AppFileInfo.cpp index ef3ca1a74d..f111a582cc 100644 --- a/src/kits/storage/AppFileInfo.cpp +++ b/src/kits/storage/AppFileInfo.cpp @@ -181,13 +181,13 @@ BAppFileInfo::SetType(const char* type) { // check initialization status_t error = B_OK; - if (error == B_OK && InitCheck() != B_OK) + if (InitCheck() != B_OK) error = B_NO_INIT; if (error == B_OK) { if (type != NULL) { // check param size_t typeLen = strlen(type); - if (error == B_OK && typeLen >= B_MIME_TYPE_LENGTH) + if (typeLen >= B_MIME_TYPE_LENGTH) error = B_BAD_VALUE; // write the data if (error == B_OK) { @@ -230,13 +230,13 @@ BAppFileInfo::SetSignature(const char* signature) { // check initialization status_t error = B_OK; - if (error == B_OK && InitCheck() != B_OK) + if (InitCheck() != B_OK) error = B_NO_INIT; if (error == B_OK) { if (signature) { // check param size_t signatureLen = strlen(signature); - if (error == B_OK && signatureLen >= B_MIME_TYPE_LENGTH) + if (signatureLen >= B_MIME_TYPE_LENGTH) error = B_BAD_VALUE; // write the data if (error == B_OK) { @@ -318,7 +318,7 @@ BAppFileInfo::SetAppFlags(uint32 flags) { // check initialization status_t error = B_OK; - if (error == B_OK && InitCheck() != B_OK) + if (InitCheck() != B_OK) error = B_NO_INIT; if (error == B_OK) { // write the data @@ -334,7 +334,7 @@ BAppFileInfo::RemoveAppFlags() { // check initialization status_t error = B_OK; - if (error == B_OK && InitCheck() != B_OK) + if (InitCheck() != B_OK) error = B_NO_INIT; if (error == B_OK) { // remove the data @@ -373,7 +373,7 @@ BAppFileInfo::SetSupportedTypes(const BMessage* types, bool updateMimeDB, { // check initialization status_t error = B_OK; - if (error == B_OK && InitCheck() != B_OK) + if (InitCheck() != B_OK) error = B_NO_INIT; BMimeType mimeType; @@ -588,7 +588,7 @@ BAppFileInfo::SetVersionInfo(const version_info* info, version_kind kind) { // check initialization status_t error = B_OK; - if (error == B_OK && InitCheck() != B_OK) + if (InitCheck() != B_OK) error = B_NO_INIT; if (error == B_OK) { if (info != NULL) { From 67d9a9cb16eb058ffa1501ba4bf6d117fbf3284a Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sun, 26 Jul 2015 15:09:45 +0200 Subject: [PATCH 020/126] PVS 104: duplicate if check. --- src/kits/storage/mime/SupportingApps.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/kits/storage/mime/SupportingApps.cpp b/src/kits/storage/mime/SupportingApps.cpp index 4689462bb7..495f06e182 100644 --- a/src/kits/storage/mime/SupportingApps.cpp +++ b/src/kits/storage/mime/SupportingApps.cpp @@ -165,10 +165,9 @@ SupportingApps::SetSupportedTypes(const char *app, const BMessage *types, bool f std::set &newTypes = fSupportedTypes[app]; std::set &strandedTypes = fStrandedTypes[app]; // Make a copy of the previous types if we're doing a full sync - if (!err) + if (!err) { oldTypes = newTypes; - if (!err) { // Read through the list of new supported types, creating the new // supported types list and adding the app as a supporting app for // each type. From 2f8639483aa51409240e29679543881cd2a223f2 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sun, 26 Jul 2015 15:13:41 +0200 Subject: [PATCH 021/126] PVS 170: use boolean for if comparison Direct use of strcmp result in if is against our coding style. --- src/kits/support/Archivable.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/kits/support/Archivable.cpp b/src/kits/support/Archivable.cpp index 8c092d984a..d819d88d56 100644 --- a/src/kits/support/Archivable.cpp +++ b/src/kits/support/Archivable.cpp @@ -230,7 +230,7 @@ check_signature(const char* signature, image_info& info) return err; } - if (strcmp(signature, imageSignature)) + if (strcmp(signature, imageSignature) != 0) return B_MISMATCHED_VALUES; return B_OK; From 3ec680083978d2e840ba9557881653e00e321a30 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sun, 26 Jul 2015 15:31:43 +0200 Subject: [PATCH 022/126] PVS 109: useless check error was already checked one line above. --- src/kits/storage/ResourceFile.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/kits/storage/ResourceFile.cpp b/src/kits/storage/ResourceFile.cpp index 48d55651d3..6885bccc57 100644 --- a/src/kits/storage/ResourceFile.cpp +++ b/src/kits/storage/ResourceFile.cpp @@ -310,9 +310,9 @@ ResourceFile::ReadResource(ResourceItem& resource, bool force) status_t error = InitCheck(); size_t size = resource.DataSize(); if (error == B_OK && (force || !resource.IsLoaded())) { - if (error == B_OK) - error = resource.SetSize(size); void* data = NULL; + error = resource.SetSize(size); + if (error == B_OK) { data = resource.Data(); ssize_t bytesRead = fFile.ReadAt(resource.Offset(), data, size); From 0e17424c6fb8e7c7c3e024da2360de45a2aa6f03 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sun, 26 Jul 2015 15:33:37 +0200 Subject: [PATCH 023/126] PVS 112: check result of memcmp against 0. --- src/kits/storage/ResourceFile.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/kits/storage/ResourceFile.cpp b/src/kits/storage/ResourceFile.cpp index 6885bccc57..907ee87bb9 100644 --- a/src/kits/storage/ResourceFile.cpp +++ b/src/kits/storage/ResourceFile.cpp @@ -676,7 +676,7 @@ ResourceFile::_InitPEFFile(BFile& file, const PEFContainerHeader& pefHeader) if (error != B_OK) throw Exception(error, "Failed to get the file size."); // check architecture -- we support PPC only - if (memcmp(pefHeader.architecture, kPEFArchitecturePPC, 4)) + if (memcmp(pefHeader.architecture, kPEFArchitecturePPC, 4) != 0) throw Exception(B_IO_ERROR, "PEF file architecture is not PPC."); fHostEndianess = B_HOST_IS_BENDIAN; // get the section count From 7895cfc69b8d2ffd209400ab6ed4514cd2dab842 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sun, 26 Jul 2015 15:35:46 +0200 Subject: [PATCH 024/126] PVS 114: useless check. We return a few line above if err is != 0. --- src/kits/storage/mime/SnifferRules.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/kits/storage/mime/SnifferRules.cpp b/src/kits/storage/mime/SnifferRules.cpp index 12efe32057..a3ce4b1eb6 100644 --- a/src/kits/storage/mime/SnifferRules.cpp +++ b/src/kits/storage/mime/SnifferRules.cpp @@ -452,7 +452,7 @@ SnifferRules::GuessMimeType(BFile* file, const void *buffer, int32 length, // wrap the buffer by a BMemoryIO BMemoryIO data(buffer, length); - if (!err && !fHaveDoneFullBuild) + if (!fHaveDoneFullBuild) err = BuildRuleList(); // first ask the MIME sniffer for a suitable type From 58164f4a490e1a9d7bdef66621fb4a6055e19a96 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sun, 26 Jul 2015 15:38:25 +0200 Subject: [PATCH 025/126] PVS 122,123: useless checks. --- src/build/libbe/storage/NodeInfo.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/build/libbe/storage/NodeInfo.cpp b/src/build/libbe/storage/NodeInfo.cpp index 83a6f50e36..2fd37b4448 100644 --- a/src/build/libbe/storage/NodeInfo.cpp +++ b/src/build/libbe/storage/NodeInfo.cpp @@ -177,7 +177,7 @@ BNodeInfo::SetType(const char *type) { // check parameter and initialization status_t error = B_OK; - if (error == B_OK && type && strlen(type) >= B_MIME_TYPE_LENGTH) + if (type && strlen(type) >= B_MIME_TYPE_LENGTH) error = B_BAD_VALUE; if (error == B_OK && InitCheck() != B_OK) error = B_NO_INIT; @@ -540,7 +540,7 @@ BNodeInfo::SetAppHint(const entry_ref *ref) { // check parameter and initialization status_t error = B_OK; - if (error == B_OK && InitCheck() != B_OK) + if (InitCheck() != B_OK) error = B_NO_INIT; // write/remove the attribute if (error == B_OK) { From 209cd3dd4fa80d0096cc77f8effa2116eb1e38f8 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sun, 26 Jul 2015 20:31:10 +0200 Subject: [PATCH 026/126] Remove second half of useless condition. Thanks to Ingo for reviewing! --- src/build/libbe/storage/AppFileInfo.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/build/libbe/storage/AppFileInfo.cpp b/src/build/libbe/storage/AppFileInfo.cpp index d4e7499e52..8440f8a9c4 100644 --- a/src/build/libbe/storage/AppFileInfo.cpp +++ b/src/build/libbe/storage/AppFileInfo.cpp @@ -230,7 +230,7 @@ BAppFileInfo::SetSignature(const char* signature) { // check initialization status_t error = B_OK; - if (B_OK && InitCheck() != B_OK) + if (InitCheck() != B_OK) error = B_NO_INIT; if (error == B_OK) { if (signature) { From 8f21b175209ccd6c576e7d379e35ecb2debed123 Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Sat, 25 Jul 2015 17:16:27 -0400 Subject: [PATCH 027/126] Debugger: Add more helpers to Team. ClearImages(): - Removes all existing images from the team's image list and notifies callers. To be used in case of an exec(). ClearSignalDispositionMappings(): - Remove any existing custom signal disposition mappings. This is intended to be used in preparation for loading new ones from a team after exec() is called. --- src/apps/debugger/model/Team.cpp | 15 +++++++++++++++ src/apps/debugger/model/Team.h | 3 +++ 2 files changed, 18 insertions(+) diff --git a/src/apps/debugger/model/Team.cpp b/src/apps/debugger/model/Team.cpp index b22477872e..58c60a7123 100644 --- a/src/apps/debugger/model/Team.cpp +++ b/src/apps/debugger/model/Team.cpp @@ -277,6 +277,14 @@ Team::Images() const } +void +Team::ClearImages() +{ + while (!fImages.IsEmpty()) + RemoveImage(fImages.First()); +} + + bool Team::AddStopImageName(const BString& name) { @@ -377,6 +385,13 @@ Team::GetSignalDispositionMappings() const } +void +Team::ClearSignalDispositionMappings() +{ + fCustomSignalDispositions.clear(); +} + + bool Team::AddBreakpoint(Breakpoint* breakpoint) { diff --git a/src/apps/debugger/model/Team.h b/src/apps/debugger/model/Team.h index 9891172093..d2620e9647 100644 --- a/src/apps/debugger/model/Team.h +++ b/src/apps/debugger/model/Team.h @@ -137,6 +137,7 @@ public: Image* ImageByID(image_id imageID) const; Image* ImageByAddress(target_addr_t address) const; const ImageList& Images() const; + void ClearImages(); bool AddStopImageName(const BString& name); void RemoveStopImageName(const BString& name); @@ -161,6 +162,8 @@ public: const SignalDispositionMappings& GetSignalDispositionMappings() const; + void ClearSignalDispositionMappings(); + bool AddBreakpoint(Breakpoint* breakpoint); // takes over reference (also on error) void RemoveBreakpoint(Breakpoint* breakpoint); From 25c638c20b7a6479c5630b99b55937e4a0aee680 Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Sat, 25 Jul 2015 17:17:18 -0400 Subject: [PATCH 028/126] Debugger: Adjust ThreadHandler. - SetBreakpointAndRun() now takes an additional argument indicating if this invocation is for a fresh run of a team or not, as continuing the thread's execution needs to be done differently in the two cases. --- src/apps/debugger/controllers/ThreadHandler.cpp | 10 ++++++++-- src/apps/debugger/controllers/ThreadHandler.h | 3 ++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/apps/debugger/controllers/ThreadHandler.cpp b/src/apps/debugger/controllers/ThreadHandler.cpp index 838b8ffd59..361f6575c5 100644 --- a/src/apps/debugger/controllers/ThreadHandler.cpp +++ b/src/apps/debugger/controllers/ThreadHandler.cpp @@ -119,16 +119,22 @@ ThreadHandler::Init() status_t -ThreadHandler::SetBreakpointAndRun(target_addr_t address) +ThreadHandler::SetBreakpointAndRun(target_addr_t address, bool initialStart) { status_t error = _InstallTemporaryBreakpoint(address); if (error != B_OK) return error; fPreviousInstructionPointer = 0; - resume_thread(ThreadID()); + // when the program is first run, the initial thread is not yet under + // the control of the debug nub, so it needs to be resumed rather than + // continued. + if (initialStart) { + resume_thread(ThreadID()); // TODO: This should probably better be a DebuggerInterface method, // but this method is used only when debugging a local team anyway. + } else + fDebuggerInterface->ContinueThread(ThreadID()); // Pretend "step out" mode, so that the temporary breakpoint hit will not // be ignored. fStepMode = STEP_OUT; diff --git a/src/apps/debugger/controllers/ThreadHandler.h b/src/apps/debugger/controllers/ThreadHandler.h index 432eac1e9f..b0b4cdd7c1 100644 --- a/src/apps/debugger/controllers/ThreadHandler.h +++ b/src/apps/debugger/controllers/ThreadHandler.h @@ -39,7 +39,8 @@ public: thread_id ThreadID() const { return fThread->ID(); } Thread* GetThread() const { return fThread; } - status_t SetBreakpointAndRun(target_addr_t address); + status_t SetBreakpointAndRun(target_addr_t address, + bool initialStart = true); // team lock held // All Handle*() methods are invoked in team debugger thread, From 754b42a5a19e0f183356ebf5efab39529f7fcbb0 Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Sun, 26 Jul 2015 12:57:15 -0400 Subject: [PATCH 029/126] Debugger: Add rename event for Team. Team: - Add listener hook and event type for rename events. These occur on exec() since at this point we're running a different executable. TeamWindow: - Factor out code for generating window title into a helper, and use from both window initialization and newly implemented rename listener hook. --- src/apps/debugger/MessageCodes.h | 1 + src/apps/debugger/model/Team.cpp | 17 ++++++++++ src/apps/debugger/model/Team.h | 6 ++++ .../gui/team_window/TeamWindow.cpp | 31 +++++++++++++++---- .../gui/team_window/TeamWindow.h | 2 ++ 5 files changed, 51 insertions(+), 6 deletions(-) diff --git a/src/apps/debugger/MessageCodes.h b/src/apps/debugger/MessageCodes.h index 89604a8f6a..6d08b840d1 100644 --- a/src/apps/debugger/MessageCodes.h +++ b/src/apps/debugger/MessageCodes.h @@ -31,6 +31,7 @@ enum { MSG_SET_CUSTOM_SIGNAL_DISPOSITION = 'scsd', MSG_REMOVE_CUSTOM_SIGNAL_DISPOSITION = 'rcsd', + MSG_TEAM_RENAMED = 'tera', MSG_THREAD_STATE_CHANGED = 'tsch', MSG_THREAD_CPU_STATE_CHANGED = 'tcsc', MSG_THREAD_STACK_TRACE_CHANGED = 'tstc', diff --git a/src/apps/debugger/model/Team.cpp b/src/apps/debugger/model/Team.cpp index 58c60a7123..73ad3bcc6a 100644 --- a/src/apps/debugger/model/Team.cpp +++ b/src/apps/debugger/model/Team.cpp @@ -120,6 +120,7 @@ void Team::SetName(const BString& name) { fName = name; + _NotifyTeamRenamed(); } @@ -862,6 +863,16 @@ Team::NotifyMemoryChanged(target_addr_t address, target_size_t size) } +void +Team::_NotifyTeamRenamed() +{ + for (ListenerList::Iterator it = fListeners.GetIterator(); + Listener* listener = it.Next();) { + listener->TeamRenamed(Event(TEAM_EVENT_TEAM_RENAMED, this)); + } +} + + void Team::_NotifyThreadAdded(Thread* thread) { @@ -1067,6 +1078,12 @@ Team::Listener::~Listener() } +void +Team::Listener::TeamRenamed(const Team::Event& event) +{ +} + + void Team::Listener::ThreadAdded(const Team::ThreadEvent& event) { diff --git a/src/apps/debugger/model/Team.h b/src/apps/debugger/model/Team.h index d2620e9647..a5ea092745 100644 --- a/src/apps/debugger/model/Team.h +++ b/src/apps/debugger/model/Team.h @@ -24,6 +24,8 @@ // team event types enum { + TEAM_EVENT_TEAM_RENAMED, + TEAM_EVENT_THREAD_ADDED, TEAM_EVENT_THREAD_REMOVED, TEAM_EVENT_IMAGE_ADDED, @@ -273,6 +275,7 @@ private: typedef DoublyLinkedList ListenerList; private: + void _NotifyTeamRenamed(); void _NotifyThreadAdded(Thread* thread); void _NotifyThreadRemoved(Thread* thread); void _NotifyImageAdded(Image* image); @@ -474,6 +477,9 @@ class Team::Listener : public DoublyLinkedListLinkImpl { public: virtual ~Listener(); + virtual void TeamRenamed( + const Team::Event& event); + virtual void ThreadAdded(const Team::ThreadEvent& event); virtual void ThreadRemoved(const Team::ThreadEvent& event); diff --git a/src/apps/debugger/user_interface/gui/team_window/TeamWindow.cpp b/src/apps/debugger/user_interface/gui/team_window/TeamWindow.cpp index ae63b9426d..ced49882b6 100644 --- a/src/apps/debugger/user_interface/gui/team_window/TeamWindow.cpp +++ b/src/apps/debugger/user_interface/gui/team_window/TeamWindow.cpp @@ -145,12 +145,7 @@ TeamWindow::TeamWindow(::Team* team, UserInterfaceListener* listener) fFilePanel(NULL), fActiveSourceWorker(-1) { - fTeam->Lock(); - BString name = fTeam->Name(); - fTeam->Unlock(); - if (fTeam->ID() >= 0) - name << " (" << fTeam->ID() << ")"; - SetTitle(name.String()); + _UpdateTitle(); fTeam->AddListener(this); } @@ -518,6 +513,11 @@ TeamWindow::MessageReceived(BMessage* message) } break; } + case MSG_TEAM_RENAMED: + { + _UpdateTitle(); + break; + } case MSG_THREAD_STATE_CHANGED: { int32 threadID; @@ -905,6 +905,13 @@ TeamWindow::ValueNodeWriteRequested(ValueNode* node, CpuState* state, } +void +TeamWindow::TeamRenamed(const Team::Event& event) +{ + PostMessage(MSG_TEAM_RENAMED); +} + + void TeamWindow::ThreadStateChanged(const Team::ThreadEvent& event) { @@ -1141,6 +1148,18 @@ TeamWindow::_Init() } +void +TeamWindow::_UpdateTitle() +{ + AutoLocker< ::Team> lock(fTeam); + + BString name = fTeam->Name(); + if (fTeam->ID() >= 0) + name << " (" << fTeam->ID() << ")"; + SetTitle(name.String()); +} + + void TeamWindow::_SetActiveThread(::Thread* thread) { diff --git a/src/apps/debugger/user_interface/gui/team_window/TeamWindow.h b/src/apps/debugger/user_interface/gui/team_window/TeamWindow.h index f8d601823a..627f4296dc 100644 --- a/src/apps/debugger/user_interface/gui/team_window/TeamWindow.h +++ b/src/apps/debugger/user_interface/gui/team_window/TeamWindow.h @@ -134,6 +134,7 @@ private: CpuState* state, Value* value); // Team::Listener + virtual void TeamRenamed(const Team::Event& event); virtual void ThreadStateChanged( const Team::ThreadEvent& event); virtual void ThreadCpuStateChanged( @@ -157,6 +158,7 @@ private: void _Init(); + void _UpdateTitle(); void _SetActiveThread(::Thread* thread); void _SetActiveImage(Image* image); void _SetActiveStackTrace(StackTrace* stackTrace); From 10bbf8cb8d8bc8eb9e63e87be8dd21f9b73c7937 Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Sun, 26 Jul 2015 14:20:04 -0400 Subject: [PATCH 030/126] Debugger: TeamWindow refactor. - When asked to load settings, post a message and do so in the window's message loop. This avoids a lock order reversal when asked to do so later as a result of exec() changing the target image out. --- .../gui/team_window/TeamWindow.cpp | 134 ++++++++++-------- .../gui/team_window/TeamWindow.h | 3 + 2 files changed, 77 insertions(+), 60 deletions(-) diff --git a/src/apps/debugger/user_interface/gui/team_window/TeamWindow.cpp b/src/apps/debugger/user_interface/gui/team_window/TeamWindow.cpp index ced49882b6..4b7f15ed8b 100644 --- a/src/apps/debugger/user_interface/gui/team_window/TeamWindow.cpp +++ b/src/apps/debugger/user_interface/gui/team_window/TeamWindow.cpp @@ -73,7 +73,8 @@ enum { MSG_DEBUG_REPORT_SAVED = 'drsa', MSG_LOCATE_SOURCE_IF_NEEDED = 'lsin', MSG_SOURCE_ENTRY_QUERY_COMPLETE = 'seqc', - MSG_CLEAR_STACK_TRACE = 'clst' + MSG_CLEAR_STACK_TRACE = 'clst', + MSG_HANDLE_LOAD_SETTINGS = 'hlst' }; @@ -513,6 +514,17 @@ TeamWindow::MessageReceived(BMessage* message) } break; } + case MSG_HANDLE_LOAD_SETTINGS: + { + GuiTeamUiSettings* settings; + if (message->FindPointer("settings", + reinterpret_cast(&settings)) != B_OK) { + break; + } + + _LoadSettings(settings); + break; + } case MSG_TEAM_RENAMED: { _UpdateTitle(); @@ -617,64 +629,9 @@ TeamWindow::QuitRequested() status_t TeamWindow::LoadSettings(const GuiTeamUiSettings* settings) { - AutoLocker lock(this); - if (!lock.IsLocked()) - return B_ERROR; - - BMessage teamWindowSettings; - // no settings stored yet - if (settings->Settings("teamWindow", teamWindowSettings) != B_OK) - return B_OK; - - BRect frame; - if (teamWindowSettings.FindRect("frame", &frame) == B_OK) { - ResizeTo(frame.Width(), frame.Height()); - MoveTo(frame.left, frame.top); - } - - BMessage archive; - if (teamWindowSettings.FindMessage("sourceSplit", &archive) == B_OK) - GuiSettingsUtils::UnarchiveSplitView(archive, fSourceSplitView); - - if (teamWindowSettings.FindMessage("functionSplit", &archive) == B_OK) - GuiSettingsUtils::UnarchiveSplitView(archive, fFunctionSplitView); - - if (teamWindowSettings.FindMessage("imageSplit", &archive) == B_OK) - GuiSettingsUtils::UnarchiveSplitView(archive, fImageSplitView); - - if (teamWindowSettings.FindMessage("threadSplit", &archive) == B_OK) - GuiSettingsUtils::UnarchiveSplitView(archive, fThreadSplitView); - - if (teamWindowSettings.FindMessage("consoleSplit", &archive) == B_OK) - GuiSettingsUtils::UnarchiveSplitView(archive, fConsoleSplitView); - - if (teamWindowSettings.FindMessage("imageListView", &archive) == B_OK) - fImageListView->LoadSettings(archive); - - if (teamWindowSettings.FindMessage("imageFunctionsView", &archive) == B_OK) - fImageFunctionsView->LoadSettings(archive); - - if (teamWindowSettings.FindMessage("threadListView", &archive) == B_OK) - fThreadListView->LoadSettings(archive); - - if (teamWindowSettings.FindMessage("variablesView", &archive) == B_OK) - fVariablesView->LoadSettings(archive); - - if (teamWindowSettings.FindMessage("registersView", &archive) == B_OK) - fRegistersView->LoadSettings(archive); - - if (teamWindowSettings.FindMessage("stackTraceView", &archive) == B_OK) - fStackTraceView->LoadSettings(archive); - - if (teamWindowSettings.FindMessage("breakpointsView", &archive) == B_OK) - fBreakpointsView->LoadSettings(archive); - - if (teamWindowSettings.FindMessage("consoleOutputView", &archive) == B_OK) - fConsoleOutputView->LoadSettings(archive); - - fUiSettings = *settings; - - return B_OK; + BMessage message(MSG_HANDLE_LOAD_SETTINGS); + message.AddPointer("settings", settings); + return PostMessage(&message); } @@ -1148,11 +1105,68 @@ TeamWindow::_Init() } +void +TeamWindow::_LoadSettings(const GuiTeamUiSettings* settings) +{ + BMessage teamWindowSettings; + // no settings stored yet + if (settings->Settings("teamWindow", teamWindowSettings) != B_OK) + return; + + BRect frame; + if (teamWindowSettings.FindRect("frame", &frame) == B_OK) { + ResizeTo(frame.Width(), frame.Height()); + MoveTo(frame.left, frame.top); + } + + BMessage archive; + if (teamWindowSettings.FindMessage("sourceSplit", &archive) == B_OK) + GuiSettingsUtils::UnarchiveSplitView(archive, fSourceSplitView); + + if (teamWindowSettings.FindMessage("functionSplit", &archive) == B_OK) + GuiSettingsUtils::UnarchiveSplitView(archive, fFunctionSplitView); + + if (teamWindowSettings.FindMessage("imageSplit", &archive) == B_OK) + GuiSettingsUtils::UnarchiveSplitView(archive, fImageSplitView); + + if (teamWindowSettings.FindMessage("threadSplit", &archive) == B_OK) + GuiSettingsUtils::UnarchiveSplitView(archive, fThreadSplitView); + + if (teamWindowSettings.FindMessage("consoleSplit", &archive) == B_OK) + GuiSettingsUtils::UnarchiveSplitView(archive, fConsoleSplitView); + + if (teamWindowSettings.FindMessage("imageListView", &archive) == B_OK) + fImageListView->LoadSettings(archive); + + if (teamWindowSettings.FindMessage("imageFunctionsView", &archive) == B_OK) + fImageFunctionsView->LoadSettings(archive); + + if (teamWindowSettings.FindMessage("threadListView", &archive) == B_OK) + fThreadListView->LoadSettings(archive); + + if (teamWindowSettings.FindMessage("variablesView", &archive) == B_OK) + fVariablesView->LoadSettings(archive); + + if (teamWindowSettings.FindMessage("registersView", &archive) == B_OK) + fRegistersView->LoadSettings(archive); + + if (teamWindowSettings.FindMessage("stackTraceView", &archive) == B_OK) + fStackTraceView->LoadSettings(archive); + + if (teamWindowSettings.FindMessage("breakpointsView", &archive) == B_OK) + fBreakpointsView->LoadSettings(archive); + + if (teamWindowSettings.FindMessage("consoleOutputView", &archive) == B_OK) + fConsoleOutputView->LoadSettings(archive); + + fUiSettings = *settings; +} + + void TeamWindow::_UpdateTitle() { AutoLocker< ::Team> lock(fTeam); - BString name = fTeam->Name(); if (fTeam->ID() >= 0) name << " (" << fTeam->ID() << ")"; diff --git a/src/apps/debugger/user_interface/gui/team_window/TeamWindow.h b/src/apps/debugger/user_interface/gui/team_window/TeamWindow.h index 627f4296dc..f9be9461df 100644 --- a/src/apps/debugger/user_interface/gui/team_window/TeamWindow.h +++ b/src/apps/debugger/user_interface/gui/team_window/TeamWindow.h @@ -158,6 +158,9 @@ private: void _Init(); + void _LoadSettings( + const GuiTeamUiSettings* settings); + void _UpdateTitle(); void _SetActiveThread(::Thread* thread); void _SetActiveImage(Image* image); From 9123fde7b9ce627fb4ea6a824fd3151d02b51298 Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Sat, 25 Jul 2015 17:18:21 -0400 Subject: [PATCH 031/126] Debugger: Implement #9783. TeamDebugger: - When we're notified that the target team has called exec(), take all necessary steps to prepare. These include saving settings for the old team, clearing out breakpoints, resetting signal dispositions, and removing the old team's image list. Also set a flag indicating an exec is pending for later processing. - On image load notification, if the pending flag is set, check if the new image is the app image, and if so update the team's name to the new image, load that respective team's settings, and set a temporary breakpoint in its main() so the user has a chance to perform any additional desired actions before starting execution in the new executable. --- .../debugger/controllers/TeamDebugger.cpp | 83 +++++++++++++++++-- src/apps/debugger/controllers/TeamDebugger.h | 3 + 2 files changed, 77 insertions(+), 9 deletions(-) diff --git a/src/apps/debugger/controllers/TeamDebugger.cpp b/src/apps/debugger/controllers/TeamDebugger.cpp index e9d92bbe81..5bea9ee558 100644 --- a/src/apps/debugger/controllers/TeamDebugger.cpp +++ b/src/apps/debugger/controllers/TeamDebugger.cpp @@ -231,7 +231,8 @@ TeamDebugger::TeamDebugger(Listener* listener, UserInterface* userInterface, fTerminating(false), fKillTeamOnQuit(false), fCommandLineArgc(0), - fCommandLineArgv(NULL) + fCommandLineArgv(NULL), + fExecPending(false) { fUserInterface->AcquireReference(); } @@ -454,7 +455,8 @@ TeamDebugger::Init(team_id teamID, thread_id threadID, int argc, // set team debugging flags fDebuggerInterface->SetTeamDebuggingFlags( B_TEAM_DEBUG_THREADS | B_TEAM_DEBUG_IMAGES - | B_TEAM_DEBUG_POST_SYSCALL | B_TEAM_DEBUG_SIGNALS); + | B_TEAM_DEBUG_POST_SYSCALL | B_TEAM_DEBUG_SIGNALS + | B_TEAM_DEBUG_TEAM_CREATION); // get the initial state of the team AutoLocker< ::Team> teamLocker(fTeam); @@ -1556,10 +1558,15 @@ TeamDebugger::_HandleDebuggerMessage(DebugEvent* event) break; } case B_DEBUGGER_MESSAGE_TEAM_EXEC: + { TRACE_EVENTS("B_DEBUGGER_MESSAGE_TEAM_EXEC: team: %" B_PRId32 "\n", event->Team()); - // TODO: Handle! + + TeamExecEvent* teamEvent + = dynamic_cast(event); + _PrepareForTeamExec(teamEvent); break; + } case B_DEBUGGER_MESSAGE_THREAD_CREATED: { ThreadCreatedEvent* threadEvent @@ -1849,6 +1856,43 @@ TeamDebugger::_HandlePostSyscall(PostSyscallEvent* event) } +void +TeamDebugger::_PrepareForTeamExec(TeamExecEvent* event) +{ + // NB: must be called with team lock held. + + _SaveSettings(); + + // when notified of exec, we need to clear out data related + // to the old team. + const ImageList& images = fTeam->Images(); + + for (ImageList::ConstIterator it = images.GetIterator(); + Image* image = it.Next();) { + fBreakpointManager->RemoveImageBreakpoints(image); + } + + BObjectList breakpointsToRemove(20, false); + const UserBreakpointList& breakpoints = fTeam->UserBreakpoints(); + for (UserBreakpointList::ConstIterator it = breakpoints.GetIterator(); + UserBreakpoint* breakpoint = it.Next();) { + breakpointsToRemove.AddItem(breakpoint); + breakpoint->AcquireReference(); + } + + for (int32 i = 0; i < breakpointsToRemove.CountItems(); i++) { + UserBreakpoint* breakpoint = breakpointsToRemove.ItemAt(i); + fTeam->RemoveUserBreakpoint(breakpoint); + fTeam->NotifyUserBreakpointChanged(breakpoint); + breakpoint->ReleaseReference(); + } + + fTeam->ClearImages(); + fTeam->ClearSignalDispositionMappings(); + fExecPending = true; +} + + void TeamDebugger::_HandleImageDebugInfoChanged(image_id imageID) { @@ -1860,10 +1904,22 @@ TeamDebugger::_HandleImageDebugInfoChanged(image_id imageID) Image* image = imageHandler->GetImage(); BReference imageReference(image); + image_debug_info_state state = image->ImageDebugInfoState(); + + bool handlePostExecSetup = fExecPending && image->Type() == B_APP_IMAGE + && state != IMAGE_DEBUG_INFO_LOADING; + + // this needs to be done first so that breakpoints are loaded. + // otherwise, UpdateImageBreakpoints() won't find the appropriate + // UserBreakpoints to create/install instances for. + if (handlePostExecSetup) { + fTeam->SetName(image->Name()); + _LoadSettings(); + fExecPending = false; + } locker.Unlock(); - image_debug_info_state state = image->ImageDebugInfoState(); if (state == IMAGE_DEBUG_INFO_LOADED || state == IMAGE_DEBUG_INFO_UNAVAILABLE) { // update breakpoints in the image @@ -1875,9 +1931,9 @@ TeamDebugger::_HandleImageDebugInfoChanged(image_id imageID) fImageInfoPendingThreads->Remove(thread); ObjectDeleter threadDeleter(thread); locker.Lock(); + ThreadHandler* handler = _GetThreadHandler(thread->ThreadID()); + BReference handlerReference(handler); if (fTeam->StopOnImageLoad()) { - ThreadHandler* handler = _GetThreadHandler(thread->ThreadID()); - BReference handlerReference(handler); bool stop = true; const BString& imageName = image->Name(); @@ -1899,10 +1955,19 @@ TeamDebugger::_HandleImageDebugInfoChanged(image_id imageID) return; } else locker.Unlock(); - } else + } else if (handlePostExecSetup) { + // in the case of an exec(), we can't stop in main() until + // the new app image has been loaded, so we know where to + // set the main breakpoint at. + SymbolInfo symbolInfo; + if (fDebuggerInterface->GetSymbolInfo(fTeam->ID(), image->ID(), + "main", B_SYMBOL_TYPE_TEXT, symbolInfo) == B_OK) { + handler->SetBreakpointAndRun(symbolInfo.Address(), false); + } + } else { locker.Unlock(); - - fDebuggerInterface->ContinueThread(thread->ThreadID()); + fDebuggerInterface->ContinueThread(thread->ThreadID()); + } } } } diff --git a/src/apps/debugger/controllers/TeamDebugger.h b/src/apps/debugger/controllers/TeamDebugger.h index 371a0ed3f5..d69e0f53f0 100644 --- a/src/apps/debugger/controllers/TeamDebugger.h +++ b/src/apps/debugger/controllers/TeamDebugger.h @@ -184,6 +184,8 @@ private: bool _HandlePostSyscall( PostSyscallEvent* event); + void _PrepareForTeamExec(TeamExecEvent* event); + void _HandleImageDebugInfoChanged(image_id imageID); void _HandleImageFileChanged(image_id imageID); @@ -259,6 +261,7 @@ private: TeamSettings fTeamSettings; int fCommandLineArgc; const char** fCommandLineArgv; + bool fExecPending; }; From 3f5483c79b52ee74da056700fa56fe7fbb7805d4 Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Mon, 27 Jul 2015 18:07:12 +0200 Subject: [PATCH 032/126] desklink: Fix problems with BMediaRoster Quit * Improved the situation so that it should be always synchronized. Improved error message, and detection of media services not being run. --- src/bin/desklink/MixerControl.cpp | 42 ++++++------------------------- 1 file changed, 8 insertions(+), 34 deletions(-) diff --git a/src/bin/desklink/MixerControl.cpp b/src/bin/desklink/MixerControl.cpp index 54665cb079..dea3fa52e6 100644 --- a/src/bin/desklink/MixerControl.cpp +++ b/src/bin/desklink/MixerControl.cpp @@ -7,6 +7,7 @@ * François Revol * Axel Dörfler, axeld@pinc-software.de. * Puck Meerburg, puck@puckipedia.nl + * Dario Casalinuovo, b.vitruvio@gmail.com */ @@ -45,31 +46,13 @@ MixerControl::Connect(int32 volumeWhich, float* _value, const char** _error) _Disconnect(); - bool retrying = false; - status_t status = B_OK; - // BMediaRoster::Roster() doesn't set it if all is ok + // BMediaRoster::Roster() doesn't set it if all is ok const char* errorString = NULL; BMediaRoster* roster = BMediaRoster::Roster(&status); -retry: - // Here we release the BMediaRoster once if we can't access the system - // mixer, to make sure it really isn't there, and it's not BMediaRoster - // that is messed up. - if (retrying) { - errorString = NULL; - PRINT(("retrying to get a Media Roster\n")); - /* BMediaRoster looks doomed */ - roster = BMediaRoster::CurrentRoster(); - if (roster) { - roster->Lock(); - roster->Quit(); - } - snooze(10000); - roster = BMediaRoster::Roster(&status); - } - - if (roster != NULL && status == B_OK) { + if (BMediaRoster::IsRunning() && roster != NULL + && status == B_OK) { switch (volumeWhich) { case VOLUME_USE_MIXER: status = roster->GetAudioMixer(&fGainMediaNode); @@ -160,20 +143,11 @@ retry: errorString = "No parameter web"; fParameterWeb = NULL; } - } else { - if (!retrying) { - retrying = true; - goto retry; - } + } else errorString = volumeWhich ? "No Audio output" : "No Mixer"; - } - } else { - if (!retrying) { - retrying = true; - goto retry; - } - errorString = "No Media Roster"; - } + + } else + errorString = "Media services not running"; if (status != B_OK) fGainMediaNode = media_node::null; From 40de3cd148f2d8edbf4b60bd2221c43f267fea5a Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Mon, 27 Jul 2015 18:08:26 +0200 Subject: [PATCH 033/126] BMediaRoster: Definitely undertake the MediaRosterUndertaker * On a more deep analysis i figured out that other than being a bad pratice quitting the BLooper explicitly was cause of more problems, such as the regression after my patches which led to have a zombie media_addon_server after media services restart. This should hopefully place a final stone on the BMediaRoster::Quit() issue as with the previous commit i've removed every attempt to do this in the system. For any application developer listening, this means that quitting the BMediaRoster is highly discouraged, don't do it. --- src/kits/media/MediaRoster.cpp | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/src/kits/media/MediaRoster.cpp b/src/kits/media/MediaRoster.cpp index 012a218d82..22de1accef 100644 --- a/src/kits/media/MediaRoster.cpp +++ b/src/kits/media/MediaRoster.cpp @@ -84,28 +84,12 @@ struct RosterNotification { static bool sServerIsUp = false; static List sNotificationList; -// This class is provided to ensure the BMediaRoster is quit. -class MediaRosterUndertaker { -public: - ~MediaRosterUndertaker() - { - if (BMediaRoster::CurrentRoster() != NULL) { - BMediaRoster::CurrentRoster()->Lock(); - BMediaRoster::CurrentRoster()->Quit(); - } - } -}; - - } // namespace media } // namespace BPrivate using namespace BPrivate::media; -static MediaRosterUndertaker sUndertaker; - - BMediaRosterEx::BMediaRosterEx(status_t* _error) : BMediaRoster() @@ -134,7 +118,6 @@ BMediaRosterEx::BuildConnections() server_register_app_reply reply; request.team = BPrivate::current_team(); request.messenger = BMessenger(NULL, this); - status_t status = QueryServer(SERVER_REGISTER_APP, &request, sizeof(request), &reply, sizeof(reply)); if (status != B_OK) From 009034bdf0717b41c9d72b6f24b1a1289b3ef0b1 Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Mon, 27 Jul 2015 20:16:43 +0200 Subject: [PATCH 034/126] Media: Display alert before to quit when restarting * Fixes 10770. * While more complex solutions are proposed, i think of it as a way to get out of an eventual deadlock or to protect from accident close. --- src/preferences/media/MediaWindow.cpp | 19 ++++++++++++++++++- src/preferences/media/MediaWindow.h | 1 + 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/preferences/media/MediaWindow.cpp b/src/preferences/media/MediaWindow.cpp index 424b642c5c..77864d6e0f 100644 --- a/src/preferences/media/MediaWindow.cpp +++ b/src/preferences/media/MediaWindow.cpp @@ -164,7 +164,8 @@ MediaWindow::MediaWindow(BRect frame) fAudioOutputs(5, true), fVideoInputs(5, true), fVideoOutputs(5, true), - fInitCheck(B_OK) + fInitCheck(B_OK), + fRestartingServices(false) { _InitWindow(); @@ -282,6 +283,20 @@ MediaWindow::UpdateOutputListItem(MediaListItem::media_type type, bool MediaWindow::QuitRequested() { + if (fRestartingServices == true) { + BString text(B_TRANSLATE("The media services are restarting," + " interructions to this process might result" + " in media functionalities not correctly running." + " Are you really sure to quit?")); + + BAlert* alert = new BAlert(B_TRANSLATE("Warning!"), text, + B_TRANSLATE("Do it"), B_TRANSLATE("No"), NULL, + B_WIDTH_AS_USUAL, B_OFFSET_SPACING, B_WARNING_ALERT); + int32 ret = alert->Go(); + if (ret == 1) + return false; + } + // stop watching the MediaRoster fCurrentNode.SetTo(NULL); be_app->PostMessage(B_QUIT_REQUESTED); @@ -298,6 +313,7 @@ MediaWindow::MessageReceived(BMessage* message) break; case ML_RESTART_MEDIA_SERVER: { + fRestartingServices = true; thread_id thread = spawn_thread(&MediaWindow::_RestartMediaServices, "restart_thread", B_NORMAL_PRIORITY, this); if (thread < 0) @@ -628,6 +644,7 @@ MediaWindow::_RestartMediaServices(void* data) launch_media_server(); + window->fRestartingServices = false; return window->PostMessage(ML_INIT_MEDIA); } diff --git a/src/preferences/media/MediaWindow.h b/src/preferences/media/MediaWindow.h index 002f2f4a55..d76fee6e77 100644 --- a/src/preferences/media/MediaWindow.h +++ b/src/preferences/media/MediaWindow.h @@ -112,6 +112,7 @@ private: NodeList fVideoOutputs; status_t fInitCheck; + bool fRestartingServices; }; From 5934b30b95a239eee4a088a9b9cb425eef13f22d Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Mon, 27 Jul 2015 20:20:03 +0200 Subject: [PATCH 035/126] media_server: Fix deadlock when killing from ProcessController --- src/servers/media/media_server.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/servers/media/media_server.cpp b/src/servers/media/media_server.cpp index 241c1148e5..6fd937f276 100644 --- a/src/servers/media/media_server.cpp +++ b/src/servers/media/media_server.cpp @@ -918,6 +918,13 @@ ServerApp::_ControlThread(void* _server) int32 code; while ((size = read_port_etc(server->_ControlPort(), &code, data, sizeof(data), 0, 0)) > 0) { + + // NOTE: This prevents locks in Deskbar and + // possibly in other situations. + if (size == B_WOULD_BLOCK) { + snooze(100); + continue; + } server->_HandleMessage(code, data, size); } From 71b756a0546837050d004088c19fcb9a70a5558b Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Mon, 27 Jul 2015 16:17:51 -0400 Subject: [PATCH 036/126] BNetworkAddress: Fix setting fStatus all over the place. Relevant quote from IRC: i would expect all overloads of SetTo to return status_t actually, i don't think what i would expect from class with such interface bugs probably --- src/kits/network/libnetapi/NetworkAddress.cpp | 54 +++++++++++++------ 1 file changed, 39 insertions(+), 15 deletions(-) diff --git a/src/kits/network/libnetapi/NetworkAddress.cpp b/src/kits/network/libnetapi/NetworkAddress.cpp index 307e173375..82737dee92 100644 --- a/src/kits/network/libnetapi/NetworkAddress.cpp +++ b/src/kits/network/libnetapi/NetworkAddress.cpp @@ -59,28 +59,28 @@ BNetworkAddress::BNetworkAddress() BNetworkAddress::BNetworkAddress(const char* host, uint16 port, uint32 flags) { - SetTo(host, port, flags); + fStatus = SetTo(host, port, flags); } BNetworkAddress::BNetworkAddress(const char* host, const char* service, uint32 flags) { - SetTo(host, service, flags); + fStatus = SetTo(host, service, flags); } BNetworkAddress::BNetworkAddress(int family, const char* host, uint16 port, uint32 flags) { - SetTo(family, host, port, flags); + fStatus = SetTo(family, host, port, flags); } BNetworkAddress::BNetworkAddress(int family, const char* host, const char* service, uint32 flags) { - SetTo(family, host, service, flags); + fStatus = SetTo(family, host, service, flags); } @@ -170,11 +170,16 @@ BNetworkAddress::SetTo(const char* host, uint16 port, uint32 flags) uint32 cookie = 0; status = resolver->GetNextAddress(AF_INET6, &cookie, *this); - if (status == B_OK) + if (status == B_OK) { + fStatus = B_OK; return B_OK; + } cookie = 0; - return resolver->GetNextAddress(&cookie, *this); + status = resolver->GetNextAddress(&cookie, *this); + if (status == B_OK) + fStatus = B_OK; + return status; } @@ -193,11 +198,16 @@ BNetworkAddress::SetTo(const char* host, const char* service, uint32 flags) uint32 cookie = 0; status = resolver->GetNextAddress(AF_INET6, &cookie, *this); - if (status == B_OK) + if (status == B_OK) { + fStatus = B_OK; return B_OK; + } cookie = 0; - return resolver->GetNextAddress(&cookie, *this); + status = resolver->GetNextAddress(&cookie, *this); + if (status == B_OK) + fStatus = B_OK; + return status; } @@ -208,6 +218,7 @@ BNetworkAddress::SetTo(int family, const char* host, uint16 port, uint32 flags) if (port != 0) return B_BAD_VALUE; return _ParseLinkAddress(host); + // SetToLinkAddress takes care of setting fStatus } BReference resolver @@ -219,7 +230,10 @@ BNetworkAddress::SetTo(int family, const char* host, uint16 port, uint32 flags) return status; uint32 cookie = 0; - return resolver->GetNextAddress(&cookie, *this); + status = resolver->GetNextAddress(&cookie, *this); + if (status == B_OK) + fStatus = B_OK; + return status; } @@ -231,6 +245,7 @@ BNetworkAddress::SetTo(int family, const char* host, const char* service, if (service != NULL) return B_BAD_VALUE; return _ParseLinkAddress(host); + // SetToLinkAddress takes care of setting fStatus } BReference resolver @@ -242,7 +257,10 @@ BNetworkAddress::SetTo(int family, const char* host, const char* service, return status; uint32 cookie = 0; - return resolver->GetNextAddress(&cookie, *this); + status = resolver->GetNextAddress(&cookie, *this); + if (status == B_OK) + fStatus = B_OK; + return status; } @@ -360,7 +378,7 @@ BNetworkAddress::SetToBroadcast(int family, uint16 port) return fStatus = B_NOT_SUPPORTED; SetTo(INADDR_BROADCAST, port); - return B_OK; + return fStatus; } @@ -390,7 +408,7 @@ BNetworkAddress::SetToLoopback(int family, uint16 port) return fStatus = B_NOT_SUPPORTED; } - return B_OK; + return fStatus; } @@ -439,7 +457,7 @@ BNetworkAddress::SetToMask(int family, uint32 prefixLength) } default: - return fStatus = B_NOT_SUPPORTED; + return B_NOT_SUPPORTED; } return fStatus = B_OK; @@ -459,10 +477,10 @@ BNetworkAddress::SetToWildcard(int family, uint16 port) break; default: - return fStatus = B_NOT_SUPPORTED; + return B_NOT_SUPPORTED; } - return B_OK; + return fStatus; } @@ -522,6 +540,8 @@ BNetworkAddress::SetToLinkLevel(uint8* address, size_t length) link.sdl_len = sizeof(sockaddr_dl); if (length > sizeof(link.sdl_data)) link.sdl_len += length - sizeof(link.sdl_data); + + fStatus = B_OK; } @@ -543,6 +563,8 @@ BNetworkAddress::SetToLinkLevel(const char* name) link.sdl_len = sizeof(sockaddr_dl); if (link.sdl_nlen > sizeof(link.sdl_data)) link.sdl_len += link.sdl_nlen - sizeof(link.sdl_data); + + fStatus = B_OK; } @@ -555,6 +577,8 @@ BNetworkAddress::SetToLinkLevel(uint32 index) link.sdl_family = AF_LINK; link.sdl_len = sizeof(sockaddr_dl); link.sdl_index = index; + + fStatus = B_OK; } From d682f9fc9c601f22e08c2c04cfbb505eed844247 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Tue, 28 Jul 2015 10:14:58 -0400 Subject: [PATCH 037/126] BNetworkAddress: Address review comments. Thanks Axel and Rene! --- src/kits/network/libnetapi/NetworkAddress.cpp | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/kits/network/libnetapi/NetworkAddress.cpp b/src/kits/network/libnetapi/NetworkAddress.cpp index 82737dee92..92986fb3d8 100644 --- a/src/kits/network/libnetapi/NetworkAddress.cpp +++ b/src/kits/network/libnetapi/NetworkAddress.cpp @@ -151,7 +151,7 @@ BNetworkAddress::Unset() { fAddress.ss_family = AF_UNSPEC; fAddress.ss_len = 2; - fStatus = B_OK; + fStatus = B_NO_INIT; } @@ -177,8 +177,10 @@ BNetworkAddress::SetTo(const char* host, uint16 port, uint32 flags) cookie = 0; status = resolver->GetNextAddress(&cookie, *this); - if (status == B_OK) - fStatus = B_OK; + if (status != B_OK) { + Unset(); + fStatus = status; + } return status; } @@ -205,8 +207,10 @@ BNetworkAddress::SetTo(const char* host, const char* service, uint32 flags) cookie = 0; status = resolver->GetNextAddress(&cookie, *this); - if (status == B_OK) - fStatus = B_OK; + if (status != B_OK) { + Unset(); + fStatus = status; + } return status; } @@ -231,8 +235,10 @@ BNetworkAddress::SetTo(int family, const char* host, uint16 port, uint32 flags) uint32 cookie = 0; status = resolver->GetNextAddress(&cookie, *this); - if (status == B_OK) - fStatus = B_OK; + if (status != B_OK) { + Unset(); + fStatus = status; + } return status; } @@ -258,8 +264,10 @@ BNetworkAddress::SetTo(int family, const char* host, const char* service, uint32 cookie = 0; status = resolver->GetNextAddress(&cookie, *this); - if (status == B_OK) - fStatus = B_OK; + if (status != B_OK) { + Unset(); + fStatus = status; + } return status; } From e4eecdb5c047873433d6b1b76458210285c84b3b Mon Sep 17 00:00:00 2001 From: Markus Himmel Date: Sun, 26 Jul 2015 11:21:30 +0000 Subject: [PATCH 038/126] Correctly show normal-sized preview after returning from a very wide one If the height had been reduced due to a very wide window being shown, it was not reset to its full value when switching back to a more narrow preview. Fix this by relayouting the window. Signed-off-by: Augustin Cavalier --- src/apps/screenshot/ScreenshotWindow.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/apps/screenshot/ScreenshotWindow.cpp b/src/apps/screenshot/ScreenshotWindow.cpp index e15a930a5b..c80552f22b 100644 --- a/src/apps/screenshot/ScreenshotWindow.cpp +++ b/src/apps/screenshot/ScreenshotWindow.cpp @@ -239,7 +239,6 @@ ScreenshotWindow::ScreenshotWindow(const Utility& utility, bool silent, saveScreenshot->MakeDefault(true); - Layout(false); _UpdatePreviewPanel(); _UpdateFilenameSelection(); @@ -440,6 +439,11 @@ ScreenshotWindow::_NewScreenshot(bool silent, bool clipboard) void ScreenshotWindow::_UpdatePreviewPanel() { + // Set the height of fPreview to what the layout suggests + fPreview->SetExplicitMinSize(BSize()); + fPreview->SetExplicitMaxSize(BSize()); + Layout(false); + float height = fPreview->Bounds().Height(); float width = (fScreenshot->Bounds().Width() / fScreenshot->Bounds().Height()) * height; From 2bcaf0d83b3ffea342f7c03a46c01344ce74039d Mon Sep 17 00:00:00 2001 From: Humdinger Date: Tue, 28 Jul 2015 17:51:53 +0200 Subject: [PATCH 039/126] Update/add fftw packages for Haiku gcc2hybrid. --- build/jam/repositories/HaikuPorts/x86_gcc2 | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index 47b061343b..1eba8e9673 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -107,6 +107,8 @@ RemotePackageRepository HaikuPorts findutils-4.4.2-1 ffmpeg-0.10.14-3 ffmpeg_devel-0.10.14-3 + fftw-3.3.4-6 + fftw_devel-3.3.4-6 flac-1.3.0-1 flac_devel-1.3.0-1 flex-2.5.39-1 @@ -559,8 +561,8 @@ RemotePackageRepository HaikuPorts fish_x86-1.23.1_git-1 ffmpeg_x86-0.11.5-2 ffmpeg_x86_devel-0.11.5-2 - fftw_x86-3.3.4-4 - fftw_x86_devel-3.3.4-4 + fftw_x86-3.3.4-6 + fftw_x86_devel-3.3.4-6 flac_x86-1.3.0-1 flac_x86_devel-1.3.0-1 flare_x86-0.19-3 @@ -934,6 +936,7 @@ RemotePackageRepository HaikuPorts findutils fish_x86 ffmpeg + fftw fftw_x86 flac flare_x86 From ef34aca426e42302d299294a5a569a66ff476028 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Tue, 28 Jul 2015 13:16:31 -0400 Subject: [PATCH 040/126] WebPositive: Fix "new tab opens search page". Fixes #12251. --- src/apps/webpositive/BrowserWindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps/webpositive/BrowserWindow.cpp b/src/apps/webpositive/BrowserWindow.cpp index 8a9c839a9b..23af03740a 100644 --- a/src/apps/webpositive/BrowserWindow.cpp +++ b/src/apps/webpositive/BrowserWindow.cpp @@ -2395,7 +2395,7 @@ BrowserWindow::_NewTabURL(bool isNewWindow) const url = fStartPageURL; break; case OpenSearchPage: - url = fSearchPageURL; + url.SetToFormat(fSearchPageURL, ""); break; case CloneCurrentPage: if (CurrentWebView() != NULL) From 9b7802354fa49caeff6dcc3b4eb630b5bde692e6 Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Tue, 28 Jul 2015 21:40:21 +0200 Subject: [PATCH 041/126] BChannelSlider: Fixed memory leak. At least, I think so. Check allocations in BChannelSlider::ThumbFor()- Also updated copyright and e-mail address. --- src/kits/interface/ChannelSlider.cpp | 34 ++++++++++++++++------------ 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/src/kits/interface/ChannelSlider.cpp b/src/kits/interface/ChannelSlider.cpp index 607ce55931..04d8ae54eb 100644 --- a/src/kits/interface/ChannelSlider.cpp +++ b/src/kits/interface/ChannelSlider.cpp @@ -1,9 +1,9 @@ /* - * Copyright 2005-2009, Haiku Inc. All Rights Reserved. + * Copyright 2005-2015, Haiku Inc. All Rights Reserved. * Distributed under the terms of the MIT License. * * Authors: - * Stefano Ceccherini (burton666@libero.it) + * Stefano Ceccherini (stefano.ceccherini@gmail.com) * Stephan Aßmus */ @@ -640,18 +640,22 @@ BChannelSlider::DrawThumb(BView* into, int32 channel, BPoint where, const BBitmap* BChannelSlider::ThumbFor(int32 channel, bool pressed) { - // TODO: Finish me (check allocations... etc) - if (fLeftKnob == NULL) { - if (fIsVertical) { - fLeftKnob = new (std::nothrow) BBitmap(BRect(0, 0, 11, 14), - B_CMAP8); - fLeftKnob->SetBits(kVerticalKnobData, sizeof(kVerticalKnobData), 0, - B_CMAP8); - } else { - fLeftKnob = new (std::nothrow) BBitmap(BRect(0, 0, 14, 11), - B_CMAP8); + if (fLeftKnob != NULL) + return fLeftKnob; + + if (fIsVertical) { + fLeftKnob = new (std::nothrow) BBitmap(BRect(0, 0, 11, 14), + B_CMAP8); + if (fLeftKnob != NULL) { + fLeftKnob->SetBits(kVerticalKnobData, + sizeof(kVerticalKnobData), 0, B_CMAP8); + } + } else { + fLeftKnob = new (std::nothrow) BBitmap(BRect(0, 0, 14, 11), + B_CMAP8); + if (fLeftKnob != NULL) { fLeftKnob->SetBits(kHorizontalKnobData, - sizeof(kHorizontalKnobData), 0, B_CMAP8); + sizeof(kHorizontalKnobData), 0, B_CMAP8); } } @@ -753,13 +757,15 @@ BChannelSlider::_FinishChange(bool update) if (!fAllChannels) { inMask = new (std::nothrow) bool[CountChannels()]; if (inMask) { - for (int i=0; i Date: Tue, 28 Jul 2015 22:08:31 +0200 Subject: [PATCH 042/126] Add unit tests specific for #12208. Pass depends on network. NetworkAddressTest passes (most) tests when you have network. When no network interface (ie -net none in QEMU) tests take forever and more tests fail. When network interface exists but is disabled in Haiku, tests are fast but more tests fail. --- src/tests/kits/net/libnetapi/Jamfile | 2 +- .../kits/net/libnetapi/NetworkAddressTest.cpp | 38 +++++++++++++++++++ .../kits/net/libnetapi/NetworkAddressTest.h | 2 + 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/src/tests/kits/net/libnetapi/Jamfile b/src/tests/kits/net/libnetapi/Jamfile index 1e7fca6b5f..b2e34ce9cb 100644 --- a/src/tests/kits/net/libnetapi/Jamfile +++ b/src/tests/kits/net/libnetapi/Jamfile @@ -6,5 +6,5 @@ UnitTestLib libnetapitest.so : NetworkAddressTest.cpp NetworkInterfaceTest.cpp - : bnetapi network [ TargetLibstdc++ ] [ TargetLibsupc++ ] + : be bnetapi network [ TargetLibstdc++ ] [ TargetLibsupc++ ] ; diff --git a/src/tests/kits/net/libnetapi/NetworkAddressTest.cpp b/src/tests/kits/net/libnetapi/NetworkAddressTest.cpp index 5c3713493b..12f976960d 100644 --- a/src/tests/kits/net/libnetapi/NetworkAddressTest.cpp +++ b/src/tests/kits/net/libnetapi/NetworkAddressTest.cpp @@ -6,6 +6,7 @@ #include "NetworkAddressTest.h" +#include #include #include @@ -83,6 +84,38 @@ NetworkAddressTest::TestWildcard() } +void +NetworkAddressTest::TestNullAddr() +{ + BNetworkAddress nullAddr(AF_INET, NULL, 555); + CPPUNIT_ASSERT(nullAddr.InitCheck() == B_OK); + + CPPUNIT_ASSERT(nullAddr.Family() == AF_INET); + CPPUNIT_ASSERT(nullAddr.Length() == sizeof(sockaddr_in)); + CPPUNIT_ASSERT(nullAddr.Port() == 555); + CPPUNIT_ASSERT(!nullAddr.IsEmpty()); +} + + +void +NetworkAddressTest::TestSetAddressFromFamilyPort() +{ + BString addressStr = "192.168.1.1"; + BNetworkAddress nullAddr(AF_INET, NULL, 555); + in_addr_t inetAddress = inet_addr(addressStr.String()); + CPPUNIT_ASSERT(nullAddr.SetAddress(inetAddress) == B_OK); + CPPUNIT_ASSERT(nullAddr.InitCheck() == B_OK); + + CPPUNIT_ASSERT(nullAddr.Family() == AF_INET); + CPPUNIT_ASSERT(nullAddr.Length() == sizeof(sockaddr_in)); + + sockaddr_in& sin = (sockaddr_in&)nullAddr.SockAddr(); + CPPUNIT_ASSERT(addressStr == inet_ntoa(sin.sin_addr)); + CPPUNIT_ASSERT(nullAddr.Port() == 555); + CPPUNIT_ASSERT(!nullAddr.IsEmpty()); +} + + void NetworkAddressTest::TestIsLocal() { @@ -131,6 +164,11 @@ NetworkAddressTest::AddTests(BTestSuite& parent) "NetworkAddressTest::TestSetTo", &NetworkAddressTest::TestSetTo)); suite.addTest(new CppUnit::TestCaller( "NetworkAddressTest::TestWildcard", &NetworkAddressTest::TestWildcard)); + suite.addTest(new CppUnit::TestCaller( + "NetworkAddressTest::TestNullAddr", &NetworkAddressTest::TestNullAddr)); + suite.addTest(new CppUnit::TestCaller( + "NetworkAddressTest::TestSetAddressFromFamilyPort", + &NetworkAddressTest::TestSetAddressFromFamilyPort)); suite.addTest(new CppUnit::TestCaller( "NetworkAddressTest::TestIsLocal", &NetworkAddressTest::TestIsLocal)); suite.addTest(new CppUnit::TestCaller( diff --git a/src/tests/kits/net/libnetapi/NetworkAddressTest.h b/src/tests/kits/net/libnetapi/NetworkAddressTest.h index c750d3201c..24c7a4bdfb 100644 --- a/src/tests/kits/net/libnetapi/NetworkAddressTest.h +++ b/src/tests/kits/net/libnetapi/NetworkAddressTest.h @@ -18,6 +18,8 @@ public: void TestUnset(); void TestSetTo(); void TestWildcard(); + void TestNullAddr(); + void TestSetAddressFromFamilyPort(); void TestIsLocal(); void TestFlatten(); From e716f4877826e8db64c57864a40e7b72ec559bd0 Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Wed, 29 Jul 2015 15:20:11 +0200 Subject: [PATCH 043/126] ChannelSlider: don't check be_control_look for NULL Also if0 the code that draws the old/dano look so it's more clear that it's not called intentionally. --- src/kits/interface/ChannelSlider.cpp | 54 ++++++++++++++-------------- 1 file changed, 26 insertions(+), 28 deletions(-) diff --git a/src/kits/interface/ChannelSlider.cpp b/src/kits/interface/ChannelSlider.cpp index 04d8ae54eb..46c3f1d2da 100644 --- a/src/kits/interface/ChannelSlider.cpp +++ b/src/kits/interface/ChannelSlider.cpp @@ -563,24 +563,24 @@ BChannelSlider::DrawGroove(BView* into, int32 channel, BPoint leftTop, ASSERT(into != NULL); BRect rect(leftTop, bottomRight); - if (be_control_look != NULL) { - rect.InsetBy(-2.5, -2.5); - rect.left = floorf(rect.left); - rect.top = floorf(rect.top); - rect.right = floorf(rect.right); - rect.bottom = floorf(rect.bottom); - rgb_color base = ui_color(B_PANEL_BACKGROUND_COLOR); - rgb_color barColor = be_control_look->SliderBarColor(base); - uint32 flags = 0; - be_control_look->DrawSliderBar(into, rect, rect, base, - barColor, flags, Orientation()); - return; - } + rect.InsetBy(-2.5, -2.5); + rect.left = floorf(rect.left); + rect.top = floorf(rect.top); + rect.right = floorf(rect.right); + rect.bottom = floorf(rect.bottom); + rgb_color base = ui_color(B_PANEL_BACKGROUND_COLOR); + rgb_color barColor = be_control_look->SliderBarColor(base); + uint32 flags = 0; + be_control_look->DrawSliderBar(into, rect, rect, base, + barColor, flags, Orientation()); +#if 0 + // Disabled original look _DrawGrooveFrame(fBackingView, rect.InsetByCopy(-2.5, -2.5)); rect.InsetBy(-0.5, -0.5); into->FillRect(rect, B_SOLID_HIGH); +#endif } @@ -598,22 +598,19 @@ BChannelSlider::DrawThumb(BView* into, int32 channel, BPoint where, where.x -= bitmapBounds.right / 2.0; where.y -= bitmapBounds.bottom / 2.0; + BRect rect(bitmapBounds.OffsetToCopy(where)); + rect.InsetBy(1, 1); + rect.left = floorf(rect.left); + rect.top = floorf(rect.top); + rect.right = ceilf(rect.right + 0.5); + rect.bottom = ceilf(rect.bottom + 0.5); + rgb_color base = ui_color(B_PANEL_BACKGROUND_COLOR); + uint32 flags = 0; + be_control_look->DrawSliderThumb(into, rect, rect, base, + flags, Orientation()); - if (be_control_look != NULL) { - BRect rect(bitmapBounds.OffsetToCopy(where)); - rect.InsetBy(1, 1); - rect.left = floorf(rect.left); - rect.top = floorf(rect.top); - rect.right = ceilf(rect.right + 0.5); - rect.bottom = ceilf(rect.bottom + 0.5); - rgb_color base = ui_color(B_PANEL_BACKGROUND_COLOR); - uint32 flags = 0; - be_control_look->DrawSliderThumb(into, rect, rect, base, - flags, Orientation()); - return; - } - - +#if 0 + // Disabled original look which takes into account the pressed state into->PushState(); into->SetDrawingMode(B_OP_OVER); @@ -634,6 +631,7 @@ BChannelSlider::DrawThumb(BView* into, int32 channel, BPoint where, } into->PopState(); +#endif } From 8acd164f8c6bd3a4d36e49648b7deb676b18e2e0 Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Wed, 29 Jul 2015 18:03:32 +0200 Subject: [PATCH 044/126] Add new version of launch_media_server * Due to the needs to provide a peaceful UX, i moved out the notifications mechanism from the Media preflet and i have integrated it with the launch and shutdown functions of MediaDefs.h. * This implied to introduce a new launch_media_server function similar to the shutdown_media_server allowing to specify a custom notification function too. * Both functions then are reworked to send by default notifications to the Deskbar, this was needed because in a lot of situations the mechanism failed without correctly noticing the user. * The one argument launch_media_server is considered to be deprecated, the default argument is removed to mantain binary compatibility but make new apps to automatically use the new one with just the default arguments. This is needed due to conflicts in overloading. * Improve notifications by indirectly extending localization to old BeOS apps. --- headers/os/media/MediaDefs.h | 14 +++- src/kits/media/Jamfile | 2 +- src/kits/media/MediaDefs.cpp | 150 ++++++++++++++++++++++++++++++++--- 3 files changed, 150 insertions(+), 16 deletions(-) diff --git a/headers/os/media/MediaDefs.h b/headers/os/media/MediaDefs.h index a7fa6d8db6..a92956ebf6 100644 --- a/headers/os/media/MediaDefs.h +++ b/headers/os/media/MediaDefs.h @@ -787,11 +787,21 @@ struct buffer_clone_info; // media_server and it's friends. You can provide a call back hook which // will be called during various steps of the process. This callback should // currently always return TRUE. A 'stage' value of 100 means the process is -// completely finished. +// completely finished. Differently from BeOS the functions automatically +// send notifications to the Deskbar if not differently specified. +// It's also provided a new version of launch_media_server allowing +// to specify a custom callback for notifications. + +// Deprecated +status_t launch_media_server(uint32 flags); + +status_t launch_media_server(bigtime_t timeout = B_INFINITE_TIMEOUT, + bool (*progress)(int stage, const char* message, void* cookie) = NULL, + void* cookie = NULL, uint32 flags = 0); + status_t shutdown_media_server(bigtime_t timeout = B_INFINITE_TIMEOUT, bool (*progress)(int stage, const char* message, void* cookie) = NULL, void* cookie = NULL); -status_t launch_media_server(uint32 flags = 0); // Given an image_id, prepare that image_id for realtime media diff --git a/src/kits/media/Jamfile b/src/kits/media/Jamfile index f8299dbbef..35cf1d556b 100644 --- a/src/kits/media/Jamfile +++ b/src/kits/media/Jamfile @@ -89,7 +89,7 @@ for architectureObject in [ MultiArchSubDirSetup ] { ReaderPlugin.cpp WriterPlugin.cpp : - be [ TargetLibsupc++ ] [ TargetLibstdc++ ] + be localestub [ TargetLibsupc++ ] [ TargetLibstdc++ ] ; } } diff --git a/src/kits/media/MediaDefs.cpp b/src/kits/media/MediaDefs.cpp index 4298a2a114..cd6e95a698 100644 --- a/src/kits/media/MediaDefs.cpp +++ b/src/kits/media/MediaDefs.cpp @@ -1,4 +1,5 @@ /* + * Copyright 2015, Dario Casalinuovo * Copyright 2004, 2006, Jérôme Duval. * Copyright 2003-2004, Andrew Bachmann. * Copyright 2002-2004, 2006 Marcus Overhagen. @@ -7,25 +8,35 @@ */ +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + #include #include #include -#include -#include -#include -#include - -#include "debug.h" - #include "AddOnManager.h" #include "DataExchange.h" +#include "debug.h" #include "MediaMisc.h" #define META_DATA_MAX_SIZE (16 << 20) #define META_DATA_AREA_MIN_SIZE 32000 +#undef B_TRANSLATION_CONTEXT +#define B_TRANSLATION_CONTEXT "MediaDefs" + // #pragma mark - media_destination @@ -1219,6 +1230,67 @@ const type_code B_CODEC_TYPE_INFO = 0x040807b2; // shutdown_media_server() and launch_media_server() // are provided by libbe.so in BeOS R5 +#define MEDIA_SERVICE_NOTIFICATION_ID "MediaServiceNotificationID" + + +void +notify_system(float progress, const char* message) +{ + BNotification notification(B_PROGRESS_NOTIFICATION); + notification.SetMessageID(MEDIA_SERVICE_NOTIFICATION_ID); + notification.SetProgress(progress); + notification.SetGroup(B_TRANSLATE("Media Service")); + notification.SetContent(message); + + app_info info; + be_app->GetAppInfo(&info); + BBitmap icon(BRect(0, 0, 32, 32), B_RGBA32); + BNode node(&info.ref); + BIconUtils::GetVectorIcon(&node, "BEOS:ICON", &icon); + notification.SetIcon(&icon); + + notification.Send(); +} + + +void +progress_shutdown(int stage, + bool (*progress)(int stage, const char* message, void* cookie), + void* cookie) +{ + // parameter "message" is no longer used. It is kept for compatibility with + // BeOS as this is used as a shutdown_media_server callback. + + PRINT(("stage : %i\n", stage)); + const char* string = "Unknown stage"; + switch (stage) { + case 10: + string = B_TRANSLATE("Stopping media server" B_UTF8_ELLIPSIS); + break; + case 20: + string = B_TRANSLATE("Telling media_addon_server to quit."); + break; + case 40: + string = B_TRANSLATE("Waiting for media_server to quit."); + break; + case 50: + string = B_TRANSLATE("Waiting for media_server to quit."); + break; + case 70: + string = B_TRANSLATE("Cleaning up."); + break; + case 100: + string = B_TRANSLATE("Done shutting down."); + break; + } + + if (progress == NULL) + notify_system(stage, string); + else + progress(stage, string, cookie); +} + + status_t shutdown_media_server(bigtime_t timeout, bool (*progress)(int stage, const char* message, void* cookie), @@ -1233,7 +1305,7 @@ shutdown_media_server(bigtime_t timeout, if (be_roster->IsRunning(B_MEDIA_SERVER_SIGNATURE)) { BMessenger messenger(B_MEDIA_SERVER_SIGNATURE); - progress(10, "Telling media_server to quit.", cookie); + progress_shutdown(10, progress, cookie); err = messenger.SendMessage(&msg, &reply, 2000000, 2000000); if (err != B_OK) @@ -1246,7 +1318,7 @@ shutdown_media_server(bigtime_t timeout, if (be_roster->IsRunning(B_MEDIA_ADDON_SERVER_SIGNATURE)) { BMessenger messenger(B_MEDIA_ADDON_SERVER_SIGNATURE); - progress(20, "Telling media_addon_server to quit.", cookie); + progress_shutdown(20, progress, cookie); err = messenger.SendMessage(&msg, &reply, 2000000, 2000000); if (err != B_OK) @@ -1258,16 +1330,16 @@ shutdown_media_server(bigtime_t timeout, } if (be_roster->IsRunning(B_MEDIA_SERVER_SIGNATURE)) { - progress(40, "Waiting for media_server to quit.", cookie); + progress_shutdown(40, progress, cookie); snooze(200000); } if (be_roster->IsRunning(B_MEDIA_ADDON_SERVER_SIGNATURE)) { - progress(50, "Waiting for media_addon_server to quit.", cookie); + progress_shutdown(50, progress, cookie); snooze(200000); } - progress(70, "Cleaning Up.", cookie); + progress_shutdown(70, progress, cookie); snooze(1000000); if (be_roster->IsRunning(B_MEDIA_SERVER_SIGNATURE)) { @@ -1278,31 +1350,79 @@ shutdown_media_server(bigtime_t timeout, kill_team(be_roster->TeamFor(B_MEDIA_ADDON_SERVER_SIGNATURE)); } - progress(100, "Done Shutting Down.", cookie); + progress_shutdown(100, progress, cookie); snooze(1000000); return B_OK; } +void +progress_startup(int stage, + bool (*progress)(int stage, const char* message, void* cookie), + void* cookie) +{ + // parameter "message" is no longer used. It is kept for compatibility with + // BeOS as this is used as a shutdown_media_server callback. + + PRINT(("stage : %i\n", stage)); + const char* string = "Unknown stage"; + switch (stage) { + case 10: + string = B_TRANSLATE("Stopping media server" B_UTF8_ELLIPSIS); + break; + case 20: + string = B_TRANSLATE("Telling media_addon_server to quit."); + break; + case 50: + string = B_TRANSLATE("Starting media_services."); + break; + case 90: + string = B_TRANSLATE("Error occurred starting media services."); + break; + case 100: + string = B_TRANSLATE("Ready for use."); + break; + } + + if (progress == NULL) + notify_system(stage, string); + else + progress(stage, string, cookie); +} + + status_t launch_media_server(uint32 flags) +{ + return launch_media_server(0, NULL, NULL, flags); +} + + +status_t +launch_media_server(bigtime_t timeout, + bool (*progress)(int stage, const char* message, void* cookie), + void* cookie, uint32 flags) { if (BMediaRoster::IsRunning()) return B_ALREADY_RUNNING; // The media_server crashed if (be_roster->IsRunning(B_MEDIA_ADDON_SERVER_SIGNATURE)) { + progress_startup(10, progress, cookie); kill_team(be_roster->TeamFor(B_MEDIA_ADDON_SERVER_SIGNATURE)); snooze(1000000); } // The media_addon_server crashed if (be_roster->IsRunning(B_MEDIA_SERVER_SIGNATURE)) { + progress_startup(20, progress, cookie); kill_team(be_roster->TeamFor(B_MEDIA_SERVER_SIGNATURE)); snooze(1000000); } + progress_startup(50, progress, cookie); + status_t err = be_roster->Launch(B_MEDIA_SERVER_SIGNATURE); if (err != B_OK) return err; @@ -1318,10 +1438,14 @@ launch_media_server(uint32 flags) if (messenger.IsValid()) { messenger.SendMessage(&msg, &reply, 2000000, 2000000); err = B_OK; + progress_startup(100, progress, cookie); break; } } + if (err != B_OK) + progress_startup(90, progress, cookie); + return err; } From 7482390ab4dc1e77ccb42b4f2c290b5bfe814f7f Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Wed, 29 Jul 2015 16:59:19 +0200 Subject: [PATCH 045/126] Media: Improve both notifications and quit mechanism * Media is now waiting for media_server to start if the window is closed before to finish, this was proposed by stippi. * Moved out anything related to notifications as they are now managed by the media_kit. * Solved some TODOs and minor issues too. --- src/preferences/media/Media.cpp | 2 +- src/preferences/media/Media.h | 3 - src/preferences/media/MediaViews.cpp | 3 +- src/preferences/media/MediaWindow.cpp | 144 +++++++++----------------- src/preferences/media/MediaWindow.h | 6 +- 5 files changed, 52 insertions(+), 106 deletions(-) diff --git a/src/preferences/media/Media.cpp b/src/preferences/media/Media.cpp index c9f9cb1c73..74fbd73e3a 100644 --- a/src/preferences/media/Media.cpp +++ b/src/preferences/media/Media.cpp @@ -20,7 +20,7 @@ Media::Media() : - BApplication(kApplicationSignature), + BApplication("application/x-vnd.Haiku-Media"), fIcons(), fWindow(NULL) { diff --git a/src/preferences/media/Media.h b/src/preferences/media/Media.h index b62d538870..b8fb227bbb 100644 --- a/src/preferences/media/Media.h +++ b/src/preferences/media/Media.h @@ -17,9 +17,6 @@ #include -static const char* kApplicationSignature = "application/x-vnd.Haiku-Media"; - - class Media : public BApplication { public: Media(); diff --git a/src/preferences/media/MediaViews.cpp b/src/preferences/media/MediaViews.cpp index 17096844b4..87e869679e 100644 --- a/src/preferences/media/MediaViews.cpp +++ b/src/preferences/media/MediaViews.cpp @@ -62,7 +62,8 @@ SettingsView::MakeRestartButton() { return new BButton("restartButton", B_TRANSLATE("Restart media services"), - new BMessage(ML_RESTART_MEDIA_SERVER)); + new BMessage(ML_RESTART_MEDIA_SERVER), + B_ALIGN_RIGHT); } diff --git a/src/preferences/media/MediaWindow.cpp b/src/preferences/media/MediaWindow.cpp index 77864d6e0f..73006eb6c9 100644 --- a/src/preferences/media/MediaWindow.cpp +++ b/src/preferences/media/MediaWindow.cpp @@ -15,7 +15,6 @@ #include #include #include -#include #include #include #include @@ -26,7 +25,6 @@ #include #include #include -#include #include #include #include @@ -46,7 +44,7 @@ const uint32 ML_SELECTED_NODE = 'MlSN'; -const uint32 ML_INIT_MEDIA = 'MlIM'; +const uint32 ML_RESTART_THREAD_FINISHED = 'MlRF'; class NodeListItemUpdater : public MediaListItem::Visitor { @@ -101,13 +99,23 @@ MediaWindow::SmartNode::SetTo(const dormant_node_info* info) fNode = new media_node(); BMediaRoster* roster = BMediaRoster::Roster(); - // TODO: error codes + status_t status = B_OK; media_node_id node_id; if (roster->GetInstancesFor(info->addon, info->flavor_id, &node_id) == B_OK) - roster->GetNodeFor(node_id, fNode); + status = roster->GetNodeFor(node_id, fNode); else - roster->InstantiateDormantNode(*info, fNode, B_FLAVOR_IS_GLOBAL); - roster->StartWatching(fMessenger, *fNode, B_MEDIA_WILDCARD); + status = roster->InstantiateDormantNode(*info, fNode, B_FLAVOR_IS_GLOBAL); + + if (status != B_OK) { + fprintf(stderr, "SmartNode::SetTo error with node %" B_PRId32 + ": %s\n", fNode->node, strerror(status)); + } + + status = roster->StartWatching(fMessenger, *fNode, B_MEDIA_WILDCARD); + if (status != B_OK) { + fprintf(stderr, "SmartNode::SetTo can't start watching for" + " node %" B_PRId32 "\n", fNode->node); + } } @@ -142,10 +150,22 @@ MediaWindow::SmartNode::_FreeNode() { if (!IsSet()) return; - // TODO: check error codes + BMediaRoster* roster = BMediaRoster::Roster(); - roster->StopWatching(fMessenger, *fNode, B_MEDIA_WILDCARD); - roster->ReleaseNode(*fNode); + if (roster != NULL) { + status_t status = roster->StopWatching(fMessenger, + *fNode, B_MEDIA_WILDCARD); + if (status != B_OK) { + fprintf(stderr, "SmartNode::_FreeNode can't unwatch" + " media services for node %" B_PRId32 "\n", fNode->node); + } + + roster->ReleaseNode(*fNode); + if (status != B_OK) { + fprintf(stderr, "SmartNode::_FreeNode can't release" + " node %" B_PRId32 "\n", fNode->node); + } + } delete fNode; fNode = NULL; } @@ -165,7 +185,7 @@ MediaWindow::MediaWindow(BRect frame) fVideoInputs(5, true), fVideoOutputs(5, true), fInitCheck(B_OK), - fRestartingServices(false) + fRestartThread(-1) { _InitWindow(); @@ -283,21 +303,15 @@ MediaWindow::UpdateOutputListItem(MediaListItem::media_type type, bool MediaWindow::QuitRequested() { - if (fRestartingServices == true) { - BString text(B_TRANSLATE("The media services are restarting," - " interructions to this process might result" - " in media functionalities not correctly running." - " Are you really sure to quit?")); - - BAlert* alert = new BAlert(B_TRANSLATE("Warning!"), text, - B_TRANSLATE("Do it"), B_TRANSLATE("No"), NULL, - B_WIDTH_AS_USUAL, B_OFFSET_SPACING, B_WARNING_ALERT); - int32 ret = alert->Go(); - if (ret == 1) - return false; + status_t exit = B_OK; + if (fRestartThread > 0) { + wait_for_thread(fRestartThread, &exit); + if (exit != B_OK) { + fprintf(stderr, "MediaWindow::QuitRequested wait_for_thread" + " returned with an error: %s\n", strerror(exit)); + } } - - // stop watching the MediaRoster + // Stop watching the MediaRoster fCurrentNode.SetTo(NULL); be_app->PostMessage(B_QUIT_REQUESTED); return true; @@ -308,18 +322,18 @@ void MediaWindow::MessageReceived(BMessage* message) { switch (message->what) { - case ML_INIT_MEDIA: - _InitMedia(false); + case ML_RESTART_THREAD_FINISHED: + fRestartThread = -1; break; + case ML_RESTART_MEDIA_SERVER: { - fRestartingServices = true; - thread_id thread = spawn_thread(&MediaWindow::_RestartMediaServices, + fRestartThread = spawn_thread(&MediaWindow::_RestartMediaServices, "restart_thread", B_NORMAL_PRIORITY, this); - if (thread < 0) + if (fRestartThread < 0) fprintf(stderr, "couldn't create restart thread\n"); else - resume_thread(thread); + resume_thread(fRestartThread); break; } case B_MEDIA_WEB_CHANGED: @@ -340,9 +354,7 @@ MediaWindow::MessageReceived(BMessage* message) case B_MEDIA_SERVER_STARTED: { PRINT_OBJECT(*message); - - _Notify(0.75, B_TRANSLATE("Starting media server" - B_UTF8_ELLIPSIS)); + _InitMedia(false); break; } default: @@ -421,8 +433,6 @@ MediaWindow::_InitMedia(bool first) if (alert->Go() == 0) return B_ERROR; - _Notify(0, B_TRANSLATE("Starting media server" B_UTF8_ELLIPSIS)); - Show(); launch_media_server(); @@ -435,9 +445,6 @@ MediaWindow::_InitMedia(bool first) && fListView->ItemAt(0)->IsSelected()) isVideoSelected = false; - if (!first || (first && err) ) - _Notify(1, B_TRANSLATE("Ready for use" B_UTF8_ELLIPSIS)); - while (fListView->CountItems() > 0) delete fListView->RemoveItem((int32)0); _EmptyNodeLists(); @@ -639,65 +646,10 @@ MediaWindow::_RestartMediaServices(void* data) { MediaWindow* window = (MediaWindow*)data; - shutdown_media_server(B_INFINITE_TIMEOUT, MediaWindow::_UpdateProgress, - data); - + shutdown_media_server(); launch_media_server(); - window->fRestartingServices = false; - return window->PostMessage(ML_INIT_MEDIA); -} - - -bool -MediaWindow::_UpdateProgress(int stage, const char* message, void* cookie) -{ - // parameter "message" is no longer used. It is kept for compatibility with - // BeOS as this is used as a shutdown_media_server callback. - - PRINT(("stage : %i\n", stage)); - const char* string = "Unknown stage"; - switch (stage) { - case 10: - string = B_TRANSLATE("Stopping media server" B_UTF8_ELLIPSIS); - break; - case 20: - string = B_TRANSLATE("Telling media_addon_server to quit."); - break; - case 40: - string = B_TRANSLATE("Waiting for media_server to quit."); - break; - case 70: - string = B_TRANSLATE("Cleaning up."); - break; - case 100: - string = B_TRANSLATE("Done shutting down."); - break; - } - - ((MediaWindow*)cookie)->_Notify(stage / 150.0, string); - - return true; -} - - -void -MediaWindow::_Notify(float progress, const char* message) -{ - BNotification notification(B_PROGRESS_NOTIFICATION); - notification.SetMessageID(MEDIA_SERVICE_NOTIFICATION_ID); - notification.SetProgress(progress); - notification.SetGroup(B_TRANSLATE("Media Service")); - notification.SetContent(message); - - app_info info; - be_roster->GetAppInfo(kApplicationSignature, &info); - BBitmap icon(BRect(0, 0, 32, 32), B_RGBA32); - BNode node(&info.ref); - BIconUtils::GetVectorIcon(&node, "BEOS:ICON", &icon); - notification.SetIcon(&icon); - - notification.Send(); + return window->PostMessage(ML_RESTART_THREAD_FINISHED); } diff --git a/src/preferences/media/MediaWindow.h b/src/preferences/media/MediaWindow.h index d76fee6e77..5d75867de9 100644 --- a/src/preferences/media/MediaWindow.h +++ b/src/preferences/media/MediaWindow.h @@ -22,7 +22,6 @@ #include "MediaListItem.h" #include "MediaViews.h" -#define MEDIA_SERVICE_NOTIFICATION_ID "MediaServiceNotificationID" #define SETTINGS_FILE "MediaPrefs Settings" @@ -72,9 +71,6 @@ private: NodeListItem* _FindNodeListItem(dormant_node_info* info); static status_t _RestartMediaServices(void* data); - static bool _UpdateProgress(int stage, const char* message, - void* cookie); - void _Notify(float progress, const char* message); void _ClearParamView(); void _MakeParamView(); @@ -112,7 +108,7 @@ private: NodeList fVideoOutputs; status_t fInitCheck; - bool fRestartingServices; + thread_id fRestartThread; }; From 1690d2f4ddac03b233361044b07d408fa0abdf8d Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Wed, 29 Jul 2015 14:22:22 -0400 Subject: [PATCH 046/126] BNetworkAddress: Fix review comments (again). Axel changed his mind about the status on Unset(), and I messed up the fStatus setters. --- src/kits/network/libnetapi/NetworkAddress.cpp | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/src/kits/network/libnetapi/NetworkAddress.cpp b/src/kits/network/libnetapi/NetworkAddress.cpp index 92986fb3d8..0556bb4268 100644 --- a/src/kits/network/libnetapi/NetworkAddress.cpp +++ b/src/kits/network/libnetapi/NetworkAddress.cpp @@ -151,7 +151,7 @@ BNetworkAddress::Unset() { fAddress.ss_family = AF_UNSPEC; fAddress.ss_len = 2; - fStatus = B_NO_INIT; + fStatus = B_OK; } @@ -177,10 +177,9 @@ BNetworkAddress::SetTo(const char* host, uint16 port, uint32 flags) cookie = 0; status = resolver->GetNextAddress(&cookie, *this); - if (status != B_OK) { + fStatus = status; + if (status != B_OK) Unset(); - fStatus = status; - } return status; } @@ -207,10 +206,9 @@ BNetworkAddress::SetTo(const char* host, const char* service, uint32 flags) cookie = 0; status = resolver->GetNextAddress(&cookie, *this); - if (status != B_OK) { + fStatus = status; + if (status != B_OK) Unset(); - fStatus = status; - } return status; } @@ -235,10 +233,9 @@ BNetworkAddress::SetTo(int family, const char* host, uint16 port, uint32 flags) uint32 cookie = 0; status = resolver->GetNextAddress(&cookie, *this); - if (status != B_OK) { + fStatus = status; + if (status != B_OK) Unset(); - fStatus = status; - } return status; } @@ -264,10 +261,9 @@ BNetworkAddress::SetTo(int family, const char* host, const char* service, uint32 cookie = 0; status = resolver->GetNextAddress(&cookie, *this); - if (status != B_OK) { + fStatus = status; + if (status != B_OK) Unset(); - fStatus = status; - } return status; } From 1c62023701e174b5903110195259f01afdae8ca5 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Wed, 29 Jul 2015 15:00:53 -0400 Subject: [PATCH 047/126] NetworkAddress: Fix things yet again. If I had used my head instead of blindly c&p'ing the suggested code from Axel's message, I would have realized that Unset() unsets fStatus too. Not a bright thing to do on my part... --- src/kits/network/libnetapi/NetworkAddress.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/kits/network/libnetapi/NetworkAddress.cpp b/src/kits/network/libnetapi/NetworkAddress.cpp index 0556bb4268..57de4bc774 100644 --- a/src/kits/network/libnetapi/NetworkAddress.cpp +++ b/src/kits/network/libnetapi/NetworkAddress.cpp @@ -177,9 +177,9 @@ BNetworkAddress::SetTo(const char* host, uint16 port, uint32 flags) cookie = 0; status = resolver->GetNextAddress(&cookie, *this); - fStatus = status; if (status != B_OK) Unset(); + fStatus = status; return status; } @@ -206,9 +206,9 @@ BNetworkAddress::SetTo(const char* host, const char* service, uint32 flags) cookie = 0; status = resolver->GetNextAddress(&cookie, *this); - fStatus = status; if (status != B_OK) Unset(); + fStatus = status; return status; } @@ -233,9 +233,9 @@ BNetworkAddress::SetTo(int family, const char* host, uint16 port, uint32 flags) uint32 cookie = 0; status = resolver->GetNextAddress(&cookie, *this); - fStatus = status; if (status != B_OK) Unset(); + fStatus = status; return status; } @@ -261,9 +261,9 @@ BNetworkAddress::SetTo(int family, const char* host, const char* service, uint32 cookie = 0; status = resolver->GetNextAddress(&cookie, *this); - fStatus = status; if (status != B_OK) Unset(); + fStatus = status; return status; } From b3e2208e523df86a23d3e17252ee2acb8cdd122b Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Tue, 28 Jul 2015 16:18:58 -0400 Subject: [PATCH 048/126] ffmpeg plugin: Remove [L]GPL, FFmpeg is not in the tree anymore. --- src/add-ons/media/plugins/ffmpeg/COPYING.GPL | 339 ------------ src/add-ons/media/plugins/ffmpeg/COPYING.LGPL | 504 ------------------ src/add-ons/media/plugins/ffmpeg/README.md | 17 - 3 files changed, 860 deletions(-) delete mode 100644 src/add-ons/media/plugins/ffmpeg/COPYING.GPL delete mode 100644 src/add-ons/media/plugins/ffmpeg/COPYING.LGPL delete mode 100644 src/add-ons/media/plugins/ffmpeg/README.md diff --git a/src/add-ons/media/plugins/ffmpeg/COPYING.GPL b/src/add-ons/media/plugins/ffmpeg/COPYING.GPL deleted file mode 100644 index d159169d10..0000000000 --- a/src/add-ons/media/plugins/ffmpeg/COPYING.GPL +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/src/add-ons/media/plugins/ffmpeg/COPYING.LGPL b/src/add-ons/media/plugins/ffmpeg/COPYING.LGPL deleted file mode 100644 index 00b4fedfe7..0000000000 --- a/src/add-ons/media/plugins/ffmpeg/COPYING.LGPL +++ /dev/null @@ -1,504 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - diff --git a/src/add-ons/media/plugins/ffmpeg/README.md b/src/add-ons/media/plugins/ffmpeg/README.md deleted file mode 100644 index 1b6de76210..0000000000 --- a/src/add-ons/media/plugins/ffmpeg/README.md +++ /dev/null @@ -1,17 +0,0 @@ -This file collects knowledge about the FFMPEG-library used by the FFMPEG plugin. - -As it turns out documentation on how to use the FFMPEG-libraries (libavcodec, libavformat, ...) to decode audio and video data is rather thinly spread. - -There are three main resources that can be recommended for understanding how to use the FFMPEG-libraries: - -1. Example source code provided by the FFMPEG project. - - It is part of the FFMPEG source code and is located in /path/to/ffmpeg/source/doc/examples - - Studying the example "decoding_encoding.c" is especially interesting, as it provides examples on how to decode and encode audio / video files with FFMPEG. - -2. An ffmpeg and SDL Tutorial: http://dranger.com/ffmpeg/tutorial01.html - - This tutorial contains several parts, whereby parts 5 to 8 are the most relevant parts, as they provide a lot of advanced knowledge about the usage and inner workings of FFMPEGs APIs. - -3. The source code of the Chromium project: http://src.chromium.org/viewvc/chrome/trunk/src/ - - Chromium is the basis for Google's Chrome web browser and uses FFMPEG libraries to implement HTML-5 audio and video playback. Chromium's source code is well documented and in wide use. This gives a good real life reference on how to use the FFMPEG-API's and some of its gotchas. - - For video decoding a good starting point is the file media/filters/ffmpeg_video_decoder.cc and within it the method FFmpegVideoDecoder::FFmpegDecode(). - - For audio decoding a good starting point is the file media/filters/ffmpeg_audio_decoder.cc and within it the method FFmpegAudioDecoder::FFmpegDecode(). \ No newline at end of file From f9ab315e0243a142c9728e357dd82f048e7a4f0c Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Wed, 29 Jul 2015 15:06:04 -0400 Subject: [PATCH 049/126] DHCPClient: Check return code of SetAddress(). This should break DHCP for everyone it currently works for (according to our analysis). If it doesn't, we have yet another (set of) bug(s). --- src/servers/net/DHCPClient.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/servers/net/DHCPClient.cpp b/src/servers/net/DHCPClient.cpp index b3d4c1ab5c..35c5887a68 100644 --- a/src/servers/net/DHCPClient.cpp +++ b/src/servers/net/DHCPClient.cpp @@ -763,10 +763,17 @@ DHCPClient::_ParseOptions(dhcp_message& message, BMessage& address, break; } case OPTION_SERVER_ADDRESS: + { syslog(LOG_DEBUG, " server: %s\n", _AddressToString(data).String()); - fServer.SetAddress(*(in_addr_t*)data); + status_t status = fServer.SetAddress(*(in_addr_t*)data); + if (status != B_OK) { + syslog(LOG_ERR, " BNetworkAddress::SetAddress failed with %s!\n", + strerror(status)); + fServer.Unset(); + } break; + } case OPTION_ADDRESS_LEASE_TIME: syslog(LOG_DEBUG, " lease time: %lu seconds\n", From 2df71589172c3e758c8e0d8ef12d30583d110b18 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Wed, 29 Jul 2015 22:52:25 +0200 Subject: [PATCH 050/126] DHCPClient: don't use AI_ADDRCONFIG * The DHCP Client is the one configuring interfaces, so it makes no sense to request address resolution for already configured interfaces only. * Fixes #12208 --- src/servers/net/DHCPClient.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/servers/net/DHCPClient.cpp b/src/servers/net/DHCPClient.cpp index 35c5887a68..d5ffd0e04e 100644 --- a/src/servers/net/DHCPClient.cpp +++ b/src/servers/net/DHCPClient.cpp @@ -427,7 +427,7 @@ DHCPClient::DHCPClient(BMessenger target, const char* device) fResolverConfiguration(kMsgConfigureResolver), fRunner(NULL), fAssignedAddress(0), - fServer(AF_INET, NULL, DHCP_SERVER_PORT), + fServer(AF_INET, NULL, DHCP_SERVER_PORT, B_UNCONFIGURED_ADDRESS_FAMILIES), fLeaseTime(0) { fTransactionID = (uint32)system_time() ^ rand(); From f93dab03ec04d3129982bec6c0983ef72f5318d5 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Wed, 29 Jul 2015 22:53:31 +0200 Subject: [PATCH 051/126] getifaddrs: don't fail if there are no interfaces. * This is not an error, just return an empty list. * Same behavior as *BSD implementation. --- src/kits/network/getifaddrs.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/kits/network/getifaddrs.cpp b/src/kits/network/getifaddrs.cpp index 1b8d2e5d11..585a347da0 100644 --- a/src/kits/network/getifaddrs.cpp +++ b/src/kits/network/getifaddrs.cpp @@ -78,8 +78,9 @@ getifaddrs(struct ifaddrs** _ifaddrs) size_t count = (size_t)config.ifc_value; if (count == 0) { - errno = B_BAD_VALUE; - return -1; + // No interfaces found + *_ifaddrs = NULL; + return 0; } // Allocate a buffer for ifreqs for all interfaces From 5f01992f3a0e84d24c1a0f5d1dd81bd5b7b2c8d5 Mon Sep 17 00:00:00 2001 From: Automatic Committer Date: Thu, 30 Jul 2015 05:20:27 +0200 Subject: [PATCH 052/126] Update pci.ids from pciids.sourceforge.net --- src/data/ids/pci.ids | 46 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/src/data/ids/pci.ids b/src/data/ids/pci.ids index 15d8bc11cf..0ee2fc8739 100644 --- a/src/data/ids/pci.ids +++ b/src/data/ids/pci.ids @@ -1,8 +1,8 @@ # # List of PCI ID's # -# Version: 2015.07.10 -# Date: 2015-07-10 03:15:02 +# Version: 2015.07.22 +# Date: 2015-07-22 03:15:01 # # Maintained by Martin Mares and other volunteers from the # PCI ID Project at http://pci-ids.ucw.cz/. @@ -645,6 +645,7 @@ 18bc 0101 GC-R9600PRO (Primary) 4151 RV350 [Radeon 9600 Series] 1043 c004 A9600SE + 174b 7c37 Radeon 9600 SE 4152 RV360 [Radeon 9600/X1050 Series] 1002 0002 Radeon 9600XT 1002 4772 All-in-Wonder 9600 XT @@ -674,6 +675,7 @@ 18bc 0100 GC-R9600PRO (Secondary) 4171 RV350 [Radeon 9600] (Secondary) 1043 c005 A9600SE (Secondary) + 174b 7c36 Radeon 9600 SE (secondary) 4172 RV350 [Radeon 9600/X1050 Series] (Secondary) 1002 0003 Radeon 9600XT (Secondary) 1002 4773 All-in-Wonder 9600 XT (Secondary) @@ -1171,6 +1173,7 @@ 1458 4002 RV100 QY [RADEON 7000 PRO MAYA AV Series] 148c 2003 RV100 QY [Radeon 7000 Multi-Display Edition] 148c 2023 RV100 QY [Radeon 7000 Evil Master Multi-Display] + 148c 2081 RV6DE 174b 0280 Radeon RV100 QY [Radeon 7000/VE] 174b 7112 Radeon VE 7000 174b 7c28 Radeon VE 7000 DDR @@ -7202,6 +7205,8 @@ 1517 000f ECDR-GC314-PMC Receiver 1885 0700 Tsunami FPGA PMC with Altera Stratix S40 1885 0701 Tsunami FPGA PMC with Altera Stratix S30 + 9733 PEX 9733 33-lane, 9-port PCI Express Gen 3 (8.0 GT/s) Switch + 9749 PEX 9749 49-lane, 13-port PCI Express Gen 3 (8.0 GT/s) Switch a100 Blackmagic Design DeckLink bb04 B&B 3PCIOSD1A Isolated PCI Serial c001 CronyxOmega-PCI (8-port RS232) @@ -7592,8 +7597,8 @@ 10cd Advanced System Products, Inc 1100 ASC1100 1200 ASC1200 [(abp940) Fast SCSI-II] - 1300 ABP940-U / ABP960-U - 10cd 1310 ASC1300 SCSI Adapter + 1300 ASC1300 / ASC3030 [ABP940-U / ABP960-U / ABP3925] + 10cd 1310 ASC1300/3030 SCSI adapter 1195 1320 Ultra-SCSI CardBus PC Card REX CB31 2300 ABP940-UW 2500 ABP940-U2W @@ -8839,12 +8844,13 @@ 1afa 7150 JW-IN7150-HD 056d MCP73 PCI Express bridge 1019 297a MCP73PVT-SM - 10de cb73 MCP73 PCIe x1 port + 10de cb73 MCP73 PCI Bridge 056e MCP73 PCI Express bridge 1019 297a MCP73PVT-SM 10de 0000 MCP73 PCIe x16 port 056f MCP73 PCI Express bridge 1019 297a MCP73PVT-SM + 10de 0000 MCP73 PCIe x1 port 05b1 NF200 PCIe 2.0 switch 05b8 NF200 PCIe 2.0 switch for GTX 295 05be NF200 PCIe 2.0 switch for Quadro Plex S4 / Tesla S870 / Tesla S1070 / Tesla S2050 @@ -8944,6 +8950,7 @@ 0642 G96 [D9M-10] 0643 G96 [GeForce 9500 GT] 0644 G96 [GeForce 9500 GS] + 174b 9600 Geforce 9500GS 512M DDR2 V/D/HDMI 0645 G96 [GeForce 9500 GS] 0646 G96 [GeForce GT 120] 0647 G96M [GeForce 9600M GT] @@ -9003,6 +9010,7 @@ 10de 084d Tesla M2070-Q 10de 087f Tesla M2070-Q 06e0 G98 [GeForce 9300 GE] + 107d 5a96 Geforce 9300GE 06e1 G98 [GeForce 9300 GS] 06e2 G98 [GeForce 8400] 06e3 G98 [GeForce 8300 GS] @@ -11589,6 +11597,8 @@ 1093 7602 PXIe-8384 # 32 port / 8 lane PCIe Gen 2 packet switch 808f PES32NT8AG2 + 80cf F32P08xG3 [PCIe boot mode] + 80d2 F32P08xG3 NVMe controller 111e Eldec 111f Precision Digital Images 4a47 Precision MX Video engine interface @@ -13517,7 +13527,9 @@ 0800 C4 ISDN 0a00 A1 ISDN [Fritz] 1244 0a00 FRITZ!Card ISDN Controller - 0e00 Fritz!PCI v2.0 ISDN + 0e00 Fritz!Card PCI v2.0 ISDN + 0e80 Fritz!Card PCI v2.1 ISDN + 1244 0e00 PSB 3100F (AVM KAFKA) [Fritz!Card PCI v2.1] 1100 C2 ISDN 1200 T1 ISDN 2700 Fritz!Card DSL SL @@ -15129,7 +15141,7 @@ 7168 PCI2S550 (Dual 16550 UART) 1409 0002 SER4036A3V (2x RS232 port) 1409 4027 SER4027A (1x RS232 port) - 1409 4037 SER4037A (2x RS232 port) + 1409 4037 SER4037A(L) [SUNIX SUN1889] (2x RS232 port) # Single DC-37 connector 1409 4056 SER4056A (4x RS232) 1409 5027 SER4027D @@ -17625,8 +17637,7 @@ 126c 8031 2201 Mobile Adapter 1385 4400 WAB501 802.11ab Wireless CardBus Card 1b47 aa00 8460 802.11ab Wireless CardBus Adapter -# AR5001G, AR5001X+, AR5002G, AR5002X, AR5004G, AR5004X chipsets - 0013 AR5212/AR5213 Wireless Network Adapter + 0013 AR5212/5213/2414 Wireless Network Adapter 0308 3402 AG-100 802.11ag Wireless Cardbus Adapter 0308 3405 G-102 v2 802.11g Wireless Cardbus Adapter 0308 3408 G-170S 802.11g Wireless CardBus Adapter @@ -17657,7 +17668,7 @@ 1385 4b00 WG511T 108 Mbps Wireless PC Card (rev.A/B) 1385 4d00 WG311T 108 Mbps Wireless PCI Adapter (rev.A2) 1385 4f00 WG511U Double 108 Mbps Wireless PC Card - 1385 5a00 WG311T 108 Mbps Wireless PCI Adapter (rev.A3) + 1385 5a00 WG311T (rev.A3 v1h3/v1h4) 108 Mbps Wireless PCI Adapter [AR2412] 1385 5b00 WG511T 108 Mbps Wireless PC Card (rev.C) 1385 5d00 WPN511 RangeMax Wireless PC Card 1458 e911 GN-WIAG02 @@ -17784,6 +17795,7 @@ 002a AR928X Wireless Network Adapter (PCI-Express) 0777 4f05 SR71-X 802.11abgn Wireless ExpressCard Adapter [AR9280] 103c 3041 AR5BHB92-H 802.11abgn Wireless Half-size Mini PCIe Card [AR9280] + 103c 3042 AzureWave AW-NE773 802.11abgn Wireless Half-size Mini PCIe Card [AR9280] 105b e006 T77H053.00 802.11bgn Wireless Mini PCIe Card [AR9281] 105b e01f T77H047.31 802.11bgn Wireless Half-size Mini PCIe Card [AR9283] 106b 008f AirPort Extreme @@ -19198,6 +19210,7 @@ 0640 88SE9128 SATA III 6Gb/s RAID Controller 9120 88SE9120 SATA 6Gb/s Controller 9123 88SE9123 PCIe SATA 6.0 Gb/s controller + dc93 600e DC-6xxe series SATA 6G controller 9125 88SE9125 PCIe SATA 6.0 Gb/s controller 9128 88SE9128 PCIe SATA 6 Gb/s RAID controller 9130 88SE9128 PCIe SATA 6 Gb/s RAID controller with HyperDuo @@ -19330,6 +19343,7 @@ 0001 ExaNIC X4 0002 ExaNIC X2 1cf7 Subspace Dynamics +1d00 Pure Storage # CEM Solutions Pvt. Ltd. 1d21 Allo 1d26 Kalray Inc. @@ -19388,6 +19402,16 @@ 0000 3011 10-Giga TOE Dual Port SFP+/CX4 Low Profile SmartNIC 0000 3012 10-Giga TOE Dual Port CX4/SFP+ Low Profile SmartNIC 0000 3014 10-Giga TOE Dual Port CX4 Low Profile SmartNIC + 4010 TN4010 Clean SROM + 4020 TN9030 10GbE CX4 Ethernet Adapter + 4022 TN9310 10GbE SFP+ Ethernet Adapter + 1186 4d00 DXE-810S 10GbE SFP+ Ethernet Adapter + 1fc9 3015 Ethernet Adapter + 4024 TN9210 10GBase-T Ethernet Adapter + 4025 TN9510 10GBase-T/NBASE-T Ethernet Adapter + 1186 2900 DXE-810T 10GBase-T Ethernet Adapter + 1fc9 3015 Ethernet Adapter + 4026 TN9610 10GbE SFP+ Ethernet Adapter 1fcc StreamLabs f416 MS416 fb01 MH4LM @@ -21736,6 +21760,8 @@ 15a1 Ethernet Connection (2) I218-V 15a2 Ethernet Connection (3) I218-LM 15a3 Ethernet Connection (3) I218-V + 15a4 Ethernet Switch FM10000 Host Interface + 15a5 Ethernet Switch FM10000 Host Virtual Interface 15a8 Ethernet Connection X552 Virtual Function 15aa Ethernet Connection X552 10 GbE Backplane 15ab Ethernet Connection X552 10 GbE Backplane From 1ce097dbb0577074ada08fefb78df51a76c2ab08 Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Thu, 30 Jul 2015 13:15:05 +0200 Subject: [PATCH 053/126] BMediaRoster: Wait with more calm for services to be up. * Needed to avoid the app restarting things too fast. This is a problem that should be solved, added a TODO. --- src/kits/media/MediaRoster.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/kits/media/MediaRoster.cpp b/src/kits/media/MediaRoster.cpp index 22de1accef..e386c2d0fb 100644 --- a/src/kits/media/MediaRoster.cpp +++ b/src/kits/media/MediaRoster.cpp @@ -3377,6 +3377,11 @@ BMediaRoster::MessageReceived(BMessage* message) // Send the notification to our subscribers if (BMediaRoster::IsRunning()) { sServerIsUp = true; + // Wait for media services to wake up + // TODO: This should be solved so that the server + // have a way to notify us when the system is really + // ready to run and we avoid sleeping. + snooze(2000000); // Restore our friendship with the media servers if (MediaRosterEx(this)->BuildConnections() != B_OK) { TRACE("BMediaRoster::MessageReceived can't reconnect" From 922d2034b2a2818465589969b7d682661553a9fd Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Thu, 30 Jul 2015 13:18:24 +0200 Subject: [PATCH 054/126] Media: Reinit media also when the restart thread finish --- src/preferences/media/MediaWindow.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/preferences/media/MediaWindow.cpp b/src/preferences/media/MediaWindow.cpp index 73006eb6c9..05a951bbfd 100644 --- a/src/preferences/media/MediaWindow.cpp +++ b/src/preferences/media/MediaWindow.cpp @@ -324,6 +324,7 @@ MediaWindow::MessageReceived(BMessage* message) switch (message->what) { case ML_RESTART_THREAD_FINISHED: fRestartThread = -1; + _InitMedia(false); break; case ML_RESTART_MEDIA_SERVER: From 7bdc7eec03d12377f6928b49887697a8f9fbc9dc Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Thu, 30 Jul 2015 19:14:13 +0200 Subject: [PATCH 055/126] Media: Refresh window also at QUIT event. * Since the Media preferences are always watching for media status, it's good to clean up the window when the media services are not running. This avoid the user try to use controls where services are down. --- src/preferences/media/MediaWindow.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/preferences/media/MediaWindow.cpp b/src/preferences/media/MediaWindow.cpp index 05a951bbfd..30ab05126e 100644 --- a/src/preferences/media/MediaWindow.cpp +++ b/src/preferences/media/MediaWindow.cpp @@ -192,6 +192,8 @@ MediaWindow::MediaWindow(BRect frame) BMediaRoster* roster = BMediaRoster::Roster(); roster->StartWatching(BMessenger(this, this), B_MEDIA_SERVER_STARTED); + roster->StartWatching(BMessenger(this, this), + B_MEDIA_SERVER_QUIT); } @@ -217,6 +219,8 @@ MediaWindow::~MediaWindow() BMediaRoster* roster = BMediaRoster::CurrentRoster(); roster->StopWatching(BMessenger(this, this), B_MEDIA_SERVER_STARTED); + roster->StartWatching(BMessenger(this, this), + B_MEDIA_SERVER_QUIT); } @@ -337,6 +341,7 @@ MediaWindow::MessageReceived(BMessage* message) resume_thread(fRestartThread); break; } + case B_MEDIA_WEB_CHANGED: case ML_SELECTED_NODE: { @@ -352,12 +357,15 @@ MediaWindow::MessageReceived(BMessage* message) item->AlterWindow(this); break; } + case B_MEDIA_SERVER_STARTED: + case B_MEDIA_SERVER_QUIT: { PRINT_OBJECT(*message); _InitMedia(false); break; } + default: BWindow::MessageReceived(message); break; From 99b4affab6fbabb0917abd76cb9a08b55a128e56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 30 Jul 2015 18:27:13 +0200 Subject: [PATCH 056/126] Added BWindow::ResizeToPreferred(). * B_AUTO_UPDATE_SIZE_LIMITS only really makes sense for resizable windows, and it only sets the minimum/maximum window size. * ResizeToPreferred() resizes the window to its preferred size, and also supports height-for-width layouts. --- headers/os/interface/Window.h | 1 + src/kits/interface/Window.cpp | 22 ++++++++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/headers/os/interface/Window.h b/headers/os/interface/Window.h index b4df13e925..dbf0431516 100644 --- a/headers/os/interface/Window.h +++ b/headers/os/interface/Window.h @@ -165,6 +165,7 @@ public: void MoveTo(float x, float y); void ResizeBy(float dx, float dy); void ResizeTo(float width, float height); + void ResizeToPreferred(); void CenterIn(const BRect& rect); void CenterOnScreen(); diff --git a/src/kits/interface/Window.cpp b/src/kits/interface/Window.cpp index bcd07de4fb..141e4891bc 100644 --- a/src/kits/interface/Window.cpp +++ b/src/kits/interface/Window.cpp @@ -2521,7 +2521,26 @@ BWindow::ResizeTo(float width, float height) } -// Center the window in the passed in rect. +void +BWindow::ResizeToPreferred() +{ + Layout(false); + + float width = fTopView->PreferredSize().width; + width = std::min(width, fTopView->MaxSize().width); + width = std::max(width, fTopView->MinSize().width); + + float height = fTopView->PreferredSize().height; + height = std::min(width, fTopView->MaxSize().height); + height = std::max(width, fTopView->MinSize().height); + + if (GetLayout()->HasHeightForWidth()) + GetLayout()->GetHeightForWidth(width, NULL, NULL, &height); + + ResizeTo(width, height); +} + + void BWindow::CenterIn(const BRect& rect) { @@ -2534,7 +2553,6 @@ BWindow::CenterIn(const BRect& rect) } -// Centers the window on the screen the window is currently on. void BWindow::CenterOnScreen() { From fd3e3e7bfb6e31cced1a98fc6a24c45f2feeba93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 30 Jul 2015 18:29:27 +0200 Subject: [PATCH 057/126] BTwoDimensionalLayout: Removed duplicated code. * Probably some refactoring leftovers. --- src/kits/interface/TwoDimensionalLayout.cpp | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/kits/interface/TwoDimensionalLayout.cpp b/src/kits/interface/TwoDimensionalLayout.cpp index a37f67a792..ffb93b0441 100644 --- a/src/kits/interface/TwoDimensionalLayout.cpp +++ b/src/kits/interface/TwoDimensionalLayout.cpp @@ -21,8 +21,6 @@ #include "CollapsingLayouter.h" - - // Some words of explanation: // // This class is the base class for BLayouts that organize their items @@ -923,13 +921,6 @@ BTwoDimensionalLayout::VerticalCompoundLayouter::InternalGetHeightForWidth( } updateCachedInfo = true; - - // get the height for width info - fCachedMinHeightForWidth = fHeightForWidthLayouter->MinSize(); - fCachedMaxHeightForWidth = fHeightForWidthLayouter->MaxSize(); - fCachedPreferredHeightForWidth - = fHeightForWidthLayouter->PreferredSize(); - } else if (localLayouter->HasHeightForWidth()) { // There is a height for width layouter and it has been initialized // in the current layout context. So we just add the height for width From e27a53b231ad97ed357932f329ad975bccdafcd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 30 Jul 2015 18:33:24 +0200 Subject: [PATCH 058/126] BTextView: implemented height-for-width when read-only. * This is not an ideal implementation, as it actually relayouts the text view. IOW it's actually wrong, but it does seem to work without any issues. --- src/kits/interface/TextView.cpp | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/src/kits/interface/TextView.cpp b/src/kits/interface/TextView.cpp index bdf7fa6fd9..f5625d90a5 100644 --- a/src/kits/interface/TextView.cpp +++ b/src/kits/interface/TextView.cpp @@ -2577,9 +2577,11 @@ BTextView::PreferredSize() bool BTextView::HasHeightForWidth() { - // ToDo: When not editable and not embedded in a scroll view, we should - // assume that all text is supposed to be visible. - return BView::HasHeightForWidth(); + if (IsEditable()) + return BView::HasHeightForWidth(); + + // When not editable, we assume that all text is supposed to be visible. + return true; } @@ -2587,8 +2589,21 @@ void BTextView::GetHeightForWidth(float width, float* min, float* max, float* preferred) { - // ToDo: See above and implement. - BView::GetHeightForWidth(width, min, max, preferred); + if (IsEditable()) { + BView::GetHeightForWidth(width, min, max, preferred); + return; + } + + // TODO: don't change the actual text rect! + fTextRect.right = fTextRect.left + width; + _Refresh(0, TextLength(), false); + + if (min != NULL) + *min = fTextRect.Height(); + if (max != NULL) + *max = fTextRect.Height(); + if (preferred != NULL) + *preferred = fTextRect.Height(); } From 7b0ff5c6e63390406acaffa0a9ebb68334af8485 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Wed, 29 Jul 2015 18:13:51 +0200 Subject: [PATCH 059/126] BAlert: use layout API, allow any number of buttons. * Added default constructor; you can now alter the complete behavior via setters, and also add buttons afterwards. --- headers/os/interface/Alert.h | 133 ++++---- src/kits/interface/Alert.cpp | 601 +++++++++++++++++------------------ 2 files changed, 376 insertions(+), 358 deletions(-) diff --git a/headers/os/interface/Alert.h b/headers/os/interface/Alert.h index 3020b41497..3ac24417b3 100644 --- a/headers/os/interface/Alert.h +++ b/headers/os/interface/Alert.h @@ -1,11 +1,13 @@ /* - * Copyright 2001-2014 Haiku, Inc. All rights reserved. + * Copyright 2001-2015 Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. */ #ifndef _ALERT_H #define _ALERT_H +#include + #include @@ -26,78 +28,97 @@ enum button_spacing { class BBitmap; class BButton; +class BGroupLayout; class BInvoker; class BTextView; +class TAlertView; + class BAlert : public BWindow { public: - BAlert(const char* title, const char* text, - const char* button1, const char* button2 = NULL, - const char* button3 = NULL, - button_width width = B_WIDTH_AS_USUAL, - alert_type type = B_INFO_ALERT); - BAlert(const char* title, const char* text, - const char* button1, const char* button2, - const char* button3, button_width width, - button_spacing spacing, - alert_type type = B_INFO_ALERT); - virtual ~BAlert(); + BAlert(); + BAlert(const char* title, const char* text, + const char* button1, + const char* button2 = NULL, + const char* button3 = NULL, + button_width width = B_WIDTH_AS_USUAL, + alert_type type = B_INFO_ALERT); + BAlert(const char* title, const char* text, + const char* button1, const char* button2, + const char* button3, button_width width, + button_spacing spacing, + alert_type type = B_INFO_ALERT); + BAlert(BMessage* data); + virtual ~BAlert(); - // Archiving - BAlert(BMessage* data); - static BArchivable *Instantiate(BMessage* data); - virtual status_t Archive(BMessage* data, bool deep = true) const; + // Archiving + static BArchivable* Instantiate(BMessage* data); + virtual status_t Archive(BMessage* data, bool deep = true) const; - // BAlert guts - void SetShortcut(int32 button_index, char key); - char Shortcut(int32 button_index) const; + // BAlert guts + alert_type Type() const; + void SetType(alert_type type); + void SetIcon(BBitmap* bitmap); + void SetText(const char* text); + void SetButtonSpacing(button_spacing spacing); + void SetButtonWidth(button_width width); - int32 Go(); - status_t Go(BInvoker* invoker); + void SetShortcut(int32 buttonIndex, char key); + char Shortcut(int32 buttonIndex) const; - virtual void MessageReceived(BMessage* message); - virtual void FrameResized(float new_width, float new_height); - BButton* ButtonAt(int32 index) const; - BTextView* TextView() const; + int32 Go(); + status_t Go(BInvoker* invoker); - virtual BHandler* ResolveSpecifier(BMessage* message, int32 index, - BMessage* specifier, int32 what, - const char* property); - virtual status_t GetSupportedSuites(BMessage* data); + virtual void MessageReceived(BMessage* message); + virtual void FrameResized(float newWidth, float newHeight); - virtual void DispatchMessage(BMessage* message, BHandler* handler); - virtual void Quit(); - virtual bool QuitRequested(); + void AddButton(const char* label, char key = 0); + int32 CountButtons() const; + BButton* ButtonAt(int32 index) const; - static BPoint AlertPosition(float width, float height); + BTextView* TextView() const; - virtual status_t Perform(perform_code d, void* arg); + virtual BHandler* ResolveSpecifier(BMessage* message, int32 index, + BMessage* specifier, int32 form, + const char* property); + virtual status_t GetSupportedSuites(BMessage* data); + + virtual void DispatchMessage(BMessage* message, + BHandler* handler); + virtual void Quit(); + virtual bool QuitRequested(); + + virtual status_t Perform(perform_code d, void* arg); + + static BPoint AlertPosition(float width, float height); private: - friend class _BAlertFilter_; + virtual void _ReservedAlert1(); + virtual void _ReservedAlert2(); + virtual void _ReservedAlert3(); - virtual void _ReservedAlert1(); - virtual void _ReservedAlert2(); - virtual void _ReservedAlert3(); + void _Init(const char* text, const char* button1, + const char* button2, const char* button3, + button_width width, button_spacing spacing, + alert_type type); + BBitmap* _CreateTypeIcon(); + BButton* _CreateButton(int32 which, const char* label); + void _Prepare(); - void _InitObject(const char* text, const char* button1, - const char* button2 = NULL, - const char* button3 = NULL, - button_width width = B_WIDTH_AS_USUAL, - button_spacing spacing = B_EVEN_SPACING, - alert_type type = B_INFO_ALERT); - BBitmap* _InitIcon(); - BButton* _CreateButton(int32 which, const char* label); - - sem_id fAlertSem; - int32 fAlertValue; - BButton* fButtons[3]; - BTextView* fTextView; - char fKeys[3]; - alert_type fMsgType; - button_width fButtonWidth; - BInvoker* fInvoker; - uint32 _reserved[4]; +private: + sem_id fAlertSem; + int32 fAlertValue; + TAlertView* fIconView; + BTextView* fTextView; + BGroupLayout* fButtonLayout; + std::vector fButtons; + std::vector fKeys; + uint8 fType; + uint8 fButtonSpacing; + uint8 fButtonWidth; + BInvoker* fInvoker; + uint32 _reserved[1]; }; + #endif // _ALERT_H diff --git a/src/kits/interface/Alert.cpp b/src/kits/interface/Alert.cpp index 19d093ab6a..8c373fd5b1 100644 --- a/src/kits/interface/Alert.cpp +++ b/src/kits/interface/Alert.cpp @@ -9,31 +9,28 @@ */ -// BAlert displays a modal alert window. +//! BAlert displays a modal alert window. -#include -#include -#include - #include -#include -#include + +#include + +#include + #include #include -#include +#include #include -#include #include -#include -#include -#include +#include +#include #include #include #include #include -#include -#include +#include +#include #include @@ -42,111 +39,102 @@ #ifdef DEBUG_ALERT # define FTRACE(x) fprintf(x) #else -# define FTRACE(x) /* nothing */ +# define FTRACE(x) ; #endif -// Default size of the Alert window. -#define DEFAULT_RECT BRect(0, 0, 310, 75) -#define max(LHS, RHS) ((LHS) > (RHS) ? (LHS) : (RHS)) + +class TAlertView : public BView { +public: + TAlertView(); + TAlertView(BMessage* archive); + ~TAlertView(); + + static TAlertView* Instantiate(BMessage* archive); + virtual status_t Archive(BMessage* archive, + bool deep = true) const; + + virtual void GetPreferredSize(float* _width, float* _height); + virtual BSize MaxSize(); + virtual void Draw(BRect updateRect); + + void SetBitmap(BBitmap* Icon) + { fIconBitmap = Icon; } + BBitmap* Bitmap() + { return fIconBitmap; } + +private: + BBitmap* fIconBitmap; +}; + + +class _BAlertFilter_ : public BMessageFilter { +public: + _BAlertFilter_(BAlert* Alert); + ~_BAlertFilter_(); + + virtual filter_result Filter(BMessage* msg, BHandler** target); + +private: + BAlert* fAlert; +}; + static const unsigned int kAlertButtonMsg = 'ALTB'; static const int kSemTimeOut = 50000; -static const int kLeftOffset = 10; -static const int kTopOffset = 6; -static const int kBottomOffset = 8; -static const int kRightOffset = 8; - -static const int kButtonSpacing = 6; static const int kButtonOffsetSpacing = 62; -static const int kButtonUsualWidth = 75; +static const int kButtonUsualWidth = 55; +static const int kIconStripeWidth = 30; -static const int kWindowIconOffset = 27; -static const int kWindowMinOffset = 12; static const int kWindowMinWidth = 310; static const int kWindowOffsetMinWidth = 335; -static const int kIconStripeWidth = 30; - -static const int kTextButtonOffset = 10; static inline int32 icon_layout_scale() { -#ifdef __HAIKU__ return max_c(1, ((int32)be_plain_font->Size() + 15) / 16); -#endif - return 1; } -class TAlertView : public BView { - public: - TAlertView(BRect frame); - TAlertView(BMessage* archive); - ~TAlertView(); - - static TAlertView* Instantiate(BMessage* archive); - virtual status_t Archive(BMessage* archive, bool deep = true) const; - - virtual void Draw(BRect updateRect); - - // These functions (or something analogous) are missing from libbe.so's - // dump. I can only assume that the bitmap is a public var in the - // original implementation -- or BAlert is a friend of TAlertView. - // Neither one is necessary, since I can just add these. - void SetBitmap(BBitmap* Icon) { fIconBitmap = Icon; } - BBitmap* Bitmap() { return fIconBitmap; } - - private: - BBitmap* fIconBitmap; -}; - -class _BAlertFilter_ : public BMessageFilter { - public: - _BAlertFilter_(BAlert* Alert); - ~_BAlertFilter_(); - - virtual filter_result Filter(BMessage* msg, BHandler** target); - - private: - BAlert* fAlert; -}; +// #pragma mark - -// #pragma mark - BAlert +BAlert::BAlert() + : + BWindow(BRect(0, 0, 100, 100), "", B_MODAL_WINDOW, + B_NOT_CLOSABLE | B_NOT_RESIZABLE | B_ASYNCHRONOUS_CONTROLS) +{ + _Init(NULL, NULL, NULL, NULL, B_WIDTH_FROM_WIDEST, B_EVEN_SPACING, + B_INFO_ALERT); +} BAlert::BAlert(const char *title, const char *text, const char *button1, const char *button2, const char *button3, button_width width, alert_type type) - : BWindow(DEFAULT_RECT, title, B_MODAL_WINDOW, + : + BWindow(BRect(0, 0, 100, 100), title, B_MODAL_WINDOW, B_NOT_CLOSABLE | B_NOT_RESIZABLE | B_ASYNCHRONOUS_CONTROLS) { - _InitObject(text, button1, button2, button3, width, B_EVEN_SPACING, type); + _Init(text, button1, button2, button3, width, B_EVEN_SPACING, type); } BAlert::BAlert(const char *title, const char *text, const char *button1, const char *button2, const char *button3, button_width width, button_spacing spacing, alert_type type) - : BWindow(DEFAULT_RECT, title, B_MODAL_WINDOW, + : + BWindow(BRect(0, 0, 100, 100), title, B_MODAL_WINDOW, B_NOT_CLOSABLE | B_NOT_RESIZABLE | B_ASYNCHRONOUS_CONTROLS) { - _InitObject(text, button1, button2, button3, width, spacing, type); -} - - -BAlert::~BAlert() -{ - // Probably not necessary, but it makes me feel better. - if (fAlertSem >= B_OK) - delete_sem(fAlertSem); + _Init(text, button1, button2, button3, width, spacing, type); } BAlert::BAlert(BMessage* data) - : BWindow(data) + : + BWindow(data) { fInvoker = NULL; fAlertSem = -1; @@ -154,20 +142,12 @@ BAlert::BAlert(BMessage* data) fTextView = (BTextView*)FindView("_tv_"); - fButtons[0] = (BButton*)FindView("_b0_"); - fButtons[1] = (BButton*)FindView("_b1_"); - fButtons[2] = (BButton*)FindView("_b2_"); - - if (fButtons[2]) - SetDefaultButton(fButtons[2]); - else if (fButtons[1]) - SetDefaultButton(fButtons[1]); - else if (fButtons[0]) - SetDefaultButton(fButtons[0]); + // TODO: window loses default button on dearchive! + // TODO: ButtonAt() doesn't work afterwards (also affects shortcuts) TAlertView* view = (TAlertView*)FindView("_master_"); if (view) - view->SetBitmap(_InitIcon()); + view->SetBitmap(_CreateTypeIcon()); // Get keys char key; @@ -176,19 +156,18 @@ BAlert::BAlert(BMessage* data) fKeys[i] = key; } - int32 temp; - // Get alert type - if (data->FindInt32("_atype", &temp) == B_OK) - fMsgType = (alert_type)temp; - - // Get button width - if (data->FindInt32("_but_width", &temp) == B_OK) - fButtonWidth = (button_width)temp; - AddCommonFilter(new(std::nothrow) _BAlertFilter_(this)); } +BAlert::~BAlert() +{ + // Probably not necessary, but it makes me feel better. + if (fAlertSem >= B_OK) + delete_sem(fAlertSem); +} + + BArchivable* BAlert::Instantiate(BMessage* data) { @@ -210,7 +189,7 @@ BAlert::Archive(BMessage* data, bool deep) const // Stow the alert type if (ret == B_OK) - ret = data->AddInt32("_atype", fMsgType); + ret = data->AddInt32("_atype", fType); // Stow the button width if (ret == B_OK) @@ -232,10 +211,52 @@ BAlert::Archive(BMessage* data, bool deep) const } +alert_type +BAlert::Type() const +{ + return (alert_type)fType; +} + + +void +BAlert::SetType(alert_type type) +{ + fType = type; +} + + +void +BAlert::SetText(const char* text) +{ + TextView()->SetText(text); +} + + +void +BAlert::SetIcon(BBitmap* bitmap) +{ + fIconView->SetBitmap(bitmap); +} + + +void +BAlert::SetButtonSpacing(button_spacing spacing) +{ + fButtonSpacing = spacing; +} + + +void +BAlert::SetButtonWidth(button_width width) +{ + fButtonWidth = width; +} + + void BAlert::SetShortcut(int32 index, char key) { - if (index >= 0 && index < 3) + if (index >= 0 && (size_t)index < fKeys.size()) fKeys[index] = key; } @@ -243,7 +264,8 @@ BAlert::SetShortcut(int32 index, char key) char BAlert::Shortcut(int32 index) const { - if (index >= 0 && index < 3) + + if (index >= 0 && (size_t)index < fKeys.size()) return fKeys[index]; return 0; @@ -254,29 +276,28 @@ int32 BAlert::Go() { fAlertSem = create_sem(0, "AlertSem"); - if (fAlertSem < B_OK) { + if (fAlertSem < 0) { Quit(); return -1; } // Get the originating window, if it exists - BWindow* window = - dynamic_cast(BLooper::LooperForThread(find_thread(NULL))); + BWindow* window = dynamic_cast( + BLooper::LooperForThread(find_thread(NULL))); + _Prepare(); Show(); - // Heavily modified from TextEntryAlert code; the original didn't let the - // blocked window ever draw. - if (window) { - status_t err; + if (window != NULL) { + status_t status; for (;;) { do { - err = acquire_sem_etc(fAlertSem, 1, B_RELATIVE_TIMEOUT, - kSemTimeOut); + status = acquire_sem_etc(fAlertSem, 1, B_RELATIVE_TIMEOUT, + kSemTimeOut); // We've (probably) had our time slice taken away from us - } while (err == B_INTERRUPTED); + } while (status == B_INTERRUPTED); - if (err == B_BAD_SEM_ID) { + if (status == B_BAD_SEM_ID) { // Semaphore was finally nuked in MessageReceived break; } @@ -301,19 +322,20 @@ status_t BAlert::Go(BInvoker* invoker) { fInvoker = invoker; + _Prepare(); Show(); return B_OK; } void -BAlert::MessageReceived(BMessage* message) +BAlert::MessageReceived(BMessage* msg) { - if (message->what != kAlertButtonMsg) - return BWindow::MessageReceived(message); + if (msg->what != kAlertButtonMsg) + return BWindow::MessageReceived(msg); int32 which; - if (message->FindInt32("which", &which) == B_OK) { + if (msg->FindInt32("which", &which) == B_OK) { if (fAlertSem < B_OK) { // Semaphore hasn't been created; we're running asynchronous if (fInvoker) { @@ -346,10 +368,31 @@ BAlert::FrameResized(float newWidth, float newHeight) } +void +BAlert::AddButton(const char* label, char key) +{ + if (label == NULL || label[0] == '\0') + return; + + BButton* button = _CreateButton(fButtons.size(), label); + fButtons.push_back(button); + fKeys.push_back(key); + + fButtonLayout->AddView(button); +} + + +int32 +BAlert::CountButtons() const +{ + return (int32)fButtons.size(); +} + + BButton* BAlert::ButtonAt(int32 index) const { - if (index >= 0 && index < 3) + if (index >= 0 && (size_t)index < fButtons.size()) return fButtons[index]; return NULL; @@ -364,11 +407,10 @@ BAlert::TextView() const BHandler* -BAlert::ResolveSpecifier(BMessage* message, int32 index, - BMessage* specifier, int32 what, const char* property) +BAlert::ResolveSpecifier(BMessage* msg, int32 index, + BMessage* specifier, int32 form, const char* property) { - return BWindow::ResolveSpecifier(message, index, specifier, what, - property); + return BWindow::ResolveSpecifier(msg, index, specifier, form, property); } @@ -400,7 +442,7 @@ BAlert::QuitRequested() } -// This method is deprecated, do not use +//! This method is deprecated, do not use - use BWindow::CenterIn() instead. BPoint BAlert::AlertPosition(float width, float height) { @@ -429,11 +471,9 @@ BAlert::Perform(perform_code code, void* _data) { switch (code) { case PERFORM_CODE_SET_LAYOUT: - { perform_data_set_layout* data = (perform_data_set_layout*)_data; BAlert::SetLayout(data->layout); return B_OK; -} } return BWindow::Perform(code, _data); @@ -446,185 +486,79 @@ void BAlert::_ReservedAlert3() {} void -BAlert::_InitObject(const char* text, const char* button0, const char* button1, +BAlert::_Init(const char* text, const char* button0, const char* button1, const char* button2, button_width buttonWidth, button_spacing spacing, alert_type type) { - fInvoker = NULL; - fAlertSem = -1; - fAlertValue = -1; - fButtons[0] = fButtons[1] = fButtons[2] = NULL; - fTextView = NULL; - fKeys[0] = fKeys[1] = fKeys[2] = 0; - fMsgType = type; - fButtonWidth = buttonWidth; - - // Set up the "_master_" view - TAlertView* view = new(std::nothrow) TAlertView(Bounds()); - if (view == NULL) - return; - - AddChild(view); - view->SetBitmap(_InitIcon()); - - // Must have at least one button - if (button0 == NULL) { - debugger("BAlerts must have at least one button."); - button0 = ""; - } - - // Set up the buttons - - int32 buttonCount = 1; - view->AddChild(fButtons[0] = _CreateButton(0, button0)); - - if (button1 != NULL) { - view->AddChild(fButtons[1] = _CreateButton(1, button1)); - buttonCount++; - } - - if (button2 != NULL) { - view->AddChild(fButtons[2] = _CreateButton(2, button2)); - buttonCount++; - } - - // Find the widest button only if the widest value needs to be known. - - if (fButtonWidth == B_WIDTH_FROM_WIDEST) { - float maxWidth = 0; - for (int i = 0; i < buttonCount; i++) { - float width = fButtons[i]->Bounds().Width(); - if (width > maxWidth) - maxWidth = width; - } - - // resize buttons - for (int i = 0; i < buttonCount; i++) { - fButtons[i]->ResizeTo(maxWidth, fButtons[i]->Bounds().Height()); - } - } - - float defaultButtonFrameWidth - = -fButtons[buttonCount - 1]->Bounds().Width() / 2.0f; - SetDefaultButton(fButtons[buttonCount - 1]); - defaultButtonFrameWidth - += fButtons[buttonCount - 1]->Bounds().Width() / 2.0f; - - // Layout buttons - - float fontFactor = be_plain_font->Size() / 11.0f; - - for (int i = buttonCount - 1; i >= 0; --i) { - float x = -fButtons[i]->Bounds().Width(); - if (i + 1 == buttonCount) - x += Bounds().right - kRightOffset + defaultButtonFrameWidth; - else - x += fButtons[i + 1]->Frame().left - kButtonSpacing; - - if (buttonCount > 1 && i == 0 && spacing == B_OFFSET_SPACING) - x -= kButtonOffsetSpacing * fontFactor; - - fButtons[i]->MoveTo(x, fButtons[i]->Frame().top); - } - - // Adjust the window's width, if necessary - - int32 iconLayoutScale = icon_layout_scale(); - float totalWidth = kRightOffset + fButtons[buttonCount - 1]->Frame().right - - defaultButtonFrameWidth - fButtons[0]->Frame().left; - if (view->Bitmap()) - totalWidth += (kIconStripeWidth + kWindowIconOffset) * iconLayoutScale; - else - totalWidth += kWindowMinOffset; - - float width = (spacing == B_OFFSET_SPACING - ? kWindowOffsetMinWidth : kWindowMinWidth) * fontFactor; - - ResizeTo(max_c(totalWidth, width), Bounds().Height()); - - // Set up the text view - - BRect textViewRect(kLeftOffset, kTopOffset, - Bounds().right - kRightOffset, - fButtons[0]->Frame().top - kTextButtonOffset); - if (view->Bitmap()) - textViewRect.left = (kWindowIconOffset - + kIconStripeWidth) * iconLayoutScale - 2; - - fTextView = new(std::nothrow) BTextView(textViewRect, "_tv_", - textViewRect.OffsetByCopy(B_ORIGIN), - B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW); - if (fTextView == NULL) - return; + fIconView = new TAlertView(); + fTextView = new BTextView("_tv_"); fTextView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); rgb_color textColor = ui_color(B_PANEL_TEXT_COLOR); fTextView->SetFontAndColor(be_plain_font, B_FONT_ALL, &textColor); - fTextView->SetText(text, strlen(text)); fTextView->MakeEditable(false); fTextView->MakeSelectable(false); fTextView->SetWordWrap(true); - view->AddChild(fTextView); + fTextView->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNLIMITED)); - // Now resize the TextView vertically so that all the text is visible - float textHeight = fTextView->TextHeight(0, fTextView->CountLines()); - textViewRect.OffsetTo(0, 0); - textHeight -= textViewRect.Height(); - ResizeBy(0, textHeight); - fTextView->ResizeBy(0, textHeight); - textViewRect.bottom += textHeight; - fTextView->SetTextRect(textViewRect); + fButtonLayout = new BGroupLayout(B_HORIZONTAL); - AddCommonFilter(new(std::nothrow) _BAlertFilter_(this)); + SetType(type); + SetButtonWidth(buttonWidth); + SetButtonSpacing(spacing); + SetText(text); - // Position the alert so that it is centered vertically but offset a bit - // horizontally in the parent window's frame or, if unavailable, the - // screen frame. - BWindow* parent = - dynamic_cast(BLooper::LooperForThread(find_thread(NULL))); - const BRect frame = parent != NULL ? parent->Frame() : BScreen(this).Frame(); - MoveTo(dynamic_cast(this)->AlertPosition(frame)); + BLayoutBuilder::Group<>(this, B_HORIZONTAL, 0) + .Add(fIconView) + .AddGroup(B_VERTICAL) + .SetInsets(B_USE_DEFAULT_SPACING) + .Add(fTextView) + .AddGroup(B_HORIZONTAL, 0) + .AddGlue() + .Add(fButtonLayout); + + AddButton(button0); + AddButton(button1); + AddButton(button2); } BBitmap* -BAlert::_InitIcon() +BAlert::_CreateTypeIcon() { - // Save the desired alert type and set it to "empty" until - // loading the icon was successful - alert_type alertType = fMsgType; - fMsgType = B_EMPTY_ALERT; + if (Type() == B_EMPTY_ALERT) + return NULL; - // After a bit of a search, I found the icons in app_server. =P + // The icons are in the app_server resources BBitmap* icon = NULL; BPath path; status_t status = find_directory(B_BEOS_SERVERS_DIRECTORY, &path); - if (status < B_OK) { - FTRACE((stderr, "BAlert::_InitIcon() - find_directory failed: %s\n", - strerror(status))); + if (status != B_OK) { + FTRACE((stderr, "BAlert::_CreateTypeIcon() - find_directory " + "failed: %s\n", strerror(status))); return NULL; } path.Append("app_server"); BFile file; status = file.SetTo(path.Path(), B_READ_ONLY); - if (status < B_OK) { - FTRACE((stderr, "BAlert::_InitIcon() - BFile init failed: %s\n", + if (status != B_OK) { + FTRACE((stderr, "BAlert::_CreateTypeIcon() - BFile init failed: %s\n", strerror(status))); return NULL; } BResources resources; status = resources.SetTo(&file); - if (status < B_OK) { - FTRACE((stderr, "BAlert::_InitIcon() - BResources init failed: %s\n", - strerror(status))); + if (status != B_OK) { + FTRACE((stderr, "BAlert::_CreateTypeIcon() - BResources init " + "failed: %s\n", strerror(status))); return NULL; } // Which icon are we trying to load? - const char* iconName = ""; // Don't want any seg faults - switch (alertType) { + const char* iconName; + switch (fType) { case B_INFO_ALERT: iconName = "info"; break; @@ -649,7 +583,7 @@ BAlert::_InitIcon() icon = new(std::nothrow) BBitmap(BRect(0, 0, iconSize - 1, iconSize - 1), 0, B_RGBA32); if (icon == NULL || icon->InitCheck() < B_OK) { - FTRACE((stderr, "BAlert::_InitIcon() - No memory for bitmap\n")); + FTRACE((stderr, "BAlert::_CreateTypeIcon() - No memory for bitmap\n")); delete icon; return NULL; } @@ -658,39 +592,28 @@ BAlert::_InitIcon() size_t size = 0; const uint8* rawIcon; -#ifdef __HAIKU__ // Try to load vector icon rawIcon = (const uint8*)resources.LoadResource(B_VECTOR_ICON_TYPE, iconName, &size); if (rawIcon != NULL && BIconUtils::GetVectorIcon(rawIcon, size, icon) == B_OK) { - // We have an icon, restore the saved alert type - fMsgType = alertType; return icon; } -#endif // Fall back to bitmap icon rawIcon = (const uint8*)resources.LoadResource(B_LARGE_ICON_TYPE, iconName, &size); if (rawIcon == NULL) { - FTRACE((stderr, "BAlert::_InitIcon() - Icon resource not found\n")); + FTRACE((stderr, "BAlert::_CreateTypeIcon() - Icon resource not found\n")); delete icon; return NULL; } // Handle color space conversion -#ifdef __HAIKU__ if (icon->ColorSpace() != B_CMAP8) { BIconUtils::ConvertFromCMAP8(rawIcon, iconSize, iconSize, iconSize, icon); } -#else - icon->SetBits(rawIcon, iconSize, 0, B_CMAP8); -#endif - - // We have an icon, restore the saved alert type - fMsgType = alertType; return icon; } @@ -705,46 +628,95 @@ BAlert::_CreateButton(int32 which, const char* label) message->AddInt32("which", which); - BRect rect; - rect.top = Bounds().bottom - kBottomOffset; - rect.bottom = rect.top; - char name[32]; snprintf(name, sizeof(name), "_b%" B_PRId32 "_", which); - BButton* button = new(std::nothrow) BButton(rect, name, label, message, - B_FOLLOW_RIGHT | B_FOLLOW_BOTTOM); - if (button == NULL) - return NULL; + return new(std::nothrow) BButton(name, label, message); +} - float width, height; - button->GetPreferredSize(&width, &height); + +/*! Tweaks the layout according to the configuration. +*/ +void +BAlert::_Prepare() +{ + // Must have at least one button + if (CountButtons() == 0) + debugger("BAlerts must have at least one button."); + + SetDefaultButton(ButtonAt(CountButtons() - 1)); + + float fontFactor = be_plain_font->Size() / 11.0f; + + if (fIconView->Bitmap() == NULL) + fIconView->SetBitmap(_CreateTypeIcon()); if (fButtonWidth == B_WIDTH_AS_USUAL) { - float fontFactor = be_plain_font->Size() / 11.0f; - width = max_c(width, kButtonUsualWidth * fontFactor); + float usualWidth = kButtonUsualWidth * fontFactor; + + for (int32 index = 0; index < CountButtons(); index++) { + BButton* button = ButtonAt(index); + if (button->MinSize().width < usualWidth) + button->SetExplicitSize(BSize(usualWidth, B_SIZE_UNSET)); + } + } else if (fButtonWidth == B_WIDTH_FROM_WIDEST) { + // Get width of widest label + float maxWidth = 0; + for (int32 index = 0; index < CountButtons(); index++) { + BButton* button = ButtonAt(index); + float width; + button->GetPreferredSize(&width, NULL); + + if (width > maxWidth) + maxWidth = width; + } + for (int32 index = 0; index < CountButtons(); index++) { + BButton* button = ButtonAt(index); + button->SetExplicitSize(BSize(maxWidth, B_SIZE_UNSET)); + } } - button->ResizeTo(width, height); - button->MoveBy(0.0f, -height); - return button; + if (fButtonSpacing == B_OFFSET_SPACING && CountButtons() > 1) { + // Insert some strut + fButtonLayout->AddItem(1, BSpaceLayoutItem::CreateHorizontalStrut( + kButtonOffsetSpacing * fontFactor)); + } + + // Position the alert so that it is centered vertically but offset a bit + // horizontally in the parent window's frame or, if unavailable, the + // screen frame. + float minWindowWidth = (fButtonSpacing == B_OFFSET_SPACING + ? kWindowOffsetMinWidth : kWindowMinWidth) * fontFactor; + GetLayout()->SetExplicitMinSize(BSize(minWindowWidth, B_SIZE_UNSET)); + + ResizeToPreferred(); + + BWindow* parent = dynamic_cast(BLooper::LooperForThread( + find_thread(NULL))); + const BRect frame = parent != NULL ? parent->Frame() + : BScreen(this).Frame(); + + MoveTo(static_cast(this)->AlertPosition(frame)); + // Hidden by BAlert::AlertPosition() } // #pragma mark - TAlertView -TAlertView::TAlertView(BRect frame) - : BView(frame, "TAlertView", B_FOLLOW_ALL_SIDES, B_WILL_DRAW), - fIconBitmap(NULL) +TAlertView::TAlertView() + : + BView("TAlertView", B_WILL_DRAW), + fIconBitmap(NULL) { SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); } TAlertView::TAlertView(BMessage* archive) - : BView(archive), - fIconBitmap(NULL) + : + BView(archive), + fIconBitmap(NULL) { } @@ -772,10 +744,37 @@ TAlertView::Archive(BMessage* archive, bool deep) const } +void +TAlertView::GetPreferredSize(float* _width, float* _height) +{ + int32 scale = icon_layout_scale(); + + if (_width != NULL) { + if (fIconBitmap != NULL) + *_width = 18 * scale + fIconBitmap->Bounds().Width(); + else + *_width = 0; + } + if (_height != NULL) { + if (fIconBitmap != NULL) + *_height = 6 * scale + fIconBitmap->Bounds().Height(); + else + *_height = 0; + } +} + + +BSize +TAlertView::MaxSize() +{ + return BSize(MinSize().width, B_SIZE_UNLIMITED); +} + + void TAlertView::Draw(BRect updateRect) { - if (!fIconBitmap) + if (fIconBitmap == NULL) return; // Here's the fun stuff @@ -789,11 +788,9 @@ TAlertView::Draw(BRect updateRect) SetBlendingMode(B_PIXEL_ALPHA, B_ALPHA_OVERLAY); DrawBitmapAsync(fIconBitmap, BPoint(18 * iconLayoutScale, 6 * iconLayoutScale)); - } -//------------------------------------------------------------------------------ // #pragma mark - _BAlertFilter_ From 5ae4185d334beaff37e15f0249a221ee04253280 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Thu, 30 Jul 2015 11:53:52 -0400 Subject: [PATCH 060/126] PatchBay is an application, not a test. --- src/apps/patchbay/Jamfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps/patchbay/Jamfile b/src/apps/patchbay/Jamfile index 10528b90c7..a8bed28ee3 100644 --- a/src/apps/patchbay/Jamfile +++ b/src/apps/patchbay/Jamfile @@ -2,7 +2,7 @@ SubDir HAIKU_TOP src apps patchbay ; SetSubDirSupportedPlatformsBeOSCompatible ; -SimpleTest PatchBay +Application PatchBay : PatchApp.cpp PatchWin.cpp From 3159417f29dc3594f22fc9548adec4cf722b0456 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Thu, 30 Jul 2015 21:53:53 +0200 Subject: [PATCH 061/126] Add packages for vasm,vlink,exomizer,cpctools. --- build/jam/repositories/HaikuPorts/x86_gcc2 | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index 1eba8e9673..af916920a9 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -73,6 +73,7 @@ RemotePackageRepository HaikuPorts chat-20100903-2 clipdinger-0.3-1 clockwerk-git-3 + cpctools-0.3.0-1 criticalmass-2.2-1 ctags-5.8-3 colors-2.3-1 @@ -94,6 +95,7 @@ RemotePackageRepository HaikuPorts ed-1.7-1 enca-1.15-1 enca_devel-1.15-1 + exomizer-2.0.7-1 expat-2.1.0-1 expat_devel-2.1.0-1 faac-1.28-2 @@ -467,14 +469,16 @@ RemotePackageRepository HaikuPorts unrar-5.2.6-1 unzip-6.0-2 util_macros-1.19.0-2 + vasm-1.7c-1 vcdimager-0.7.24-2 vcdimager_devel-0.7.24-2 - vlc-0.8.6i-1 - vlc_devel-0.8.6i-1 vim-7.4-3 virtualbox_guest_additions-4.3.53_svn-1 - vmware_addons-1.1.1-2 vision-0.9.7.r949-2 + vlc-0.8.6i-1 + vlc_devel-0.8.6i-1 + vlink-0.15-1 + vmware_addons-1.1.1-2 weather-0.1.1_git-1 wget-1.16.3-1 which-2.21-1 @@ -901,6 +905,7 @@ RemotePackageRepository HaikuPorts confuse_x86 copynametoclipboard coreutils + cpctools criticalmass ctags curl @@ -926,6 +931,7 @@ RemotePackageRepository HaikuPorts ed enca enca_x86 + exomizer expat faac faad2 @@ -1257,11 +1263,13 @@ RemotePackageRepository HaikuPorts util_macros weather vacuum_x86 + vasm vcdimager vcmi_x86 vim vision vlc + vlink vmware_addons wget which From 29584b3fc43535eb98dc400a122ce438ac83e50f Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Thu, 30 Jul 2015 21:57:48 +0200 Subject: [PATCH 062/126] Add packages for libdsk and tools. --- build/jam/repositories/HaikuPorts/x86_gcc2 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index af916920a9..f59cf7030f 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -210,6 +210,9 @@ RemotePackageRepository HaikuPorts libcuefile_devel-r475-1 libdca-0.0.5-1 libdca_devel-0.0.5-1 + libdsk-1.3.8-1 + libdsk_devel-1.3.8-1 + libdsk_tools-1.3.8-1 libdvbpsi-1.2.0-1 libdvbpsi_devel-1.2.0-1 libdvdcss-1.3.0-1 @@ -1026,6 +1029,7 @@ RemotePackageRepository HaikuPorts libdbusmenu_qt_x86 libdca libdca_x86 + libdsk libdv_x86 libdvbpsi libdvdcss From 82a6fd69f7df22607c1141a4865baf414b8a58c5 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Thu, 30 Jul 2015 22:11:14 +0200 Subject: [PATCH 063/126] cpctools package: include png2crtc. --- build/jam/repositories/HaikuPorts/x86_gcc2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index f59cf7030f..175cef37f3 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -73,7 +73,7 @@ RemotePackageRepository HaikuPorts chat-20100903-2 clipdinger-0.3-1 clockwerk-git-3 - cpctools-0.3.0-1 + cpctools-0.3.0-2 criticalmass-2.2-1 ctags-5.8-3 colors-2.3-1 From b4665f9a5920f7f3d3795d011afd5b852000a9f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Thu, 30 Jul 2015 22:07:25 +0200 Subject: [PATCH 064/126] HttpForm needs another friend class for GCC6. --- headers/os/net/HttpForm.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/headers/os/net/HttpForm.h b/headers/os/net/HttpForm.h index b4eba439de..6936e1ede5 100644 --- a/headers/os/net/HttpForm.h +++ b/headers/os/net/HttpForm.h @@ -32,7 +32,11 @@ private: // but never used (see BHttpForm::operator[] which does the necessary // check up) BHttpFormData(); +#if __GNUC__ >= 6 + friend class std::pair; +#else friend class std::map; +#endif public: BHttpFormData(const BString& name, From 6306a2634bf096c2ebbe4a772538703350234d28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 30 Jul 2015 22:54:39 +0200 Subject: [PATCH 065/126] launch_daemon: Set working directory to user's directory. * This fixes #12257. --- src/servers/launch/LaunchDaemon.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/servers/launch/LaunchDaemon.cpp b/src/servers/launch/LaunchDaemon.cpp index efaa328d9d..93fbaac5dd 100644 --- a/src/servers/launch/LaunchDaemon.cpp +++ b/src/servers/launch/LaunchDaemon.cpp @@ -1215,9 +1215,16 @@ LaunchDaemon::_StartSession(const char* login) if (setuid(user) != 0) exit(EXIT_FAILURE); - BString home="HOME=\""; - home << passwd->pw_dir << "\""; - putenv(home.String()); + if (passwd->pw_dir != NULL && passwd->pw_dir[0] != '\0') { + BString home="HOME=\""; + home << passwd->pw_dir << "\""; + putenv(home.String()); + + if (chdir(passwd->pw_dir) != 0) { + debug_printf("Could not switch to home dir %s: %s\n", + passwd->pw_dir, strerror(errno)); + } + } // TODO: This leaks the parent application be_app = NULL; From 3333f968888ae8017be5c01149e619a533b0aba1 Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Thu, 30 Jul 2015 22:33:36 -0400 Subject: [PATCH 066/126] SplitLayout: Fix #12261. - SetItemCollapsed()/IsItemCollapsed() didn't properly handle inverting values when mapping between the collapsed flag and the layout item's internal visibility flag, leading to them having the opposite semantics from what their name would suggest. --- src/kits/interface/SplitLayout.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/kits/interface/SplitLayout.cpp b/src/kits/interface/SplitLayout.cpp index 48537c20ae..b15c9984ab 100644 --- a/src/kits/interface/SplitLayout.cpp +++ b/src/kits/interface/SplitLayout.cpp @@ -1,5 +1,6 @@ /* * Copyright 2006-2009, Ingo Weinhold . + * Copyright 2015, Rene Gollent, rene@gollent.com. * All rights reserved. Distributed under the terms of the MIT License. */ @@ -493,14 +494,14 @@ BSplitLayout::SetCollapsible(int32 first, int32 last, bool collapsible) bool BSplitLayout::IsItemCollapsed(int32 index) const { - return _ItemLayoutInfo(ItemAt(index))->isVisible; + return !_ItemLayoutInfo(ItemAt(index))->isVisible; } void BSplitLayout::SetItemCollapsed(int32 index, bool collapsed) { - ItemAt(index)->SetVisible(collapsed); + ItemAt(index)->SetVisible(!collapsed); InvalidateLayout(true); } From 9bec480a7d3a4a38ad141e746841386834d98925 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Fri, 31 Jul 2015 11:00:54 -0400 Subject: [PATCH 067/126] PackageInstaller: Fix the build. Previously, wasn't included (which is where environ is), but Axel changed some Be API headers and now it is indirectly included, which broke the build. Fixes #12263. --- src/apps/packageinstaller/PackageItem.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/apps/packageinstaller/PackageItem.cpp b/src/apps/packageinstaller/PackageItem.cpp index e562d636ca..43fa932ba5 100644 --- a/src/apps/packageinstaller/PackageItem.cpp +++ b/src/apps/packageinstaller/PackageItem.cpp @@ -9,6 +9,7 @@ #include "PackageItem.h" +#include #include #include @@ -43,8 +44,6 @@ enum { P_ATTRIBUTE }; -extern const char **environ; - status_t inflate_data(uint8 *in, uint32 inSize, uint8 *out, uint32 outSize) @@ -748,7 +747,7 @@ PackageScript::_RunScript(const char* workingDirectory, const BString& script) int old_in = dup(0); int old_out = dup(1); int old_err = dup(2); - + int filedes[2]; /* Create new pipe FDs as stdin, stdout, stderr */ @@ -763,7 +762,7 @@ PackageScript::_RunScript(const char* workingDirectory, const BString& script) argv[2] = NULL; // "load" command. - fThreadId = load_image(2, argv, environ); + fThreadId = load_image(2, argv, (const char**)environ); int i; for (i = 0; i < 2; i++) From 20ed88dd96c9d58bddbfe3d94cf577e78486c7fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Fri, 31 Jul 2015 20:15:26 +0200 Subject: [PATCH 068/126] GLTeapot: fix gcc2 build. --- src/apps/glteapot/error.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/apps/glteapot/error.h b/src/apps/glteapot/error.h index 26d27aa76b..1e655d36cb 100644 --- a/src/apps/glteapot/error.h +++ b/src/apps/glteapot/error.h @@ -12,6 +12,8 @@ extern void fatalerror(const char *); #define DEBUGGING 1 +#undef assert + #ifdef DEBUGGING #define assert(a) if (!(a)) { \ From 27dec4bb1e8eb4cf067a33d278757bf66c204f1d Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Wed, 29 Jul 2015 22:28:50 -0400 Subject: [PATCH 069/126] user_debugger: Adjust handling of continue request. - B_DEBUG_MESSAGE_CONTINUE_THREAD now checks if the thread in question is in a suspended state rather than waiting on the debug nub port, and if so, handles resuming it automatically. This allows the continue message to be used on the main thread of a team that was freshly created under debug control without the API user having to be cognizant of the distinction. --- src/system/kernel/debug/user_debugger.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/system/kernel/debug/user_debugger.cpp b/src/system/kernel/debug/user_debugger.cpp index a4eb75ebc3..fabfecd62d 100644 --- a/src/system/kernel/debug/user_debugger.cpp +++ b/src/system/kernel/debug/user_debugger.cpp @@ -1,5 +1,6 @@ /* * Copyright 2005-2011, Ingo Weinhold, ingo_weinhold@gmx.de. + * Copyright 2015, Rene Gollent, rene@gollent.com. * Distributed under the terms of the MIT License. */ @@ -1854,6 +1855,18 @@ debug_nub_thread(void *) result = write_port(threadDebugPort, B_DEBUGGED_THREAD_MESSAGE_CONTINUE, &commandMessage, sizeof(commandMessage)); + } else if (result == B_BAD_THREAD_STATE) { + Thread* thread = Thread::GetAndLock(threadID); + if (thread == NULL) + break; + + BReference threadReference(thread, true); + ThreadLocker threadLocker(thread, true); + if (thread->state == B_THREAD_SUSPENDED) { + threadLocker.Unlock(); + resume_thread(threadID); + break; + } } break; From 5e95945071412193742fae1bb8023f6d4806e735 Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Wed, 29 Jul 2015 22:31:08 -0400 Subject: [PATCH 070/126] Debugger: Cleanup. ThreadHandler: - Simplify SetBreakpointAndRun() to always use the debugger interface to continue execution, since the latter is now intelligent enough to determine how to handle that in all cases. Adjust callers accordingly. --- src/apps/debugger/controllers/TeamDebugger.cpp | 2 +- src/apps/debugger/controllers/ThreadHandler.cpp | 13 +++---------- src/apps/debugger/controllers/ThreadHandler.h | 3 +-- 3 files changed, 5 insertions(+), 13 deletions(-) diff --git a/src/apps/debugger/controllers/TeamDebugger.cpp b/src/apps/debugger/controllers/TeamDebugger.cpp index 5bea9ee558..352b7d11f0 100644 --- a/src/apps/debugger/controllers/TeamDebugger.cpp +++ b/src/apps/debugger/controllers/TeamDebugger.cpp @@ -1962,7 +1962,7 @@ TeamDebugger::_HandleImageDebugInfoChanged(image_id imageID) SymbolInfo symbolInfo; if (fDebuggerInterface->GetSymbolInfo(fTeam->ID(), image->ID(), "main", B_SYMBOL_TYPE_TEXT, symbolInfo) == B_OK) { - handler->SetBreakpointAndRun(symbolInfo.Address(), false); + handler->SetBreakpointAndRun(symbolInfo.Address()); } } else { locker.Unlock(); diff --git a/src/apps/debugger/controllers/ThreadHandler.cpp b/src/apps/debugger/controllers/ThreadHandler.cpp index 361f6575c5..999a6b0d12 100644 --- a/src/apps/debugger/controllers/ThreadHandler.cpp +++ b/src/apps/debugger/controllers/ThreadHandler.cpp @@ -119,22 +119,15 @@ ThreadHandler::Init() status_t -ThreadHandler::SetBreakpointAndRun(target_addr_t address, bool initialStart) +ThreadHandler::SetBreakpointAndRun(target_addr_t address) { status_t error = _InstallTemporaryBreakpoint(address); if (error != B_OK) return error; fPreviousInstructionPointer = 0; - // when the program is first run, the initial thread is not yet under - // the control of the debug nub, so it needs to be resumed rather than - // continued. - if (initialStart) { - resume_thread(ThreadID()); - // TODO: This should probably better be a DebuggerInterface method, - // but this method is used only when debugging a local team anyway. - } else - fDebuggerInterface->ContinueThread(ThreadID()); + fDebuggerInterface->ContinueThread(ThreadID()); + // Pretend "step out" mode, so that the temporary breakpoint hit will not // be ignored. fStepMode = STEP_OUT; diff --git a/src/apps/debugger/controllers/ThreadHandler.h b/src/apps/debugger/controllers/ThreadHandler.h index b0b4cdd7c1..432eac1e9f 100644 --- a/src/apps/debugger/controllers/ThreadHandler.h +++ b/src/apps/debugger/controllers/ThreadHandler.h @@ -39,8 +39,7 @@ public: thread_id ThreadID() const { return fThread->ID(); } Thread* GetThread() const { return fThread; } - status_t SetBreakpointAndRun(target_addr_t address, - bool initialStart = true); + status_t SetBreakpointAndRun(target_addr_t address); // team lock held // All Handle*() methods are invoked in team debugger thread, From 0bce02f1de465debb06f494a82b263b216f3a4f2 Mon Sep 17 00:00:00 2001 From: autonielx Date: Sat, 1 Aug 2015 06:38:01 +0200 Subject: [PATCH 071/126] Update translations from Pootle --- data/catalogs/add-ons/network_settings/ftpd/fr.catkeys | 2 +- .../add-ons/network_settings/telnetd/fr.catkeys | 2 +- data/catalogs/apps/mail/de.catkeys | 3 ++- data/catalogs/apps/mail/fr.catkeys | 3 ++- data/catalogs/apps/mail/ja.catkeys | 3 ++- data/catalogs/preferences/media/be.catkeys | 9 +-------- data/catalogs/preferences/media/de.catkeys | 10 +--------- data/catalogs/preferences/media/eo.catkeys | 9 +-------- data/catalogs/preferences/media/es.catkeys | 9 +-------- data/catalogs/preferences/media/fi.catkeys | 10 +--------- data/catalogs/preferences/media/fr.catkeys | 10 +--------- data/catalogs/preferences/media/hr.catkeys | 4 +--- data/catalogs/preferences/media/hu.catkeys | 10 +--------- data/catalogs/preferences/media/it.catkeys | 10 +--------- data/catalogs/preferences/media/ja.catkeys | 10 +--------- data/catalogs/preferences/media/lt.catkeys | 9 +-------- data/catalogs/preferences/media/nl.catkeys | 9 +-------- data/catalogs/preferences/media/pl.catkeys | 10 +--------- data/catalogs/preferences/media/pt_BR.catkeys | 9 +-------- data/catalogs/preferences/media/ro.catkeys | 8 +------- data/catalogs/preferences/media/ru.catkeys | 10 +--------- data/catalogs/preferences/media/sk.catkeys | 9 +-------- data/catalogs/preferences/media/sv.catkeys | 10 +--------- data/catalogs/preferences/media/uk.catkeys | 9 +-------- data/catalogs/preferences/media/zh_Hans.catkeys | 10 +--------- 25 files changed, 28 insertions(+), 169 deletions(-) diff --git a/data/catalogs/add-ons/network_settings/ftpd/fr.catkeys b/data/catalogs/add-ons/network_settings/ftpd/fr.catkeys index f952bce761..9b89070ff0 100644 --- a/data/catalogs/add-ons/network_settings/ftpd/fr.catkeys +++ b/data/catalogs/add-ons/network_settings/ftpd/fr.catkeys @@ -1,3 +1,3 @@ 1 french x-vnd.Haiku-FTPService 4086152171 FTP server FTPServiceAddOn Serveur FTP -The FTP server allows you to remotely access the files on your machine using the FTP protocol.\n\nPlease note that it is an insecure and unencrypted connection. FTPServiceAddOn Le serveur FTP vous permet d'accéder à distance aux fichiers de votre machine à travers le protocole FTP.\n\nVeuillez noter que la connexion n'est ni sécurisée et ni chiffrée. +The FTP server allows you to remotely access the files on your machine using the FTP protocol.\n\nPlease note that it is an insecure and unencrypted connection. FTPServiceAddOn Le serveur FTP vous permet d'accéder à distance aux fichiers de votre machine à travers le protocole FTP.\n\nVeuillez noter que la connexion n'est ni sécurisée ni chiffrée. diff --git a/data/catalogs/add-ons/network_settings/telnetd/fr.catkeys b/data/catalogs/add-ons/network_settings/telnetd/fr.catkeys index d12cb47c05..fd077d6735 100644 --- a/data/catalogs/add-ons/network_settings/telnetd/fr.catkeys +++ b/data/catalogs/add-ons/network_settings/telnetd/fr.catkeys @@ -1,3 +1,3 @@ 1 french x-vnd.Haiku-TelnetService 1209067113 Telnet server TelnetServiceAddOn Serveur Telnet -The Telnet server allows you to remotely access your machine with a terminal session using the telnet protocol.\n\nPlease note that it is an insecure and unencrypted connection. TelnetServiceAddOn Le serveur Telnet vous permet d'accéder à distance à votre machine avec une session de terminal à travers le protocole Telnet.\n\nVeuillez noter que la connexion n'est ni sécurisée et ni chiffrée. +The Telnet server allows you to remotely access your machine with a terminal session using the telnet protocol.\n\nPlease note that it is an insecure and unencrypted connection. TelnetServiceAddOn Le serveur Telnet vous permet d'accéder à distance à votre machine avec une session de terminal à travers le protocole Telnet.\n\nVeuillez noter que la connexion n'est ni sécurisée ni chiffrée. diff --git a/data/catalogs/apps/mail/de.catkeys b/data/catalogs/apps/mail/de.catkeys index 3c64859f54..a9d4c034ee 100644 --- a/data/catalogs/apps/mail/de.catkeys +++ b/data/catalogs/apps/mail/de.catkeys @@ -1,4 +1,4 @@ -1 german x-vnd.Be-MAIL 233997769 +1 german x-vnd.Be-MAIL 1310033600 View Mail Ansicht %d - Date Mail %d - Datum Attach attributes: Mail Attribute von Anhängen: @@ -146,6 +146,7 @@ Open attachment Mail Anhang öffnen sent B_USER_DIRECTORY/mail/sent Gesendet (Date unavailable) Mail (Datum nicht verfügbar) Put your favorite e-mail queries and query templates in this folder. Mail In diesem Ordner können E-Mail-Queries und Query-Vorlagen abgelegt werden. +Spam Mail Spam Reply Mail Antworten From: Mail Von: Couldn't open this signature. Sorry. Mail Diese Signatur konnte leider nicht geöffnet werden. diff --git a/data/catalogs/apps/mail/fr.catkeys b/data/catalogs/apps/mail/fr.catkeys index a97d98a7b9..ca0025735e 100644 --- a/data/catalogs/apps/mail/fr.catkeys +++ b/data/catalogs/apps/mail/fr.catkeys @@ -1,4 +1,4 @@ -1 french x-vnd.Be-MAIL 233997769 +1 french x-vnd.Be-MAIL 1310033600 View Mail Vue %d - Date Mail %d - Date Attach attributes: Mail Attributs du fichier joint : @@ -146,6 +146,7 @@ Open attachment Mail Ouvrir le fichier joint sent B_USER_DIRECTORY/mail/sent envoyés (Date unavailable) Mail (Date non disponible) Put your favorite e-mail queries and query templates in this folder. Mail Mettez vos requêtes d’e-mail et vos modèles de requêtes dans ce dossier. +Spam Mail Courrier indésirable Reply Mail Répondre From: Mail De : Couldn't open this signature. Sorry. Mail Impossible d’ouvrir cette signature. Désolé. diff --git a/data/catalogs/apps/mail/ja.catkeys b/data/catalogs/apps/mail/ja.catkeys index 845b919733..782441d237 100644 --- a/data/catalogs/apps/mail/ja.catkeys +++ b/data/catalogs/apps/mail/ja.catkeys @@ -1,4 +1,4 @@ -1 japanese x-vnd.Be-MAIL 233997769 +1 japanese x-vnd.Be-MAIL 1310033600 View Mail 表示 %d - Date Mail %d - 日付 Attach attributes: Mail 属性の添付: @@ -146,6 +146,7 @@ Open attachment Mail 添付ファイルを開く sent B_USER_DIRECTORY/mail/sent 送信済みメール (Date unavailable) Mail (日付は利用できません) Put your favorite e-mail queries and query templates in this folder. Mail お気に入りの電子メールクエリーとクエリテンプレートをこのフォルダーに入れてください。 +Spam Mail スパム Reply Mail 返信 From: Mail 差出人: Couldn't open this signature. Sorry. Mail この署名を開くことはできませんでした。 diff --git a/data/catalogs/preferences/media/be.catkeys b/data/catalogs/preferences/media/be.catkeys index 5e053bea58..b1a1d0a92c 100644 --- a/data/catalogs/preferences/media/be.catkeys +++ b/data/catalogs/preferences/media/be.catkeys @@ -1,21 +1,14 @@ -1 belarusian x-vnd.Haiku-Media 4081089471 +1 belarusian x-vnd.Haiku-Media 2605101563 Couldn't add volume control in Deskbar: %s\n Media views Не ўдалося дадаць элемент кіравання гучнасцю у Deskbar: %s\n -Ready for use… Media Window Гатовы да карыстання… Video input: Media views Відэа ўваход: -Waiting for media_server to quit. Media Window Чакаецца выключэнне media_server. -Cleaning up. Media Window Прыборка. Defaults Media views Прадвызначаныя -Stopping media server… Media Window Спыненне медыясервера… Quit Media Window Выйсці -Starting media server… Media Window Запускаецца медыясервер… -Done shutting down. Media Window Медыясервер спынены. Video settings Media Window Наладкі відэа Video output: Media views Відэа Выхад: Could not connect to the media server.\nWould you like to start it ? Media Window Немагчыма далучыцца да медыясервера.\n Жадаеце яго стартаваць ? Restart media services Media views Перазапусціць медыясервер Couldn't remove volume control in Deskbar: %s\n Media views Не ўдалося выдаліць элемент кіравання гучнасцю з Deskbar: %s\n Media System name Медыя -Telling media_addon_server to quit. Media Window Адпраўка каманды выхаду да media_addon_server. Audio mixer Media Window Аўдыё мікшар This hardware has no controls. Media Window Гэтая апаратура не мае элементаў кіравання. Audio output: Media views Гукавы выхад: diff --git a/data/catalogs/preferences/media/de.catkeys b/data/catalogs/preferences/media/de.catkeys index 2e8355a273..d1a3610256 100644 --- a/data/catalogs/preferences/media/de.catkeys +++ b/data/catalogs/preferences/media/de.catkeys @@ -1,23 +1,15 @@ -1 german x-vnd.Haiku-Media 2163090586 +1 german x-vnd.Haiku-Media 862832618 Couldn't add volume control in Deskbar: %s\n Media views Die Lautstärkeregelung konnte nicht in der Deskbar installiert werden: %s\n -Ready for use… Media Window Einsatzbereit… Video input: Media views Video-Eingang: -Waiting for media_server to quit. Media Window Es wird auf die Beendigung des media_servers gewartet. -Cleaning up. Media Window Aufräumen. Defaults Media views Standardwerte MIDI Settings Media Window MIDI-Einstellungen -Stopping media server… Media Window Mediaserver wird angehalten… Quit Media Window Beenden -Starting media server… Media Window Mediaserver wird gestartet… -Done shutting down. Media Window Herunterfahren beendet. Video settings Media Window Video-Einstellungen Video output: Media views Video-Ausgang: Could not connect to the media server.\nWould you like to start it ? Media Window Verbindung mit dem Mediaserver fehlgeschlagen.\nSoll er gestartet werden? Restart media services Media views Mediadienste neustarten Couldn't remove volume control in Deskbar: %s\n Media views Die Lautstärkeregelung konnte nicht aus der Deskbar entfernt werden: %s\n Media System name Audio & Video -Telling media_addon_server to quit. Media Window Media_addon_server wird aufgefordert sich zu beenden. -Media Service Media Window Mediadienste Audio mixer Media Window Audiomixer This hardware has no controls. Media Window Dieses Gerät hat keine Einstellmöglichkeiten. Audio output: Media views Audio-Ausgang: diff --git a/data/catalogs/preferences/media/eo.catkeys b/data/catalogs/preferences/media/eo.catkeys index fd92e9e3fd..b7214462dd 100644 --- a/data/catalogs/preferences/media/eo.catkeys +++ b/data/catalogs/preferences/media/eo.catkeys @@ -1,17 +1,10 @@ -1 esperanto x-vnd.Haiku-Media 3056231296 -Ready for use… Media Window Preta je uziĝi… +1 esperanto x-vnd.Haiku-Media 1580243388 Video input: Media views Videa enigo: -Waiting for media_server to quit. Media Window Atendo de la fino de la plurmedia servilo. -Cleaning up. Media Window Purigante. Defaults Media views Aprioraj -Stopping media server… Media Window Halto de la plurmedia servilo… Quit Media Window Eliri -Starting media server… Media Window Lanĉo de plurmedia servilo… -Done shutting down. Media Window Haltado kompleta. Video output: Media views Videa eligo: Could not connect to the media server.\nWould you like to start it ? Media Window Ne eblas konekti al la plurmedia servilo.\nĈu vi volas lanĉi ĝin? Restart media services Media views Relanĉu la plurmediaj servoj -Telling media_addon_server to quit. Media Window Ordonante, ke la plurmedia aldona servilo finu. This hardware has no controls. Media Window Ĉi-tiu aparato ne havas agordilojn. Audio output: Media views Sona eligo: Audio settings Media Window Sonaj agordoj diff --git a/data/catalogs/preferences/media/es.catkeys b/data/catalogs/preferences/media/es.catkeys index f2c95029c4..875c88c99a 100644 --- a/data/catalogs/preferences/media/es.catkeys +++ b/data/catalogs/preferences/media/es.catkeys @@ -1,21 +1,14 @@ -1 spanish; castilian x-vnd.Haiku-Media 4081089471 +1 spanish; castilian x-vnd.Haiku-Media 2605101563 Couldn't add volume control in Deskbar: %s\n Media views No se ha podido agregar el control de volumen en el Deskbar: %s\n -Ready for use… Media Window Listo para usar... Video input: Media views Entrada de video: -Waiting for media_server to quit. Media Window Esperando que cierre el media_server. Para salir -Cleaning up. Media Window Limpiando. Defaults Media views Predeterminados -Stopping media server… Media Window Deteniendo el servidor de media ... Quit Media Window Salir -Starting media server… Media Window Iniciando el servidor de media… -Done shutting down. Media Window Apagado. Video settings Media Window Configuración de video Video output: Media views Salida de video: Could not connect to the media server.\nWould you like to start it ? Media Window No se puede conectar con el servidor de media.\n¿Desea iniciarlo? Restart media services Media views Reiniciar los servicios multimedia Couldn't remove volume control in Deskbar: %s\n Media views No se ha podido remover el control de volumen en el Deskbar: %s\n Media System name Media -Telling media_addon_server to quit. Media Window Solicitando al media_addon_server que termine. Audio mixer Media Window Mezclador de audio This hardware has no controls. Media Window Este dispositivo no tiene controles. Audio output: Media views Salida de audio: diff --git a/data/catalogs/preferences/media/fi.catkeys b/data/catalogs/preferences/media/fi.catkeys index a9e2eb1b7d..5e202b00f0 100644 --- a/data/catalogs/preferences/media/fi.catkeys +++ b/data/catalogs/preferences/media/fi.catkeys @@ -1,23 +1,15 @@ -1 finnish x-vnd.Haiku-Media 2163090586 +1 finnish x-vnd.Haiku-Media 862832618 Couldn't add volume control in Deskbar: %s\n Media views Voimakkuussäätimen lisääminen Työpöytäpalkkiin epäonnistui: %s\n -Ready for use… Media Window Valmis käytettäväksi… Video input: Media views Videosyöte: -Waiting for media_server to quit. Media Window Odotetaan media_server-palvelimen lopettamista. -Cleaning up. Media Window Tyhjennetään. Defaults Media views Oletukset MIDI Settings Media Window MIDI-asetukset -Stopping media server… Media Window Pysäytetään mediapalvelin… Quit Media Window Lopeta -Starting media server… Media Window Käynnistetään mediapalvelin… -Done shutting down. Media Window Sulkeminen toteutettu. Video settings Media Window Videoasetukset Video output: Media views Videotuloste: Could not connect to the media server.\nWould you like to start it ? Media Window Yhdistäminen mediapalvelimeen epäonnistui.\nHaluaisitko käynnistää sen nyt ? Restart media services Media views Käynnistä mediapalvelut uudelleen Couldn't remove volume control in Deskbar: %s\n Media views Voimakkuussäätimen poistaminen Työpöytäpalkista epäonnistui: %s\n Media System name Media-asetukset -Telling media_addon_server to quit. Media Window Kehoitetaan media_addon_server-palvelinta lopettamaan. -Media Service Media Window Media-palvelu Audio mixer Media Window Äänisekoitin This hardware has no controls. Media Window Tässä laitteistossa ei ole ohjaimia. Audio output: Media views Äänituloste: diff --git a/data/catalogs/preferences/media/fr.catkeys b/data/catalogs/preferences/media/fr.catkeys index 7168d694eb..0871d6f3a7 100644 --- a/data/catalogs/preferences/media/fr.catkeys +++ b/data/catalogs/preferences/media/fr.catkeys @@ -1,23 +1,15 @@ -1 french x-vnd.Haiku-Media 2163090586 +1 french x-vnd.Haiku-Media 862832618 Couldn't add volume control in Deskbar: %s\n Media views Impossible d’insérer le contrôle du volume dans la Deskbar : %s\n -Ready for use… Media Window Prêt à servir… Video input: Media views Entrée vidéo : -Waiting for media_server to quit. Media Window Attente de la fin du serveur de médias. -Cleaning up. Media Window Nettoyage. Defaults Media views Par défaut MIDI Settings Media Window Réglages MIDI -Stopping media server… Media Window Arrêt du serveur de médias… Quit Media Window Quitter -Starting media server… Media Window Démarrage du serveur de médias… -Done shutting down. Media Window Arrêt terminé. Video settings Media Window Réglages vidéo Video output: Media views Sortie vidéo : Could not connect to the media server.\nWould you like to start it ? Media Window Impossible de se connecter au serveur de médias.\nVoulez-vous le démarrer ? Restart media services Media views Redémarrer les services médias Couldn't remove volume control in Deskbar: %s\n Media views Impossible de retirer le contrôle du volume de la Deskbar : %s\n Media System name Média -Telling media_addon_server to quit. Media Window Demande au serveur des extensions de médias de quitter. -Media Service Media Window Service Media Audio mixer Media Window Mélangeur audio This hardware has no controls. Media Window Ce matériel n’a pas de contrôles. Audio output: Media views Sortie audio : diff --git a/data/catalogs/preferences/media/hr.catkeys b/data/catalogs/preferences/media/hr.catkeys index b7c19017d0..8a0fb0359b 100644 --- a/data/catalogs/preferences/media/hr.catkeys +++ b/data/catalogs/preferences/media/hr.catkeys @@ -1,7 +1,5 @@ -1 croatian x-vnd.Haiku-Media 3028864262 -Ready for use… Media Window Spremno za upotrebu... +1 croatian x-vnd.Haiku-Media 1991151343 Video input: Media views Video ulaz: -Cleaning up. Media Window Čistim. Defaults Media views Zadano Quit Media Window Završi Video settings Media Window Video postavke diff --git a/data/catalogs/preferences/media/hu.catkeys b/data/catalogs/preferences/media/hu.catkeys index 67e482761a..26323db528 100644 --- a/data/catalogs/preferences/media/hu.catkeys +++ b/data/catalogs/preferences/media/hu.catkeys @@ -1,23 +1,15 @@ -1 hungarian x-vnd.Haiku-Media 2163090586 +1 hungarian x-vnd.Haiku-Media 862832618 Couldn't add volume control in Deskbar: %s\n Media views Nem lehetett hangerőszabályzót helyezni az Asztalsávra: %s\n -Ready for use… Media Window Használatra kész… Video input: Media views Képbemenet: -Waiting for media_server to quit. Media Window Várakozás a Médiakiszolgáló kilépésére. -Cleaning up. Media Window Rendrakás. Defaults Media views Alapértelmezések MIDI Settings Media Window MIDI beállítások -Stopping media server… Media Window Médiakiszolgáló leállítása… Quit Media Window Kilépés -Starting media server… Media Window Médiakiszolgáló elindítása… -Done shutting down. Media Window Leállítva. Video settings Media Window Videóbeállítások Video output: Media views Képkimenet: Could not connect to the media server.\nWould you like to start it ? Media Window Nem lehet csatlakozni a Médiakiszolgálóhoz.\nEl szeretné indítani most? Restart media services Media views Médiaszolgáltatások újraindítása Couldn't remove volume control in Deskbar: %s\n Media views Nem lehetett a hangerőszabályzót eltávolítani az Asztalsávról: %s\n Media System name Média -Telling media_addon_server to quit. Media Window A Médiabővítmény-kiszolgáló leállítása. -Media Service Media Window Média szolgáltatás Audio mixer Media Window Hangerőszabályzó This hardware has no controls. Media Window Ennek az eszköznek nincsenek vezérlői. Audio output: Media views Hangkimenet: diff --git a/data/catalogs/preferences/media/it.catkeys b/data/catalogs/preferences/media/it.catkeys index f3ef6c1033..44fcd11346 100644 --- a/data/catalogs/preferences/media/it.catkeys +++ b/data/catalogs/preferences/media/it.catkeys @@ -1,23 +1,15 @@ -1 italian x-vnd.Haiku-Media 2163090586 +1 italian x-vnd.Haiku-Media 862832618 Couldn't add volume control in Deskbar: %s\n Media views Non è stato possibile aggiungere il controllo del volume nella Deskbar: %s\n -Ready for use… Media Window Pronto all'uso… Video input: Media views Ingresso Video: -Waiting for media_server to quit. Media Window In attesa della chiusura di media_server. -Cleaning up. Media Window Pulizia in corso. Defaults Media views Predefiniti MIDI Settings Media Window Impostazioni MIDI -Stopping media server… Media Window Arresto di media server in corso… Quit Media Window Esci -Starting media server… Media Window Avvio di media server in corso… -Done shutting down. Media Window Spegnimento effettuato. Video settings Media Window Impostazioni video Video output: Media views Uscita Video: Could not connect to the media server.\nWould you like to start it ? Media Window Impossibile connettersi al media server.\nAvviarlo? Restart media services Media views Riavvio servizi media Couldn't remove volume control in Deskbar: %s\n Media views Non è stato possibile rimuovere il controllo del volume nella Deskbar: %s\n Media System name Media -Telling media_addon_server to quit. Media Window Inviata richiesta di chiusura a media_addon_server. -Media Service Media Window Servizio Media Audio mixer Media Window Mixer audio This hardware has no controls. Media Window Questo hardware non possiede controlli. Audio output: Media views Uscite Audio: diff --git a/data/catalogs/preferences/media/ja.catkeys b/data/catalogs/preferences/media/ja.catkeys index fd9f9a45f4..1372b211f4 100644 --- a/data/catalogs/preferences/media/ja.catkeys +++ b/data/catalogs/preferences/media/ja.catkeys @@ -1,23 +1,15 @@ -1 japanese x-vnd.Haiku-Media 2163090586 +1 japanese x-vnd.Haiku-Media 862832618 Couldn't add volume control in Deskbar: %s\n Media views 音量コントロールを Deskbar に追加できませんでした: %s\n -Ready for use… Media Window 使用可能… Video input: Media views ビデオ入力: -Waiting for media_server to quit. Media Window media_server の終了を待機中… -Cleaning up. Media Window 整理中… Defaults Media views デフォルト MIDI Settings Media Window MIDI 設定 -Stopping media server… Media Window メディアサーバーを終了しています… Quit Media Window 終了 -Starting media server… Media Window メディアサーバーを再起動中… -Done shutting down. Media Window シャットダウン完了。 Video settings Media Window ビデオ設定 Video output: Media views ビデオ出力: Could not connect to the media server.\nWould you like to start it ? Media Window メディアサーバーに接続できませんでした。\nメディアサーバーを起動しますか? Restart media services Media views メディアサービスを再起動 Couldn't remove volume control in Deskbar: %s\n Media views 音量コントロールを Deskbar から削除できませんでした: %s\n Media System name メディア -Telling media_addon_server to quit. Media Window media_addon_server を終了させようとしています。 -Media Service Media Window メディアサービス Audio mixer Media Window オーディオミキサー This hardware has no controls. Media Window このハードウェアにはコントロールがありません。 Audio output: Media views オーディオ出力: diff --git a/data/catalogs/preferences/media/lt.catkeys b/data/catalogs/preferences/media/lt.catkeys index 5badf8a1d9..84f445ef21 100644 --- a/data/catalogs/preferences/media/lt.catkeys +++ b/data/catalogs/preferences/media/lt.catkeys @@ -1,21 +1,14 @@ -1 lithuanian x-vnd.Haiku-Media 4081089471 +1 lithuanian x-vnd.Haiku-Media 2605101563 Couldn't add volume control in Deskbar: %s\n Media views Nepavyko garso valdiklio patalpinti pranešimų srityje: %s\n -Ready for use… Media Window Pasirengta naudojimui… Video input: Media views Vaizdo įvestis: -Waiting for media_server to quit. Media Window Laikiama, kol įvairialypės terpės tarnyba (media_server) baigs darbą. -Cleaning up. Media Window Apsitvarkoma. Defaults Media views Numatytosios reikšmės -Stopping media server… Media Window Stabdoma įvairialypės terpės tarnyba… Quit Media Window Baigti darbą -Starting media server… Media Window Paleidžiama įvairialypės terpės tarnyba… -Done shutting down. Media Window Išjungta. Video settings Media Window Vaizdo nuostatos Video output: Media views Vaizdo išvestis: Could not connect to the media server.\nWould you like to start it ? Media Window Nepavyko prisijungti prie įvairialypės terpės tarnybos.\nAr norite, kad ji būtų paleista? Restart media services Media views Perleisti įvairialypės terpės tarnybas Couldn't remove volume control in Deskbar: %s\n Media views Nepavyko garso valdiklio pašalinti iš pranešimų srities: %s\n Media System name Įvairialypė terpė -Telling media_addon_server to quit. Media Window Išjungiama įvairialypės terpės papildinių tarnyba (media_addon_server). Audio mixer Media Window Garsų maišiklis This hardware has no controls. Media Window Ši aparatūra nederinama. Audio output: Media views Garso išvestis: diff --git a/data/catalogs/preferences/media/nl.catkeys b/data/catalogs/preferences/media/nl.catkeys index c763b8a59c..e5d64137df 100644 --- a/data/catalogs/preferences/media/nl.catkeys +++ b/data/catalogs/preferences/media/nl.catkeys @@ -1,21 +1,14 @@ -1 dutch; flemish x-vnd.Haiku-Media 4081089471 +1 dutch; flemish x-vnd.Haiku-Media 2605101563 Couldn't add volume control in Deskbar: %s\n Media views De volumebesturing kon niet aan Deskbar worden toegevoegd: %s\n -Ready for use… Media Window Klaar voor gebruik... Video input: Media views Video-invoer: -Waiting for media_server to quit. Media Window Wachten op afsluiting van media_server. -Cleaning up. Media Window Bezig met opschonen. Defaults Media views Standaardwaarden -Stopping media server… Media Window Mediaserver stoppen… Quit Media Window Afsluiten -Starting media server… Media Window Mediaserver starten… -Done shutting down. Media Window Uitzetten voltooid. Video settings Media Window Video-instellingen Video output: Media views Video-output: Could not connect to the media server.\nWould you like to start it ? Media Window Kon geen verbinding met mediaserver maken.\nWilt u hem starten? Restart media services Media views Mediaservices herstarten Couldn't remove volume control in Deskbar: %s\n Media views De volumebesturing kon niet van de Deskbar verwijderd worden: %s\n Media System name Media -Telling media_addon_server to quit. Media Window media_addon_server laten afsluiten. Audio mixer Media Window Audiomixer This hardware has no controls. Media Window Deze hardware heeft geen bedieningselementen. Audio output: Media views Audio-output: diff --git a/data/catalogs/preferences/media/pl.catkeys b/data/catalogs/preferences/media/pl.catkeys index 96b5ef1c17..fc91664c6f 100644 --- a/data/catalogs/preferences/media/pl.catkeys +++ b/data/catalogs/preferences/media/pl.catkeys @@ -1,23 +1,15 @@ -1 polish x-vnd.Haiku-Media 2163090586 +1 polish x-vnd.Haiku-Media 862832618 Couldn't add volume control in Deskbar: %s\n Media views Nie można dodać sterowania głośnością w Deskbarze: %s\n -Ready for use… Media Window Gotowe do użycia… Video input: Media views Wejście wideo: -Waiting for media_server to quit. Media Window Oczekiwanie na zakończenie działania media_server. -Cleaning up. Media Window Czyszczenie. Defaults Media views Przywróć domyślne MIDI Settings Media Window Ustawienia MIDI -Stopping media server… Media Window Zatrzymywanie serwera multimediów… Quit Media Window Zakończ -Starting media server… Media Window Uruchamianie serwera multimediów… -Done shutting down. Media Window Skończono zamykanie. Video settings Media Window Ustawienia wideo Video output: Media views Wyjście wideo: Could not connect to the media server.\nWould you like to start it ? Media Window Nie można połączyć się z serwerem multimediów.\nUruchomić go ponownie? Restart media services Media views Ponowne uruchomienie usług multimedialnych Couldn't remove volume control in Deskbar: %s\n Media views Nie można usunąć sterowania głośnością w Deskbarze: %s\n Media System name Nośnik -Telling media_addon_server to quit. Media Window Powiadamianie media_addon_server, by się zakończył. -Media Service Media Window Usługa mediów Audio mixer Media Window Mikser audio This hardware has no controls. Media Window Ten sprzęt nie ma żadnych ustawień. Audio output: Media views Wyjście dźwięku: diff --git a/data/catalogs/preferences/media/pt_BR.catkeys b/data/catalogs/preferences/media/pt_BR.catkeys index 6a822261a5..76d1d9741b 100644 --- a/data/catalogs/preferences/media/pt_BR.catkeys +++ b/data/catalogs/preferences/media/pt_BR.catkeys @@ -1,21 +1,14 @@ -1 portuguese (brazil) x-vnd.Haiku-Media 4081089471 +1 portuguese (brazil) x-vnd.Haiku-Media 2605101563 Couldn't add volume control in Deskbar: %s\n Media views Não foi possível adicionar controle de volume ao Deskbar: %s\n -Ready for use… Media Window Pronto para usar... Video input: Media views Entrada de vídeo: -Waiting for media_server to quit. Media Window Esperando que o servidor de mídia termine. -Cleaning up. Media Window Limpando. Defaults Media views Padrões -Stopping media server… Media Window Parando o servidor de mídia... Quit Media Window Sair -Starting media server… Media Window Iniciando o servidor multimídia... -Done shutting down. Media Window Desligado. Video settings Media Window Definições de vídeo Video output: Media views Saída de vídeo: Could not connect to the media server.\nWould you like to start it ? Media Window Não foi possível conectar ao servidor de mídia.\nVocê gostaria de iniciá-lo? Restart media services Media views Reiniciar serviços multimídia Couldn't remove volume control in Deskbar: %s\n Media views Não foi possível remover o controle de volume no Deskbar: %s\n Media System name Mídia -Telling media_addon_server to quit. Media Window Falando para o servidor adicional de media para terminar. Audio mixer Media Window Misturador de áudio This hardware has no controls. Media Window Este hardware não tem controles. Audio output: Media views Saída de áudio: diff --git a/data/catalogs/preferences/media/ro.catkeys b/data/catalogs/preferences/media/ro.catkeys index 14f2a66522..8e52f08695 100644 --- a/data/catalogs/preferences/media/ro.catkeys +++ b/data/catalogs/preferences/media/ro.catkeys @@ -1,21 +1,15 @@ -1 romanian x-vnd.Haiku-Media 1716333833 +1 romanian x-vnd.Haiku-Media 862832618 Couldn't add volume control in Deskbar: %s\n Media views Nu s-a putut adăuga controlul de volum pe bara de desktop: %s\n -Ready for use… Media Window Gata de utilizat... Video input: Media views Intrare video: -Waiting for media_server to quit. Media Window Se așteaptă ca media_server să se închidă. -Cleaning up. Media Window Se curăță. Defaults Media views Implicite MIDI Settings Media Window Configurări MIDI -Stopping media server… Media Window Se oprește serverul media... Quit Media Window Părăsește -Starting media server… Media Window Se pornește serverul media... Video settings Media Window Configurări video Video output: Media views Ieșire video: Could not connect to the media server.\nWould you like to start it ? Media Window Nu s-a putut conecta la serverul media.\nDoriți să îl porniți? Restart media services Media views Restartează servicii media Couldn't remove volume control in Deskbar: %s\n Media views Nu s-a putut elimina controlul de volum de pe bara de desktop: %s\n Media System name Media -Telling media_addon_server to quit. Media Window Se transmite lui media_addon_server să se închidă. Audio mixer Media Window Mixaj audio This hardware has no controls. Media Window Acest hardware nu are controale. Audio output: Media views Ieșire audio: diff --git a/data/catalogs/preferences/media/ru.catkeys b/data/catalogs/preferences/media/ru.catkeys index 69b70e5f9c..83690f5995 100644 --- a/data/catalogs/preferences/media/ru.catkeys +++ b/data/catalogs/preferences/media/ru.catkeys @@ -1,23 +1,15 @@ -1 russian x-vnd.Haiku-Media 2163090586 +1 russian x-vnd.Haiku-Media 862832618 Couldn't add volume control in Deskbar: %s\n Media views Не удалось добавить регулятор громкости в Deskbar: %s\n -Ready for use… Media Window Готов к использованию… Video input: Media views Видео вход: -Waiting for media_server to quit. Media Window Ожидание выключения медиасервера. -Cleaning up. Media Window Очистка. Defaults Media views По умолчанию MIDI Settings Media Window Настройки MIDI -Stopping media server… Media Window Остановка медиасервера… Quit Media Window Выход -Starting media server… Media Window Запуск медиасервера… -Done shutting down. Media Window Остановка завершена. Video settings Media Window Настройки видео Video output: Media views Видео выход: Could not connect to the media server.\nWould you like to start it ? Media Window Невозможно подключиться к медиа серверу.\nХотите запустить его? Restart media services Media views Перезапустить медиа службы Couldn't remove volume control in Deskbar: %s\n Media views Не удалось удалить регулятор громкости из Deskbar: %s\n Media System name Медиа -Telling media_addon_server to quit. Media Window Запрос завершения работы media_addon_server. -Media Service Media Window Медиасервер Audio mixer Media Window Микшер This hardware has no controls. Media Window Это оборудование не имеет параметров настройки. Audio output: Media views Аудио выход: diff --git a/data/catalogs/preferences/media/sk.catkeys b/data/catalogs/preferences/media/sk.catkeys index d2d6264569..a27379cf2a 100644 --- a/data/catalogs/preferences/media/sk.catkeys +++ b/data/catalogs/preferences/media/sk.catkeys @@ -1,21 +1,14 @@ -1 slovak x-vnd.Haiku-Media 4081089471 +1 slovak x-vnd.Haiku-Media 2605101563 Couldn't add volume control in Deskbar: %s\n Media views Nepodarilo sa pridať ovládanie hlasitosti do Panela: %s\n -Ready for use… Media Window Pripravený na použitie… Video input: Media views Video vstup: -Waiting for media_server to quit. Media Window Čaká sa na ukončenie media_server. -Cleaning up. Media Window Prebieha upratovanie. Defaults Media views Predvolené -Stopping media server… Media Window Zastavuje sa multimediálny server… Quit Media Window Ukončiť -Starting media server… Media Window Spúšťa sa multimediálny server… -Done shutting down. Media Window Vypínanie dokončené. Video settings Media Window Video nastavenia Video output: Media views Video výstup: Could not connect to the media server.\nWould you like to start it ? Media Window Nepodarilo sa pripojiť k multimediálnemu serveru.\nChcete ho spustiť? Restart media services Media views Reštartovať multimediálne služby Couldn't remove volume control in Deskbar: %s\n Media views Nepodarilo sa odstrániť ovládanie hlasitosti z Panela: %s\n Media System name Multimédiá -Telling media_addon_server to quit. Media Window Poslaná žiadosť o ukončenie media_addon_server. Audio mixer Media Window Zmiešavač zvuku This hardware has no controls. Media Window Tento hardvér nemá žiadne ovládacie prvky. Audio output: Media views Zvukový výstup: diff --git a/data/catalogs/preferences/media/sv.catkeys b/data/catalogs/preferences/media/sv.catkeys index 899ff09229..0e0a51e864 100644 --- a/data/catalogs/preferences/media/sv.catkeys +++ b/data/catalogs/preferences/media/sv.catkeys @@ -1,23 +1,15 @@ -1 swedish x-vnd.Haiku-Media 2163090586 +1 swedish x-vnd.Haiku-Media 862832618 Couldn't add volume control in Deskbar: %s\n Media views Kunde inte lägga till volymkontroll i Deskbar: %s\n -Ready for use… Media Window Redo att användas… Video input: Media views Videoingång: -Waiting for media_server to quit. Media Window Väntar på att mediaservern ska stängas ner. -Cleaning up. Media Window Städar upp. Defaults Media views Förval MIDI Settings Media Window MIDI Inställningar -Stopping media server… Media Window Avslutar mediaservern… Quit Media Window Avsluta -Starting media server… Media Window Startar mediaservern… -Done shutting down. Media Window Färdigavslutad. Video settings Media Window Videoinställningar Video output: Media views Videoutgång: Could not connect to the media server.\nWould you like to start it ? Media Window Kunde inte ansluta till mediaservern.\nVill du starta den ? Restart media services Media views Starta om mediatjänsterna Couldn't remove volume control in Deskbar: %s\n Media views Kunde inte ta bort volymkontrollen från Deskbar: %s\n Media System name Media -Telling media_addon_server to quit. Media Window Säger till media_addon_server att avsluta. -Media Service Media Window Media tjänst Audio mixer Media Window Ljudmixer This hardware has no controls. Media Window Hårdvaran saknar kontroller. Audio output: Media views Ljudutgång: diff --git a/data/catalogs/preferences/media/uk.catkeys b/data/catalogs/preferences/media/uk.catkeys index 3b6068c49c..cd69ae1f90 100644 --- a/data/catalogs/preferences/media/uk.catkeys +++ b/data/catalogs/preferences/media/uk.catkeys @@ -1,21 +1,14 @@ -1 ukrainian x-vnd.Haiku-Media 4081089471 +1 ukrainian x-vnd.Haiku-Media 2605101563 Couldn't add volume control in Deskbar: %s\n Media views Неможливо додати регулятор гучності в Deskbar: %s\n -Ready for use… Media Window Готовий для використання… Video input: Media views Вхід відео: -Waiting for media_server to quit. Media Window Зачекайте на вихід з Медіа Сервера. -Cleaning up. Media Window Очистити. Defaults Media views По замовчуванню -Stopping media server… Media Window Зупинка Медіа Сервера… Quit Media Window Вихід -Starting media server… Media Window Запуск Медіа Сервера… -Done shutting down. Media Window Відбувається закриття. Video settings Media Window Налаштування відео Video output: Media views Вивід відео: Could not connect to the media server.\nWould you like to start it ? Media Window Медіа сервер не запущено\nЗапустити його? Restart media services Media views Перезапустити медіа сервіси Couldn't remove volume control in Deskbar: %s\n Media views Неможливо видалити регулятор гучності з Deskbar: %s\n Media System name Mедіа -Telling media_addon_server to quit. Media Window Сказати медіасервер аддону про вихід. Audio mixer Media Window Аудіо міксер This hardware has no controls. Media Window Це залізо не регулюється. Audio output: Media views Вивід аудіо: diff --git a/data/catalogs/preferences/media/zh_Hans.catkeys b/data/catalogs/preferences/media/zh_Hans.catkeys index 4664526908..188ffcc6e8 100644 --- a/data/catalogs/preferences/media/zh_Hans.catkeys +++ b/data/catalogs/preferences/media/zh_Hans.catkeys @@ -1,23 +1,15 @@ -1 english x-vnd.Haiku-Media 2163090586 +1 english x-vnd.Haiku-Media 862832618 Couldn't add volume control in Deskbar: %s\n Media views 无法添加音量控件到桌面栏:%s\n -Ready for use… Media Window 准备使用… Video input: Media views 视频输入: -Waiting for media_server to quit. Media Window 等待 media_server 退出。 -Cleaning up. Media Window 清除。 Defaults Media views 默认 MIDI Settings Media Window MIDI 设置 -Stopping media server… Media Window 暂停 media server… Quit Media Window 退出 -Starting media server… Media Window 启动 media server… -Done shutting down. Media Window 已关闭。 Video settings Media Window 视频设置 Video output: Media views 视频输出: Could not connect to the media server.\nWould you like to start it ? Media Window 链接 media server 失败.\n是否重新启动 ? Restart media services Media views 重启多媒体服务 Couldn't remove volume control in Deskbar: %s\n Media views 无法移除桌面栏中的音量控件:%s\n Media System name 多媒体 -Telling media_addon_server to quit. Media Window 控制 media_addon_server 退出程序。 -Media Service Media Window 多媒体服务 Audio mixer Media Window 音频混合器 This hardware has no controls. Media Window 硬件控制失败。 Audio output: Media views 音频输出: From 819176502578bd4ac2f404b83509f83b7725d278 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Sat, 1 Aug 2015 13:24:41 +0200 Subject: [PATCH 072/126] Updated binutils, help2man, sqlite packages. * added diffutils, mpc, mpfr packages. --- build/jam/repositories/HaikuPorts/x86 | 20 ++++++++++++----- build/jam/repositories/HaikuPorts/x86_64 | 16 +++++++++---- build/jam/repositories/HaikuPorts/x86_gcc2 | 26 ++++++++++++---------- 3 files changed, 40 insertions(+), 22 deletions(-) diff --git a/build/jam/repositories/HaikuPorts/x86 b/build/jam/repositories/HaikuPorts/x86 index 7d497334e4..14e1527932 100644 --- a/build/jam/repositories/HaikuPorts/x86 +++ b/build/jam/repositories/HaikuPorts/x86 @@ -26,7 +26,7 @@ RemotePackageRepository HaikuPorts beam-1.2-1 bepdf-1.2.0-1 bescreencapture-1.9.4-1 - binutils-2.25_2014_12_27-1 + binutils-2.25.1_2015_07_31-1 bison-2.4.3-6 buildbot_slave-0.8.8-2 burnitnow-0.1.0-1 @@ -44,6 +44,7 @@ RemotePackageRepository HaikuPorts curl_devel-7.42.1-1 cvs-1.12.13.1-6 cvsps-2.2b1-1 + diffutils-3.3-2 dos2unix-7.2.2-1 doxygen-1.6.3-4 dtc-1.4.1-1 @@ -90,7 +91,7 @@ RemotePackageRepository HaikuPorts gzip-1.6-2 haikuwebkit-1.4.10-1 haikuwebkit_devel-1.4.10-1 - help2man-1.44.1-1 + help2man-1.46.6-1 htmldoc-1.8.27-3 icu-55.1-4 icu_devel-55.1-4 @@ -169,6 +170,10 @@ RemotePackageRepository HaikuPorts mesa_swrast-10.1.1-1 mesa_swpipe-10.1.1-1 mkdepend-1.7-3 + mpc-1.0.3-1 + mpc_devel-1.0.3-1 + mpfr-3.1.3-1 + mpfr_devel-3.1.3-1 mpg123-1.22.0-1 mpg123_devel-1.22.0-1 nano-2.4.0-1 @@ -207,8 +212,8 @@ RemotePackageRepository HaikuPorts sharutils-4.14-1 speex-1.2~rc1-2 speex_devel-1.2~rc1-2 - sqlite-3.8.8.3-1 - sqlite_devel-3.8.8.3-1 + sqlite-3.8.11.1-1 + sqlite_devel-3.8.11.1-1 subversion-1.6.18-6 subversion_devel-1.6.18-6 tar-1.27.1-2 @@ -302,8 +307,8 @@ RemotePackageRepository HaikuPorts pkgconfig_x86_gcc2-0.27.1-2 speex_x86_gcc2-1.2~rc1-2 speex_x86_gcc2_devel-1.2~rc1-2 - sqlite_x86_gcc2-3.8.8.3-1 - sqlite_x86_gcc2_devel-3.8.8.3-1 + sqlite_x86_gcc2-3.8.11.1-1 + sqlite_x86_gcc2_devel-3.8.11.1-1 tiff_x86_gcc2-3.9.6-2 tiff_x86_gcc2_devel-3.9.6-2 tinyxml_x86_gcc2-2.6.2-1 @@ -335,6 +340,7 @@ RemotePackageRepository HaikuPorts curl cvs cvsps + diffutils dos2unix doxygen dtc @@ -405,6 +411,8 @@ RemotePackageRepository HaikuPorts mesa mesa_x86_gcc2 mkdepend + mpc + mpfr mpg123 nano nasm diff --git a/build/jam/repositories/HaikuPorts/x86_64 b/build/jam/repositories/HaikuPorts/x86_64 index b20097fc2f..9cfe3b5909 100644 --- a/build/jam/repositories/HaikuPorts/x86_64 +++ b/build/jam/repositories/HaikuPorts/x86_64 @@ -25,7 +25,7 @@ RemotePackageRepository HaikuPorts automake-1.13.1-4 bash-4.3.39-1 # bepdf-1.1.1~beta5_2013_04_28-1 - binutils-2.25_2014_12_27-1 + binutils-2.25.1_2015_07_31-1 bison-2.6.5-1 boost-1.55.0-6 boost_atomic-1.55.0-6 @@ -66,6 +66,7 @@ RemotePackageRepository HaikuPorts curl-7.42.1-1 curl_devel-7.42.1-1 cvs-1.12.13.1-6 + diffutils-3.3-2 dos2unix-7.2.2-1 doxygen-1.6.3-4 dtc-1.4.1-1 @@ -131,7 +132,7 @@ RemotePackageRepository HaikuPorts handbrake-0.10.1-1 harfbuzz-0.9.40-1 harfbuzz_devel-0.9.40-1 - help2man-1.44.1-1 + help2man-1.46.6-1 htmldoc-1.8.27-3 icu-55.1-3 icu_devel-55.1-3 @@ -242,6 +243,10 @@ RemotePackageRepository HaikuPorts mesa_swrast-10.5.2-1 mesa_swpipe-10.5.2-1 mkdepend-1.7-3 + mpc-1.0.3-1 + mpc_devel-1.0.3-1 + mpfr-3.1.3-1 + mpfr_devel-3.1.3-1 mpg123-1.22.0-1 mpg123_devel-1.22.0-1 nano-2.4.0-1 @@ -287,8 +292,8 @@ RemotePackageRepository HaikuPorts smpeg_devel-0.4.5-4 speex-1.2~rc1-2 speex_devel-1.2~rc1-2 - sqlite-3.8.10.0-1 - sqlite_devel-3.8.10.0-1 + sqlite-3.8.11.1-1 + sqlite_devel-3.8.11.1-1 subversion-1.8.11-1 subversion_devel-1.8.11-1 tar-1.27.1-2 @@ -337,6 +342,7 @@ RemotePackageRepository HaikuPorts ctags curl cvs + diffutils dos2unix doxygen dtc @@ -430,6 +436,8 @@ RemotePackageRepository HaikuPorts mercurial mesa mkdepend + mpc + mpfr mpg123 nano nasm diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index 175cef37f3..598e46e762 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -83,6 +83,7 @@ RemotePackageRepository HaikuPorts cvs-1.12.13.1-6 desknotes-1.1-4 dfu_util-0.7-1 + diffutils-3.3-2 distcc-3.1-3 djvulibre-3.5.25-2 djvulibre_devel-3.5.25-2 @@ -168,7 +169,7 @@ RemotePackageRepository HaikuPorts gutenprint_devel-5.2.10-1 gyp-r1948-2 gzip-1.6-2 - help2man-1.44.1-1 + help2man-1.46.6-1 htmldoc-1.8.27-3 html_parser-3.71-1 hubbub-0.3.0-1 @@ -446,8 +447,8 @@ RemotePackageRepository HaikuPorts smpeg_devel-0.4.5-3 speex-1.2~rc1-2 speex_devel-1.2~rc1-2 - sqlite-3.8.8.3-1 - sqlite_devel-3.8.8.3-1 + sqlite-3.8.11.1-1 + sqlite_devel-3.8.11.1-1 srm-1.2.12-1 substrate-1.0b-1 subversion-1.8.11-1 @@ -513,7 +514,7 @@ RemotePackageRepository HaikuPorts avr_gcc_x86-4.8.2_2014_03_20-1 avrdude_x86-6.0.1-2 beshare_x86-2.31-1 - binutils_x86-2.25_2014_12_27-1 + binutils_x86-2.25.1_2015_07_31-1 bison_x86-2.5-1 boost_x86-1.55.0-6 boost_x86_atomic-1.55.0-6 @@ -743,11 +744,11 @@ RemotePackageRepository HaikuPorts mesa_x86_swrast-10.1.0-2 mesa_x86_swpipe-10.1.0-2 mosh_x86-1.2.4-1 - mpc_x86-1.0.2-2 - mpc_x86_devel-1.0.2-2 + mpc_x86-1.0.3-1 + mpc_x86_devel-1.0.3-1 mpd_x86-0.18.12_git-1 - mpfr_x86-3.1.2-2 - mpfr_x86_devel-3.1.2-2 + mpfr_x86-3.1.3-1 + mpfr_x86_devel-3.1.3-1 mpg123_x86-1.22.0-1 mpg123_x86_devel-1.22.0-1 mplayer_x86-1.1.1-3 @@ -819,8 +820,8 @@ RemotePackageRepository HaikuPorts smpeg_x86_devel-0.4.5-3 speex_x86-1.2~rc1-2 speex_x86_devel-1.2~rc1-2 - sqlite_x86-3.8.8.3-1 - sqlite_x86_devel-3.8.8.3-1 + sqlite_x86-3.8.11.1-1 + sqlite_x86_devel-3.8.11.1-1 stlink_x86-1.0.0-1 stm32flash_x86-0.3-1 strigi_x86-0.7.5-2 @@ -923,6 +924,7 @@ RemotePackageRepository HaikuPorts djvulibre_x86 djvutranslator djvuviewer + diffutils distcc dmidecode documentviewer_x86 @@ -1135,13 +1137,13 @@ RemotePackageRepository HaikuPorts mksh moe mog - mpc_x86 - mplayer_x86 mosh_x86 most + mpc_x86 mpd_x86 mpfr_x86 mpg123 + mplayer_x86 mtr multitalk mupdf From ed92a1052069f6a3afb353d71c563662de66a47a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Sat, 1 Aug 2015 14:04:10 +0200 Subject: [PATCH 073/126] diffutils: use the outsourced packages. * remove diffutils Jamfile from the build and diffutils sources from the tree. --- Jamfile | 3 +- build/jam/images/definitions/minimum | 6 +- src/bin/Jamfile | 1 - src/bin/diffutils/ABOUT-NLS | 396 - src/bin/diffutils/AUTHORS | 112 - src/bin/diffutils/COPYING | 340 - src/bin/diffutils/ChangeLog | 3409 ----- src/bin/diffutils/INSTALL | 231 - src/bin/diffutils/INSTALLME | 53 - src/bin/diffutils/Jamfile | 4 - src/bin/diffutils/Makefile | 455 - src/bin/diffutils/Makefile.am | 23 - src/bin/diffutils/Makefile.in | 455 - src/bin/diffutils/NEWS | 202 - src/bin/diffutils/README | 38 - src/bin/diffutils/THANKS | 22 - src/bin/diffutils/aclocal.m4 | 3633 ----- src/bin/diffutils/config.h | 515 - src/bin/diffutils/config.hin | 514 - src/bin/diffutils/config.status | 1568 --- src/bin/diffutils/config/config.guess | 1321 -- src/bin/diffutils/config/config.rpath | 513 - src/bin/diffutils/config/config.sub | 1443 -- src/bin/diffutils/config/depcomp | 436 - src/bin/diffutils/config/install-sh | 251 - src/bin/diffutils/config/mdate-sh | 97 - src/bin/diffutils/config/missing | 336 - src/bin/diffutils/config/mkinstalldirs | 101 - src/bin/diffutils/config/texinfo.tex | 6364 --------- src/bin/diffutils/configure | 15482 --------------------- src/bin/diffutils/configure.ac | 135 - src/bin/diffutils/doc/Makefile | 359 - src/bin/diffutils/doc/Makefile.am | 24 - src/bin/diffutils/doc/Makefile.in | 359 - src/bin/diffutils/doc/diagmeet.note | 71 - src/bin/diffutils/doc/diff.info | 5084 ------- src/bin/diffutils/doc/diff.texi | 4556 ------ src/bin/diffutils/doc/fdl.texi | 403 - src/bin/diffutils/doc/stamp-vti | 4 - src/bin/diffutils/doc/version.texi | 4 - src/bin/diffutils/exgettext | 123 - src/bin/diffutils/lib/Jamfile | 49 - src/bin/diffutils/lib/Makefile | 493 - src/bin/diffutils/lib/Makefile.am | 42 - src/bin/diffutils/lib/Makefile.in | 493 - src/bin/diffutils/lib/alloca.c | 504 - src/bin/diffutils/lib/basename.c | 79 - src/bin/diffutils/lib/c-stack.c | 237 - src/bin/diffutils/lib/c-stack.h | 24 - src/bin/diffutils/lib/cmpbuf.c | 147 - src/bin/diffutils/lib/cmpbuf.h | 21 - src/bin/diffutils/lib/dirname.h | 47 - src/bin/diffutils/lib/error.c | 400 - src/bin/diffutils/lib/error.h | 78 - src/bin/diffutils/lib/exclude.c | 268 - src/bin/diffutils/lib/exclude.h | 49 - src/bin/diffutils/lib/exitfail.c | 31 - src/bin/diffutils/lib/exitfail.h | 20 - src/bin/diffutils/lib/fnmatch.c | 230 - src/bin/diffutils/lib/fnmatch.hin | 69 - src/bin/diffutils/lib/freesoft.c | 31 - src/bin/diffutils/lib/freesoft.h | 1 - src/bin/diffutils/lib/getopt.c | 1067 -- src/bin/diffutils/lib/getopt.h | 179 - src/bin/diffutils/lib/getopt1.c | 187 - src/bin/diffutils/lib/gettext.h | 59 - src/bin/diffutils/lib/hard-locale.c | 79 - src/bin/diffutils/lib/hard-locale.h | 18 - src/bin/diffutils/lib/imaxtostr.c | 3 - src/bin/diffutils/lib/inttostr.c | 49 - src/bin/diffutils/lib/inttostr.h | 60 - src/bin/diffutils/lib/malloc.c | 38 - src/bin/diffutils/lib/memchr.c | 216 - src/bin/diffutils/lib/mkstemp.c | 42 - src/bin/diffutils/lib/offtostr.c | 3 - src/bin/diffutils/lib/posix/Makefile.am | 4 - src/bin/diffutils/lib/posix/Makefile.in | 229 - src/bin/diffutils/lib/posix/regex.h | 562 - src/bin/diffutils/lib/posixver.c | 58 - src/bin/diffutils/lib/posixver.h | 1 - src/bin/diffutils/lib/prepargs.c | 93 - src/bin/diffutils/lib/prepargs.h | 3 - src/bin/diffutils/lib/quotesys.c | 125 - src/bin/diffutils/lib/quotesys.h | 9 - src/bin/diffutils/lib/realloc.c | 44 - src/bin/diffutils/lib/regex.c | 8438 ----------- src/bin/diffutils/lib/regex.hin | 46 - src/bin/diffutils/lib/setmode.c | 62 - src/bin/diffutils/lib/setmode.h | 27 - src/bin/diffutils/lib/strcasecmp.c | 66 - src/bin/diffutils/lib/strftime.c | 1406 -- src/bin/diffutils/lib/strtoimax.c | 101 - src/bin/diffutils/lib/strtol.c | 472 - src/bin/diffutils/lib/strtoul.c | 22 - src/bin/diffutils/lib/strtoull.c | 27 - src/bin/diffutils/lib/strtoumax.c | 2 - src/bin/diffutils/lib/tempname.c | 342 - src/bin/diffutils/lib/umaxtostr.c | 3 - src/bin/diffutils/lib/unlocked-io.h | 69 - src/bin/diffutils/lib/waitpid.c | 73 - src/bin/diffutils/lib/xalloc.h | 82 - src/bin/diffutils/lib/xmalloc.c | 113 - src/bin/diffutils/lib/xstrtol.c | 302 - src/bin/diffutils/lib/xstrtol.h | 82 - src/bin/diffutils/lib/xstrtoumax.c | 31 - src/bin/diffutils/m4/Makefile | 272 - src/bin/diffutils/m4/Makefile.am | 50 - src/bin/diffutils/m4/Makefile.am.in | 17 - src/bin/diffutils/m4/Makefile.in | 272 - src/bin/diffutils/m4/README | 10 - src/bin/diffutils/m4/c-bs-a.m4 | 23 - src/bin/diffutils/m4/c-stack.m4 | 131 - src/bin/diffutils/m4/check-decl.m4 | 85 - src/bin/diffutils/m4/codeset.m4 | 23 - src/bin/diffutils/m4/dos.m4 | 53 - src/bin/diffutils/m4/error.m4 | 13 - src/bin/diffutils/m4/fnmatch.m4 | 47 - src/bin/diffutils/m4/gettext.m4 | 541 - src/bin/diffutils/m4/glibc21.m4 | 32 - src/bin/diffutils/m4/gnu-source.m4 | 25 - src/bin/diffutils/m4/iconv.m4 | 96 - src/bin/diffutils/m4/inttypes.m4 | 32 - src/bin/diffutils/m4/jm-glibc-io.m4 | 14 - src/bin/diffutils/m4/lcmessage.m4 | 32 - src/bin/diffutils/m4/lib-ld.m4 | 97 - src/bin/diffutils/m4/lib-link.m4 | 521 - src/bin/diffutils/m4/lib-prefix.m4 | 148 - src/bin/diffutils/m4/longlong.m4 | 35 - src/bin/diffutils/m4/malloc.m4 | 34 - src/bin/diffutils/m4/mbrtowc.m4 | 18 - src/bin/diffutils/m4/mbstate_t.m4 | 29 - src/bin/diffutils/m4/prereq.m4 | 153 - src/bin/diffutils/m4/progtest.m4 | 59 - src/bin/diffutils/m4/realloc.m4 | 34 - src/bin/diffutils/m4/regex.m4 | 81 - src/bin/diffutils/m4/setmode.m4 | 38 - src/bin/diffutils/m4/st_mtim.m4 | 32 - src/bin/diffutils/m4/stdbool.m4 | 56 - src/bin/diffutils/m4/strftime.m4 | 43 - src/bin/diffutils/m4/vararrays.m4 | 37 - src/bin/diffutils/m4/xstrtoumax.m4 | 40 - src/bin/diffutils/man/Makefile | 291 - src/bin/diffutils/man/Makefile.am | 34 - src/bin/diffutils/man/Makefile.in | 291 - src/bin/diffutils/man/cmp.1 | 64 - src/bin/diffutils/man/diff.1 | 225 - src/bin/diffutils/man/diff3.1 | 76 - src/bin/diffutils/man/sdiff.1 | 88 - src/bin/diffutils/ms/Makefile | 230 - src/bin/diffutils/ms/Makefile.am | 19 - src/bin/diffutils/ms/Makefile.in | 230 - src/bin/diffutils/ms/README | 66 - src/bin/diffutils/ms/config.bat | 261 - src/bin/diffutils/ms/config.sed | 87 - src/bin/diffutils/ms/config.site | 81 - src/bin/diffutils/po/LINGUAS | 1 - src/bin/diffutils/po/Makefile | 397 - src/bin/diffutils/po/Makefile.in | 317 - src/bin/diffutils/po/Makefile.in.in | 317 - src/bin/diffutils/po/Makevars | 25 - src/bin/diffutils/po/POTFILES | 13 - src/bin/diffutils/po/POTFILES.in | 33 - src/bin/diffutils/po/Rules-quot | 42 - src/bin/diffutils/po/boldquot.sed | 10 - src/bin/diffutils/po/cs.gmo | Bin 23035 -> 0 bytes src/bin/diffutils/po/cs.po | 947 -- src/bin/diffutils/po/da.gmo | Bin 22910 -> 0 bytes src/bin/diffutils/po/da.po | 931 -- src/bin/diffutils/po/de.gmo | Bin 24021 -> 0 bytes src/bin/diffutils/po/de.po | 993 -- src/bin/diffutils/po/diffutils.pot | 841 -- src/bin/diffutils/po/en@boldquot.header | 25 - src/bin/diffutils/po/en@quot.header | 22 - src/bin/diffutils/po/en_GB.gmo | Bin 617 -> 0 bytes src/bin/diffutils/po/en_GB.po | 843 -- src/bin/diffutils/po/eo.gmo | Bin 22734 -> 0 bytes src/bin/diffutils/po/eo.po | 923 -- src/bin/diffutils/po/es.gmo | Bin 25106 -> 0 bytes src/bin/diffutils/po/es.po | 1137 -- src/bin/diffutils/po/fr.gmo | Bin 25082 -> 0 bytes src/bin/diffutils/po/fr.po | 1033 -- src/bin/diffutils/po/gl.gmo | Bin 23855 -> 0 bytes src/bin/diffutils/po/gl.po | 997 -- src/bin/diffutils/po/he.gmo | Bin 23365 -> 0 bytes src/bin/diffutils/po/he.po | 907 -- src/bin/diffutils/po/id.gmo | Bin 22711 -> 0 bytes src/bin/diffutils/po/id.po | 913 -- src/bin/diffutils/po/insert-header.sin | 23 - src/bin/diffutils/po/ja.gmo | Bin 22004 -> 0 bytes src/bin/diffutils/po/ja.po | 898 -- src/bin/diffutils/po/pl.gmo | Bin 23351 -> 0 bytes src/bin/diffutils/po/pl.po | 930 -- src/bin/diffutils/po/quot.sed | 6 - src/bin/diffutils/po/remove-potcdate.sin | 19 - src/bin/diffutils/po/ru.gmo | Bin 23983 -> 0 bytes src/bin/diffutils/po/ru.po | 942 -- src/bin/diffutils/po/sv.gmo | Bin 22549 -> 0 bytes src/bin/diffutils/po/sv.po | 921 -- src/bin/diffutils/po/tr.gmo | Bin 24943 -> 0 bytes src/bin/diffutils/po/tr.po | 956 -- src/bin/diffutils/po/zh_TW.gmo | Bin 21489 -> 0 bytes src/bin/diffutils/po/zh_TW.po | 922 -- src/bin/diffutils/src/Jamfile | 48 - src/bin/diffutils/src/Makefile | 418 - src/bin/diffutils/src/Makefile.am | 44 - src/bin/diffutils/src/Makefile.in | 418 - src/bin/diffutils/src/analyze.c | 1068 -- src/bin/diffutils/src/cmp.c | 674 - src/bin/diffutils/src/context.c | 478 - src/bin/diffutils/src/diff.c | 1363 -- src/bin/diffutils/src/diff.h | 375 - src/bin/diffutils/src/diff3.c | 1745 --- src/bin/diffutils/src/diffutils.rdef | 11 - src/bin/diffutils/src/dir.c | 289 - src/bin/diffutils/src/ed.c | 169 - src/bin/diffutils/src/ifdef.c | 424 - src/bin/diffutils/src/io.c | 855 -- src/bin/diffutils/src/normal.c | 71 - src/bin/diffutils/src/sdiff.c | 1220 -- src/bin/diffutils/src/side.c | 283 - src/bin/diffutils/src/system.h | 401 - src/bin/diffutils/src/util.c | 756 - src/bin/diffutils/src/version.c | 2 - src/bin/diffutils/stamp-h | 1 - src/bin/diffutils/stamp-h1 | 1 - src/data/package_infos/arm/haiku | 5 - src/data/package_infos/m68k/haiku | 5 - src/data/package_infos/ppc/haiku | 5 - src/data/package_infos/x86/haiku | 5 - src/data/package_infos/x86_64/haiku | 5 - src/data/package_infos/x86_gcc2/haiku | 5 - 231 files changed, 5 insertions(+), 101342 deletions(-) delete mode 100644 src/bin/diffutils/ABOUT-NLS delete mode 100644 src/bin/diffutils/AUTHORS delete mode 100644 src/bin/diffutils/COPYING delete mode 100644 src/bin/diffutils/ChangeLog delete mode 100644 src/bin/diffutils/INSTALL delete mode 100644 src/bin/diffutils/INSTALLME delete mode 100644 src/bin/diffutils/Jamfile delete mode 100644 src/bin/diffutils/Makefile delete mode 100644 src/bin/diffutils/Makefile.am delete mode 100644 src/bin/diffutils/Makefile.in delete mode 100644 src/bin/diffutils/NEWS delete mode 100644 src/bin/diffutils/README delete mode 100644 src/bin/diffutils/THANKS delete mode 100644 src/bin/diffutils/aclocal.m4 delete mode 100644 src/bin/diffutils/config.h delete mode 100644 src/bin/diffutils/config.hin delete mode 100755 src/bin/diffutils/config.status delete mode 100644 src/bin/diffutils/config/config.guess delete mode 100755 src/bin/diffutils/config/config.rpath delete mode 100644 src/bin/diffutils/config/config.sub delete mode 100755 src/bin/diffutils/config/depcomp delete mode 100755 src/bin/diffutils/config/install-sh delete mode 100755 src/bin/diffutils/config/mdate-sh delete mode 100755 src/bin/diffutils/config/missing delete mode 100755 src/bin/diffutils/config/mkinstalldirs delete mode 100644 src/bin/diffutils/config/texinfo.tex delete mode 100755 src/bin/diffutils/configure delete mode 100644 src/bin/diffutils/configure.ac delete mode 100644 src/bin/diffutils/doc/Makefile delete mode 100644 src/bin/diffutils/doc/Makefile.am delete mode 100644 src/bin/diffutils/doc/Makefile.in delete mode 100644 src/bin/diffutils/doc/diagmeet.note delete mode 100644 src/bin/diffutils/doc/diff.info delete mode 100644 src/bin/diffutils/doc/diff.texi delete mode 100644 src/bin/diffutils/doc/fdl.texi delete mode 100644 src/bin/diffutils/doc/stamp-vti delete mode 100644 src/bin/diffutils/doc/version.texi delete mode 100755 src/bin/diffutils/exgettext delete mode 100644 src/bin/diffutils/lib/Jamfile delete mode 100644 src/bin/diffutils/lib/Makefile delete mode 100644 src/bin/diffutils/lib/Makefile.am delete mode 100644 src/bin/diffutils/lib/Makefile.in delete mode 100644 src/bin/diffutils/lib/alloca.c delete mode 100644 src/bin/diffutils/lib/basename.c delete mode 100644 src/bin/diffutils/lib/c-stack.c delete mode 100644 src/bin/diffutils/lib/c-stack.h delete mode 100644 src/bin/diffutils/lib/cmpbuf.c delete mode 100644 src/bin/diffutils/lib/cmpbuf.h delete mode 100644 src/bin/diffutils/lib/dirname.h delete mode 100644 src/bin/diffutils/lib/error.c delete mode 100644 src/bin/diffutils/lib/error.h delete mode 100644 src/bin/diffutils/lib/exclude.c delete mode 100644 src/bin/diffutils/lib/exclude.h delete mode 100644 src/bin/diffutils/lib/exitfail.c delete mode 100644 src/bin/diffutils/lib/exitfail.h delete mode 100644 src/bin/diffutils/lib/fnmatch.c delete mode 100644 src/bin/diffutils/lib/fnmatch.hin delete mode 100644 src/bin/diffutils/lib/freesoft.c delete mode 100644 src/bin/diffutils/lib/freesoft.h delete mode 100644 src/bin/diffutils/lib/getopt.c delete mode 100644 src/bin/diffutils/lib/getopt.h delete mode 100644 src/bin/diffutils/lib/getopt1.c delete mode 100644 src/bin/diffutils/lib/gettext.h delete mode 100644 src/bin/diffutils/lib/hard-locale.c delete mode 100644 src/bin/diffutils/lib/hard-locale.h delete mode 100644 src/bin/diffutils/lib/imaxtostr.c delete mode 100644 src/bin/diffutils/lib/inttostr.c delete mode 100644 src/bin/diffutils/lib/inttostr.h delete mode 100644 src/bin/diffutils/lib/malloc.c delete mode 100644 src/bin/diffutils/lib/memchr.c delete mode 100644 src/bin/diffutils/lib/mkstemp.c delete mode 100644 src/bin/diffutils/lib/offtostr.c delete mode 100644 src/bin/diffutils/lib/posix/Makefile.am delete mode 100644 src/bin/diffutils/lib/posix/Makefile.in delete mode 100644 src/bin/diffutils/lib/posix/regex.h delete mode 100644 src/bin/diffutils/lib/posixver.c delete mode 100644 src/bin/diffutils/lib/posixver.h delete mode 100644 src/bin/diffutils/lib/prepargs.c delete mode 100644 src/bin/diffutils/lib/prepargs.h delete mode 100644 src/bin/diffutils/lib/quotesys.c delete mode 100644 src/bin/diffutils/lib/quotesys.h delete mode 100644 src/bin/diffutils/lib/realloc.c delete mode 100644 src/bin/diffutils/lib/regex.c delete mode 100644 src/bin/diffutils/lib/regex.hin delete mode 100644 src/bin/diffutils/lib/setmode.c delete mode 100644 src/bin/diffutils/lib/setmode.h delete mode 100644 src/bin/diffutils/lib/strcasecmp.c delete mode 100644 src/bin/diffutils/lib/strftime.c delete mode 100644 src/bin/diffutils/lib/strtoimax.c delete mode 100644 src/bin/diffutils/lib/strtol.c delete mode 100644 src/bin/diffutils/lib/strtoul.c delete mode 100644 src/bin/diffutils/lib/strtoull.c delete mode 100644 src/bin/diffutils/lib/strtoumax.c delete mode 100644 src/bin/diffutils/lib/tempname.c delete mode 100644 src/bin/diffutils/lib/umaxtostr.c delete mode 100644 src/bin/diffutils/lib/unlocked-io.h delete mode 100644 src/bin/diffutils/lib/waitpid.c delete mode 100644 src/bin/diffutils/lib/xalloc.h delete mode 100644 src/bin/diffutils/lib/xmalloc.c delete mode 100644 src/bin/diffutils/lib/xstrtol.c delete mode 100644 src/bin/diffutils/lib/xstrtol.h delete mode 100644 src/bin/diffutils/lib/xstrtoumax.c delete mode 100644 src/bin/diffutils/m4/Makefile delete mode 100644 src/bin/diffutils/m4/Makefile.am delete mode 100644 src/bin/diffutils/m4/Makefile.am.in delete mode 100644 src/bin/diffutils/m4/Makefile.in delete mode 100644 src/bin/diffutils/m4/README delete mode 100644 src/bin/diffutils/m4/c-bs-a.m4 delete mode 100644 src/bin/diffutils/m4/c-stack.m4 delete mode 100644 src/bin/diffutils/m4/check-decl.m4 delete mode 100644 src/bin/diffutils/m4/codeset.m4 delete mode 100644 src/bin/diffutils/m4/dos.m4 delete mode 100644 src/bin/diffutils/m4/error.m4 delete mode 100644 src/bin/diffutils/m4/fnmatch.m4 delete mode 100644 src/bin/diffutils/m4/gettext.m4 delete mode 100644 src/bin/diffutils/m4/glibc21.m4 delete mode 100644 src/bin/diffutils/m4/gnu-source.m4 delete mode 100644 src/bin/diffutils/m4/iconv.m4 delete mode 100644 src/bin/diffutils/m4/inttypes.m4 delete mode 100644 src/bin/diffutils/m4/jm-glibc-io.m4 delete mode 100644 src/bin/diffutils/m4/lcmessage.m4 delete mode 100644 src/bin/diffutils/m4/lib-ld.m4 delete mode 100644 src/bin/diffutils/m4/lib-link.m4 delete mode 100644 src/bin/diffutils/m4/lib-prefix.m4 delete mode 100644 src/bin/diffutils/m4/longlong.m4 delete mode 100644 src/bin/diffutils/m4/malloc.m4 delete mode 100644 src/bin/diffutils/m4/mbrtowc.m4 delete mode 100644 src/bin/diffutils/m4/mbstate_t.m4 delete mode 100644 src/bin/diffutils/m4/prereq.m4 delete mode 100644 src/bin/diffutils/m4/progtest.m4 delete mode 100644 src/bin/diffutils/m4/realloc.m4 delete mode 100644 src/bin/diffutils/m4/regex.m4 delete mode 100644 src/bin/diffutils/m4/setmode.m4 delete mode 100644 src/bin/diffutils/m4/st_mtim.m4 delete mode 100644 src/bin/diffutils/m4/stdbool.m4 delete mode 100644 src/bin/diffutils/m4/strftime.m4 delete mode 100644 src/bin/diffutils/m4/vararrays.m4 delete mode 100644 src/bin/diffutils/m4/xstrtoumax.m4 delete mode 100644 src/bin/diffutils/man/Makefile delete mode 100644 src/bin/diffutils/man/Makefile.am delete mode 100644 src/bin/diffutils/man/Makefile.in delete mode 100644 src/bin/diffutils/man/cmp.1 delete mode 100644 src/bin/diffutils/man/diff.1 delete mode 100644 src/bin/diffutils/man/diff3.1 delete mode 100644 src/bin/diffutils/man/sdiff.1 delete mode 100644 src/bin/diffutils/ms/Makefile delete mode 100644 src/bin/diffutils/ms/Makefile.am delete mode 100644 src/bin/diffutils/ms/Makefile.in delete mode 100644 src/bin/diffutils/ms/README delete mode 100644 src/bin/diffutils/ms/config.bat delete mode 100644 src/bin/diffutils/ms/config.sed delete mode 100644 src/bin/diffutils/ms/config.site delete mode 100644 src/bin/diffutils/po/LINGUAS delete mode 100644 src/bin/diffutils/po/Makefile delete mode 100644 src/bin/diffutils/po/Makefile.in delete mode 100644 src/bin/diffutils/po/Makefile.in.in delete mode 100644 src/bin/diffutils/po/Makevars delete mode 100644 src/bin/diffutils/po/POTFILES delete mode 100644 src/bin/diffutils/po/POTFILES.in delete mode 100644 src/bin/diffutils/po/Rules-quot delete mode 100644 src/bin/diffutils/po/boldquot.sed delete mode 100644 src/bin/diffutils/po/cs.gmo delete mode 100644 src/bin/diffutils/po/cs.po delete mode 100644 src/bin/diffutils/po/da.gmo delete mode 100644 src/bin/diffutils/po/da.po delete mode 100644 src/bin/diffutils/po/de.gmo delete mode 100644 src/bin/diffutils/po/de.po delete mode 100644 src/bin/diffutils/po/diffutils.pot delete mode 100644 src/bin/diffutils/po/en@boldquot.header delete mode 100644 src/bin/diffutils/po/en@quot.header delete mode 100644 src/bin/diffutils/po/en_GB.gmo delete mode 100644 src/bin/diffutils/po/en_GB.po delete mode 100644 src/bin/diffutils/po/eo.gmo delete mode 100644 src/bin/diffutils/po/eo.po delete mode 100644 src/bin/diffutils/po/es.gmo delete mode 100644 src/bin/diffutils/po/es.po delete mode 100644 src/bin/diffutils/po/fr.gmo delete mode 100644 src/bin/diffutils/po/fr.po delete mode 100644 src/bin/diffutils/po/gl.gmo delete mode 100644 src/bin/diffutils/po/gl.po delete mode 100644 src/bin/diffutils/po/he.gmo delete mode 100644 src/bin/diffutils/po/he.po delete mode 100644 src/bin/diffutils/po/id.gmo delete mode 100644 src/bin/diffutils/po/id.po delete mode 100644 src/bin/diffutils/po/insert-header.sin delete mode 100644 src/bin/diffutils/po/ja.gmo delete mode 100644 src/bin/diffutils/po/ja.po delete mode 100644 src/bin/diffutils/po/pl.gmo delete mode 100644 src/bin/diffutils/po/pl.po delete mode 100644 src/bin/diffutils/po/quot.sed delete mode 100644 src/bin/diffutils/po/remove-potcdate.sin delete mode 100644 src/bin/diffutils/po/ru.gmo delete mode 100644 src/bin/diffutils/po/ru.po delete mode 100644 src/bin/diffutils/po/sv.gmo delete mode 100644 src/bin/diffutils/po/sv.po delete mode 100644 src/bin/diffutils/po/tr.gmo delete mode 100644 src/bin/diffutils/po/tr.po delete mode 100644 src/bin/diffutils/po/zh_TW.gmo delete mode 100644 src/bin/diffutils/po/zh_TW.po delete mode 100644 src/bin/diffutils/src/Jamfile delete mode 100644 src/bin/diffutils/src/Makefile delete mode 100644 src/bin/diffutils/src/Makefile.am delete mode 100644 src/bin/diffutils/src/Makefile.in delete mode 100644 src/bin/diffutils/src/analyze.c delete mode 100644 src/bin/diffutils/src/cmp.c delete mode 100644 src/bin/diffutils/src/context.c delete mode 100644 src/bin/diffutils/src/diff.c delete mode 100644 src/bin/diffutils/src/diff.h delete mode 100644 src/bin/diffutils/src/diff3.c delete mode 100644 src/bin/diffutils/src/diffutils.rdef delete mode 100644 src/bin/diffutils/src/dir.c delete mode 100644 src/bin/diffutils/src/ed.c delete mode 100644 src/bin/diffutils/src/ifdef.c delete mode 100644 src/bin/diffutils/src/io.c delete mode 100644 src/bin/diffutils/src/normal.c delete mode 100644 src/bin/diffutils/src/sdiff.c delete mode 100644 src/bin/diffutils/src/side.c delete mode 100644 src/bin/diffutils/src/system.h delete mode 100644 src/bin/diffutils/src/util.c delete mode 100644 src/bin/diffutils/src/version.c delete mode 100644 src/bin/diffutils/stamp-h delete mode 100644 src/bin/diffutils/stamp-h1 diff --git a/Jamfile b/Jamfile index c1774a45de..cce7bfef6f 100644 --- a/Jamfile +++ b/Jamfile @@ -26,7 +26,8 @@ AddHaikuImagePackages [ FFilterByBuildFeatures bash coreutils curl freetype icu libsolv zlib regular_image @{ - bzip2 ctags expat ffmpeg findutils gawk glu grep gutenprint gzip jasper jpeg + bzip2 ctags diffutils expat ffmpeg findutils gawk glu grep gutenprint + gzip jasper jpeg less libicns libpcap libpng libpng16 libwebp mesa mesa_devel mesa_swrast netcat diff --git a/build/jam/images/definitions/minimum b/build/jam/images/definitions/minimum index 5c291325e4..fa836795e7 100644 --- a/build/jam/images/definitions/minimum +++ b/build/jam/images/definitions/minimum @@ -3,8 +3,8 @@ SYSTEM_BIN = [ FFilterByBuildFeatures addattr alert arp autologin bc beep bfsinfo - catattr checkfs checkitout chop clear cmp collectcatkeys compress copyattr - dc desklink df diff diff3 diskimage draggers + catattr checkfs checkitout chop clear collectcatkeys compress copyattr + dc desklink df diskimage draggers driveinfo dstcheck dumpcatalog eject error fdinfo ffm filepanel finddir findpaths fortune fstrim @@ -24,7 +24,7 @@ SYSTEM_BIN = [ FFilterByBuildFeatures query quit rc reindex release renice resattr rmattr rmindex roster route - safemode screen_blanker screeninfo screenmode sdiff setarch setmime settype + safemode screen_blanker screeninfo screenmode setarch setmime settype setversion setvolume shutdown strace su sysinfo tcptester telnet telnetd top diff --git a/src/bin/Jamfile b/src/bin/Jamfile index e81be6e476..e9d29fb28e 100644 --- a/src/bin/Jamfile +++ b/src/bin/Jamfile @@ -268,7 +268,6 @@ SubInclude HAIKU_TOP src bin compress ; SubInclude HAIKU_TOP src bin consoled ; SubInclude HAIKU_TOP src bin coreutils ; SubInclude HAIKU_TOP src bin desklink ; -SubInclude HAIKU_TOP src bin diffutils ; SubInclude HAIKU_TOP src bin fwcontrol ; SubInclude HAIKU_TOP src bin hid_decode ; SubInclude HAIKU_TOP src bin ideinfo ; diff --git a/src/bin/diffutils/ABOUT-NLS b/src/bin/diffutils/ABOUT-NLS deleted file mode 100644 index 022965c6ac..0000000000 --- a/src/bin/diffutils/ABOUT-NLS +++ /dev/null @@ -1,396 +0,0 @@ -Notes on the Free Translation Project -************************************* - - Free software is going international! The Free Translation Project -is a way to get maintainers of free software, translators, and users all -together, so that will gradually become able to speak many languages. -A few packages already provide translations for their messages. - - If you found this `ABOUT-NLS' file inside a distribution, you may -assume that the distributed package does use GNU `gettext' internally, -itself available at your nearest GNU archive site. But you do _not_ -need to install GNU `gettext' prior to configuring, installing or using -this package with messages translated. - - Installers will find here some useful hints. These notes also -explain how users should proceed for getting the programs to use the -available translations. They tell how people wanting to contribute and -work at translations should contact the appropriate team. - - When reporting bugs in the `intl/' directory or bugs which may be -related to internationalization, you should tell about the version of -`gettext' which is used. The information can be found in the -`intl/VERSION' file, in internationalized packages. - -Quick configuration advice -========================== - - If you want to exploit the full power of internationalization, you -should configure it using - - ./configure --with-included-gettext - -to force usage of internationalizing routines provided within this -package, despite the existence of internationalizing capabilities in the -operating system where this package is being installed. So far, only -the `gettext' implementation in the GNU C library version 2 provides as -many features (such as locale alias, message inheritance, automatic -charset conversion or plural form handling) as the implementation here. -It is also not possible to offer this additional functionality on top -of a `catgets' implementation. Future versions of GNU `gettext' will -very likely convey even more functionality. So it might be a good idea -to change to GNU `gettext' as soon as possible. - - So you need _not_ provide this option if you are using GNU libc 2 or -you have installed a recent copy of the GNU gettext package with the -included `libintl'. - -INSTALL Matters -=============== - - Some packages are "localizable" when properly installed; the -programs they contain can be made to speak your own native language. -Most such packages use GNU `gettext'. Other packages have their own -ways to internationalization, predating GNU `gettext'. - - By default, this package will be installed to allow translation of -messages. It will automatically detect whether the system already -provides the GNU `gettext' functions. If not, the GNU `gettext' own -library will be used. This library is wholly contained within this -package, usually in the `intl/' subdirectory, so prior installation of -the GNU `gettext' package is _not_ required. Installers may use -special options at configuration time for changing the default -behaviour. The commands: - - ./configure --with-included-gettext - ./configure --disable-nls - -will respectively bypass any pre-existing `gettext' to use the -internationalizing routines provided within this package, or else, -_totally_ disable translation of messages. - - When you already have GNU `gettext' installed on your system and run -configure without an option for your new package, `configure' will -probably detect the previously built and installed `libintl.a' file and -will decide to use this. This might be not what is desirable. You -should use the more recent version of the GNU `gettext' library. I.e. -if the file `intl/VERSION' shows that the library which comes with this -package is more recent, you should use - - ./configure --with-included-gettext - -to prevent auto-detection. - - The configuration process will not test for the `catgets' function -and therefore it will not be used. The reason is that even an -emulation of `gettext' on top of `catgets' could not provide all the -extensions of the GNU `gettext' library. - - Internationalized packages have usually many `po/LL.po' files, where -LL gives an ISO 639 two-letter code identifying the language. Unless -translations have been forbidden at `configure' time by using the -`--disable-nls' switch, all available translations are installed -together with the package. However, the environment variable `LINGUAS' -may be set, prior to configuration, to limit the installed set. -`LINGUAS' should then contain a space separated list of two-letter -codes, stating which languages are allowed. - -Using This Package -================== - - As a user, if your language has been installed for this package, you -only have to set the `LANG' environment variable to the appropriate -`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code, -and `CC' is an ISO 3166 two-letter country code. For example, let's -suppose that you speak German and live in Germany. At the shell -prompt, merely execute `setenv LANG de_DE' (in `csh'), -`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). -This can be done from your `.login' or `.profile' file, once and for -all. - - You might think that the country code specification is redundant. -But in fact, some languages have dialects in different countries. For -example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The -country code serves to distinguish the dialects. - - The locale naming convention of `LL_CC', with `LL' denoting the -language and `CC' denoting the country, is the one use on systems based -on GNU libc. On other systems, some variations of this scheme are -used, such as `LL' or `LL_CC.ENCODING'. You can get the list of -locales supported by your system for your country by running the command -`locale -a | grep '^LL''. - - Not all programs have translations for all languages. By default, an -English message is shown in place of a nonexistent translation. If you -understand other languages, you can set up a priority list of languages. -This is done through a different environment variable, called -`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' -for the purpose of message handling, but you still need to have `LANG' -set to the primary language; this is required by other parts of the -system libraries. For example, some Swedish users who would rather -read translations in German than English for when Swedish is not -available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. - - In the `LANGUAGE' environment variable, but not in the `LANG' -environment variable, `LL_CC' combinations can be abbreviated as `LL' -to denote the language's main dialect. For example, `de' is equivalent -to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' -(Portuguese as spoken in Portugal) in this context. - -Translating Teams -================= - - For the Free Translation Project to be a success, we need interested -people who like their own language and write it well, and who are also -able to synergize with other translators speaking the same language. -Each translation team has its own mailing list. The up-to-date list of -teams can be found at the Free Translation Project's homepage, -`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams" -area. - - If you'd like to volunteer to _work_ at translating messages, you -should become a member of the translating team for your own language. -The subscribing address is _not_ the same as the list itself, it has -`-request' appended. For example, speakers of Swedish can send a -message to `sv-request@li.org', having this message body: - - subscribe - - Keep in mind that team members are expected to participate -_actively_ in translations, or at solving translational difficulties, -rather than merely lurking around. If your team does not exist yet and -you want to start one, or if you are unsure about what to do or how to -get started, please write to `translation@iro.umontreal.ca' to reach the -coordinator for all translator teams. - - The English team is special. It works at improving and uniformizing -the terminology in use. Proven linguistic skill are praised more than -programming skill, here. - -Available Packages -================== - - Languages are not equally supported in all packages. The following -matrix shows the current state of internationalization, as of March -2002. The matrix shows, in regard of each package, for which languages -PO files have been submitted to translation coordination, with a -translation percentage of at least 50%. - - Ready PO files bg ca cs da de el en eo es et fi fr - +-------------------------------------+ - a2ps | [] [] [] [] | - bash | [] [] [] [] | - bfd | [] [] | - binutils | [] [] | - bison | [] [] [] | - clisp | [] [] [] [] | - cpio | [] [] [] [] | - diffutils | [] [] [] [] [] [] | - enscript | [] [] | - error | [] [] | - fetchmail | () [] [] [] () | - fileutils | [] [] [] [] [] | - findutils | [] [] [] [] [] | - flex | [] [] [] [] | - gas | [] [] | - gawk | [] [] | - gcal | [] [] | - gcc | [] [] | - gettext | [] [] [] [] [] | - gnupg | [] [] [] [] [] [] | - gprof | [] [] | - grep | [] [] [] [] [] [] | - hello | [] [] [] [] [] [] [] [] | - id-utils | [] [] [] | - indent | [] [] [] [] [] | - jpilot | () [] [] [] | - jwhois | [] [] | - kbd | [] [] | - ld | [] [] | - libc | [] [] [] [] [] [] [] | - lilypond | [] [] | - lynx | [] [] [] [] | - m4 | [] [] [] [] [] | - make | [] [] [] [] | - mysecretdiary | [] [] | - nano | [] () [] [] [] [] | - nano_1_0 | [] () [] [] [] [] | - opcodes | [] [] [] | - parted | [] [] [] [] | - ptx | [] [] [] [] [] | - python | | - recode | [] [] [] [] [] [] | - sed | [] [] [] [] [] [] [] [] | - sh-utils | [] [] [] [] [] [] [] [] | - sharutils | [] [] [] [] [] [] | - sketch | () [] () | - soundtracker | [] [] [] | - sp | | - tar | [] [] [] [] [] [] | - texinfo | [] [] [] [] [] | - textutils | [] [] [] [] [] | - util-linux | [] [] [] [] | - vorbis-tools | | - wdiff | [] [] [] [] [] | - wget | [] [] [] [] [] [] [] [] | - +-------------------------------------+ - bg ca cs da de el en eo es et fi fr - 1 12 11 31 36 9 1 8 39 15 1 50 - - gl he hr hu id it ja ko lv nb nl nn - +-------------------------------------+ - a2ps | () () [] | - bash | | - bfd | [] | - binutils | [] | - bison | [] [] | - clisp | [] | - cpio | [] [] [] | - diffutils | [] [] [] | - enscript | [] | - error | [] | - fetchmail | | - fileutils | [] [] [] | - findutils | [] [] [] [] [] [] | - flex | [] | - gas | | - gawk | [] | - gcal | | - gcc | | - gettext | [] | - gnupg | [] [] [] | - gprof | | - grep | [] | - hello | [] [] [] [] [] [] [] [] [] [] | - id-utils | [] | - indent | [] [] [] | - jpilot | () () | - jwhois | | - kbd | | - ld | | - libc | [] [] [] [] | - lilypond | [] [] | - lynx | [] [] | - m4 | [] [] [] [] | - make | [] [] [] [] | - mysecretdiary | | - nano | [] [] [] () [] () [] | - nano_1_0 | [] [] [] () [] () [] | - opcodes | [] | - parted | [] [] [] | - ptx | [] [] [] [] | - python | | - recode | [] [] [] | - sed | [] [] [] [] [] [] [] | - sh-utils | [] [] [] [] [] | - sharutils | [] [] [] | - sketch | () | - soundtracker | [] | - sp | | - tar | [] [] [] | - texinfo | [] [] | - textutils | [] [] | - util-linux | () [] | - vorbis-tools | | - wdiff | | - wget | [] [] [] [] [] | - +-------------------------------------+ - gl he hr hu id it ja ko lv nb nl nn - 19 7 0 4 6 11 22 9 1 8 19 4 - - no pl pt pt_BR ru sk sl sv tr uk zh_TW - +----------------------------------------+ - a2ps | () () () [] [] [] () | 8 - bash | | 4 - bfd | [] [] | 5 - binutils | [] | 4 - bison | [] [] [] | 8 - clisp | | 5 - cpio | [] [] [] [] | 11 - diffutils | [] [] [] [] [] | 14 - enscript | [] [] [] | 6 - error | [] [] [] | 6 - fetchmail | () () [] | 4 - fileutils | [] [] [] [] | 12 - findutils | [] [] [] [] [] [] [] | 18 - flex | [] [] [] | 8 - gas | [] | 3 - gawk | [] [] | 5 - gcal | [] [] | 4 - gcc | [] | 3 - gettext | [] [] [] [] | 10 - gnupg | [] [] [] | 12 - gprof | [] [] | 4 - grep | [] [] [] | 10 - hello | [] [] [] [] [] [] [] | 25 - id-utils | [] [] | 6 - indent | [] [] [] [] | 12 - jpilot | () () | 3 - jwhois | () () [] | 3 - kbd | [] [] | 4 - ld | [] [] | 4 - libc | [] [] [] [] [] [] | 17 - lilypond | [] | 5 - lynx | [] [] [] | 9 - m4 | [] [] [] | 12 - make | [] [] [] [] | 12 - mysecretdiary | [] [] | 4 - nano | () [] [] [] [] | 14 - nano_1_0 | () [] [] [] | 13 - opcodes | [] [] | 6 - parted | [] [] [] | 10 - ptx | [] [] [] [] [] [] | 15 - python | | 0 - recode | [] [] [] [] | 13 - sed | [] [] [] [] [] [] | 21 - sh-utils | [] [] [] [] [] [] [] [] [] | 22 - sharutils | [] [] [] | 12 - sketch | [] () | 3 - soundtracker | [] | 5 - sp | | 0 - tar | [] [] [] [] [] [] [] | 16 - texinfo | [] [] [] | 10 - textutils | [] [] [] [] | 11 - util-linux | [] [] [] | 8 - vorbis-tools | [] | 1 - wdiff | [] [] [] [] | 9 - wget | [] [] [] [] [] [] [] | 20 - +----------------------------------------+ - 35 teams no pl pt pt_BR ru sk sl sv tr uk zh_TW - 55 domains 5 13 2 12 25 11 11 41 34 4 7 489 - - Some counters in the preceding matrix are higher than the number of -visible blocks let us expect. This is because a few extra PO files are -used for implementing regional variants of languages, or language -dialects. - - For a PO file in the matrix above to be effective, the package to -which it applies should also have been internationalized and -distributed as such by its maintainer. There might be an observable -lag between the mere existence a PO file and its wide availability in a -distribution. - - If March 2002 seems to be old, you may fetch a more recent copy of -this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date -matrix with full percentage details can be found at -`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'. - -Using `gettext' in new packages -=============================== - - If you are writing a freely available program and want to -internationalize it you are welcome to use GNU `gettext' in your -package. Of course you have to respect the GNU Library General Public -License which covers the use of the GNU `gettext' library. This means -in particular that even non-free programs can use `libintl' as a shared -library, whereas only free software can use `libintl' as a static -library or use modified versions of `libintl'. - - Once the sources are changed appropriately and the setup can handle -to use of `gettext' the only thing missing are the translations. The -Free Translation Project is also available for packages which are not -developed inside the GNU project. Therefore the information given above -applies also for every other Free Software Project. Contact -`translation@iro.umontreal.ca' to make the `.pot' files available to -the translation teams. - diff --git a/src/bin/diffutils/AUTHORS b/src/bin/diffutils/AUTHORS deleted file mode 100644 index f5f0e90b32..0000000000 --- a/src/bin/diffutils/AUTHORS +++ /dev/null @@ -1,112 +0,0 @@ -Authors of GNU diffutils. - - Copyright 2001 Free Software Foundation, Inc. - - This file is part of GNU diffutils. - - GNU diffutils is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GNU diffutils is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GNU diffutils; see the file COPYING. If not, write to - the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. - -The following contributions warranted legal paper exchanges with the -Free Software Foundation. Also see files ChangeLog and THANKS. - -DIFFUTILS Leonard H. Tower Jr. US 1949 1987-03-09 -Assigns diff (diff.c, initial version). - -DIFFUTILS Torbjorn Granlund Sweden 1961 1988-01-11 -Assigns cmp. -tege@matematik.su.se - -DIFFUTILS Mike Haertel US 1967 1988-09-16 -Assigns changes to diff. - -DIFFUTILS David S. Hayes US ? 1988-01-12 -Assigns changes to diff. - -DIFFUTILS Randall Smith US 1964 1988-09-21 -Assigns diff3. - -DIFFUTILS Richard Stallman US 1953 1988-01-15 -Assigns changes to GNU Diff. - -DIFFUTILS F. Thomas May US 1965 1989-08-22 -Assigns changes to diff (for -D). - -DIFFUTILS Optimal Solutions, Inc. 1989-08-14 -Disclaims changes by Thomas May to diff. - -DIFFUTILS Wayne Davison 1990-09-10 -Disclaims changes to diff. - -DIFFUTILS Digital Research Inc. 1990-09-13 -Disclaims changes by Wayne Davison to diff. - -DIFFUTILS Paul Eggert 1990-03-16 -Disclaims changes to diff. -eggert@twinsun.com - -DIFFUTILS Paul Eggert 1990-08-14 -Disclaims changes to GNU Diff. -eggert@twinsun.com - -DIFFUTILS Twin Sun Inc. 1990-03-16 -Disclaims changes to GNU Diff by Paul Eggert. - -DIFFUTILS Twin Sun Inc. 1990-08-14 -Disclaims changes to GNU Diff by Paul Eggert. - -DIFFUTILS Chip Rosenthal US 1959 1990-03-06 -Assigns changes to diff. -chip@chinacat.Unicom.COM - -DIFFUTILS Unicom Systems Development 1990-03-06 -Disclaims changes by Chip Rosenthal to diff. - -GCC DIFFUTILS Paul Eggert and Twin Sun Inc. 1992-03-11 -Disclaims changes by Paul Eggert to gcc and diff. -eggert@twinsun.com - -DIFF Wayne Davison 1993-06-20 -Disclaims diffcvt.c. - -DIFFUTILS Francois Pinard Canada 1949 1993-01-15 -Assigns wdiff and future changes submitted to the FSF. -pinard@iro.umontreal.ca - -DIFFUTILS Patrick D'Cruze Australia 1971 1994-11-10 -Assigns changes (makefile.in, analyze.c, cmp.c, error.c, diff.c, -diff3.c, getopt.c, getopt1.c, regex.c, sdiff.c, util.c, xmalloc.c; -new file: language.++) - -DIFFUTILS Paul R. Eggert US 1954 1997-04-07 -Assigns past and future changes. -eggert@twinsun.com - -DIFFUTILS Paul R. Eggert US 1954 1997-04-07 -Assigns past and future changes to manual. -eggert@twinsun.com - -ANY DIFFUTILS GNATS Cyclic Software 1997-11-11 -Assigns past and future works (work for hire by Tim Pierce (diffutils) and -Abe Feldman (GNATS)). -kingdon@cyclic.com - -WEBPAGES Gregory B. Harvey Canada 1976 1998-02-14 -Assigns web pages describing GNU Diffutils and future changes. - -DIFFUTILS Olga Nikulin Russia 1965 2001-01-11 -Assigns changes to diff. (diffutils-2.7.2/analyze.c, context.c, diff.[ch], -ed.c, ifdef.c, io.c, normal.c, side.c, util.c) -onikulin@yahoo.com diff --git a/src/bin/diffutils/COPYING b/src/bin/diffutils/COPYING deleted file mode 100644 index d60c31a97a..0000000000 --- a/src/bin/diffutils/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/src/bin/diffutils/ChangeLog b/src/bin/diffutils/ChangeLog deleted file mode 100644 index 1e8723d4c4..0000000000 --- a/src/bin/diffutils/ChangeLog +++ /dev/null @@ -1,3409 +0,0 @@ -2002-04-05 Paul Eggert - - * NEWS, configure.ac (AC_INIT): Version 2.8.1. - - * configure.ac (AC_HEADER_STDBOOL): Add. - (AC_CHECK_HEADERS): Remove stdbool.h. - * m4/stdbool.m4: New file. - * m4/prereq.m4 (jm_PREREQ_EXCLUDE): - Use AC_HEADER_STDBOOL rather than AC_CHECK_HEADERS(stdbool.h). - (jm_PREREQ_HASH): Likewise. - - * src/system.h (SSIZE_MAX): Define if limits.h doesn't. - - * src/analyze.c (diff_2_files): Assign PTRDIFF_MAX - 1 to a - size_t variable, just in case there's a problem with ptrdiff_t - versus size_t. - - * lib/cmpbuf.c (errno): Remove decl; K&R C is no longer supported. - Include limits.h. - (SIZE_MAX, SSIZE_MAX): Define if standard headers don't. - (MIN): New macro. - (block_read): Do not attempt to read more than SSIZE_MAX bytes, as the - resulting behavior is implementation-defined. Work around bug in - Tru64 5.1, which can't read more than INT_MAX bytes at a time. - * src/cmp.c (cmp): Use block_read instead of read, to work - around Tru64 5.1 bug. - * src/diff3.c (read_diff): Likewise. - * src/diff3.c: Include cmpbuf.h. - - * THANKS: Add Ulrich Drepper. - - * INSTALLME: Mention GNU texinfo. - - * doc/diff.texi: - Use new @copying directive. - Put @contents first, not last, since Texinfo now suggests this. - Fix bug in -w documentation noted by Karl Berry. - Mention links for speedup. - New node "Speedups" for future speedups. - Just say "Index", not "Concept Index". - -2002-03-26 Paul Eggert - - * src/Makefile.am: - (INCLUDES): Remove this obsolete macro, replacing it with: - (AM_CPPFLAGS): New macro. - -2002-03-26 Albert Chin-A-Young - - * src/Makefile.am (datadir): Remove, as it conflicts with --datadir. - -2002-03-26 Paul Eggert - - * doc/diff.texi (dircategory GNU packages): Fix typo: a "* " was - missing before the menu entry. Bug diagnosed by Adam Heath. - Also, put this dircategory after the Individual utilities dircategory, - to work around a compatibility problem with Debian install-info. - -2002-03-24 Eli Zaretskii - - * src/io.c (sip): Do not mishandle buffered count when reverting - to text mode. - -2002-03-23 Paul Eggert - - * NEWS, configure.ac (AC_INIT): Version 2.8. - * configure.ac (AC_PREREQ): 2.53. - * INSTALLME: Upgrade to gettext 0.11.1 and help2man 1.27. - - * doc/diff.texi: Upgrade the description of `patch' to GNU patch - 2.5.4, and revamp the documentation accordingly. - - * src/diff.c (main): Fix typo that prevented diff -y from working. - Bug reported by Mitsuru Chinen. - -2002-03-15 Paul Eggert - - * lib/c-stack.c (c_stack_die) [!HAVE_SIGINFO_T]: Don't use info. - Bug reported by Eli Zaretskii. - -2002-03-15 Eli Zaretskii - - * ms/config.sed: Tweak editing of install-info-am target. - -2002-03-12 Paul Eggert - - * NEWS, configure.ac (AC_INIT): Version 2.7.10. - - * NEWS: cmp -l -s and cmp -s -l are not allowed. - Deprecate diff -h, -H, -L, -P, --inhibit-hunk-merge. - - * configure.ac (jm_PREREQ_HARD_LOCALE): Add. - (AM_INIT_AUTOMAKE): Do not distribute shar file. - - * doc/diff.texi (Overview): byte != character. - (Detailed Context, Detailed Unified, Alternate Names, diff Options): - Do not document diff -L. - (Comparing Directories, Making Patches, diff Options): - Do not document diff -P. - (diff Performance, sdiff Option Summary, diff Options, sdiff Options): - Do not document diff -H. - (diff Performance, diff Options): Do not document --horizon-lines. - (cmp Options): Prefer -b to -c. - (cmp Options, diff Options, diff3 Options, patch Options, - sdiff Options): Put short options next to the similar long options. - Document --help, and use the same wording for --verbose. - (diff3 Options): Fix typo in description of -E, which used wrongly used - "-e" instead of "-E". - - * lib/hard-locale.c (alloca): Remove. - Include stdlib.h if available, for malloc. - (hard_locale): Use malloc, not alloca, so that we need not worry about - alloca issues. Test for storage allocation failure. - - * m4/prereq.m4 (jm_PREREQ): Add jm_PREREQ_HARD_LOCALE. - (jm_PREREQ_HARD_LOCALE): New macro. - - * src/cmp.c (specify_comparison_type): New function. - (check_stdout): "indices and codes" -> "byte numbers and values" - (main): Detect clashing options. - (cmp): Use "byte" rather than "char" if a translation for "byte" - is available, even when in the POSIX locale. - - * src/diff.c (option_help_msgid): Do not document -L, -P, - --horizon-lines, --inhibit-hunk-merge, -H. - * src/diff.h: -L -> --label - -2002-03-11 Paul Eggert - - * NEWS, configure.ac (AC_INIT): Version 2.7.9. - - * INSTALLME: Update to autoconf 2.53, automake 1.6, help2man - 1.25 with patch. - - * configure.ac (AC_INIT): - Change package name from diff to diffutils. - (AM_INIT_AUTOMAKE): Use new form, with option gnits, - rather than old from that duplicated AC_INIT. - (AM_MISSING_PROG): Add help2man. - (REGEX_MALLOC): Define. - (AC_CONFIG_FILES): Add man/Makefile. - - * Makefile.am (AUTOMAKE_OPTIONS): Remove. - * doc/Makefile.am (AUTOMAKE_OPTIONS): Remove. - * lib/Makefile.am (AUTOMAKE_OPTIONS): Likewise. - * ms/Makefile.am (AUTOMAKE_OPTIONS): Likewise. - * src/Makefile.am (AUTOMAKE_OPTIONS): Likewise. - - * lib/c-stack.c: Include - (ENOTSUP): Define if errno.h doesn't. - (SA_NODEFER, SA_ONSTACK, SA_RESETHAND, SA_SIGINFO, SIGSTKSZ, - _SC_PAGESIZE, ALTERNATE_STACK_SIZE, stack_t, sigaltstack): - Remove; we now assume them all when - HAVE_XSI_STACK_OVERFLOW_HEURISTIC, so we don't need - substitutes. - (): Include only if HAVE_XSI_STACK_OVERFLOW_HEURISTIC. - (alternate_signal_stack): Now of size SIGSTKSZ. - (segv_handler): Simplify, under the assumption that - HAVE_XSI_STACK_OVERFLOW_HEURISTIC is nonzero. - (c_stack_action): Likewise. - (exit_failure) [DEBUG]: Initialize to 0, not 1. - (recurse, main) [DEBUG]: Remove main args. - - * m4/c-stack.m4 (AC_SYS_XSI_STACK_OVERFLOW_HEURISTIC): Change - wording of message. Do not check for stdbool.h or ucontext.h, - or for ucontext_t or sigaction or sigaltstack. - - * po/LINGUAS: Add zh_TW. - - * Makefile.am (SUBDIRS): Add man. - * man/Makefile.am: New file. - * src/cmp.c (usage): Reword for help2man. - * src/diff.c (option_help_msgid): Likewise. - * src/diff3.c (option_help_msgid, usage): Likewise. - * src/sdiff3.c (option_help_msgid, usage): Likewise. - Reword for help2man. - - * THANKS: Add email address for Tower. - - * config/config.guess, config/config.sub, config/depcomp, - config/install-sh, config/mdate-sh, config/missing, - config/mkinstalldirs, config/texinfo.texi: Update - to recent version (maintained in other packages). - -2002-03-04 Bruno Haible - - * m4/gettext.m4 (AM_GNU_GETTEXT): Set LIBINTL and LTLIBINTL to empty if - no preinstalled GNU gettext was found. - -2002-03-02 Eli Zaretskii - - * ms/config.sed: Tweak editing of install-info-am and - uninstall-info-am targets, to include 8+3-butchered names of Info - files. - -2002-02-28 Paul Eggert - - * NEWS, configure.ac (AC_INIT, AM_INIT_AUTOMAKE): Version 2.7.8. - - * doc/diff.texi: Add vr index. - Update copyright to 2002. - (Standards conformance): New chapter. - (Binary): Differing binary files are trouble unless the user asked for - brief output. - (Detailed Context): Prefer ISO time stamp format in discussion. - (Detailed Unified, Pagination): Likewise. - (Less Context): Likewise. Also use short option. - (Alternate Names): Separate option from arg. - (Making Patches): Mention -U 2. - (diff Options): Deprecate -LINES, as POSIX 1003.1-2001 does not - allow it. - - * INSTALLME: Update advice for Solaris installation problems. - We no longer use a test version of gettext. - Autoconf test version updated from 2.52f to 2.52h. - POSIX 1003.1-2001 patch for Automake. - - * configure.ac (AC__GNU_SOURCE): Add this, - replacing AH_VERBATIM of _GNU_SOURCE. - (tempname): Use AC_LIBOBJS, not LIBOBJS=, as now required by autoconf. - (jm_PREREQ_C_STACK): Add. - (AC_CONFIG_FILES): Remove intl/Makefile. - (AM_GNU_GETTEXT): Add external arg, from gettext 0.11. - - * lib/c-stack.c, lib/c-stack.h, lib/exitfail.c, lib/exitfail.h, - lib/posixver.c, lib/posixver.h, m4/c-stack.m4, m4/gnu-source.m4, - po/cs.po, po/ja.po: New files. - - * intl/ChangeLog, intl/Makefile.in, intl/VERSION, - intl/bindtextdom.c, intl/config.charset, intl/dcgettext.c, - intl/dcigettext.c, intl/dcngettext.c, intl/dgettext.c, - intl/dngettext.c, intl/explodename.c, intl/finddomain.c, - intl/gettext.c, intl/gettextP.h, intl/gmo.h, intl/hash-string.h, - intl/intl-compat.c, intl/l10nflist.c, intl/libgnuintl.h, - intl/loadinfo.h, intl/loadmsgcat.c, intl/localcharset.c, - intl/locale.alias, intl/localealias.c, intl/localename.c, - intl/ngettext.c, intl/os2compat.c, intl/os2compat.h, intl/osdep.c, - intl/plural-eval.c, intl/plural-exp.c, intl/plural-exp.h, - intl/plural.c, intl/plural.y, intl/ref-add.sin, intl/ref-del.sin, - intl/textdomain.c, m4/isc-posix.m4, m4/libtool.m4: Remove. - - * ABOUT-NLS: Update to Gettext 0.11. - - * Makefile.am (SUBDIRS): Remove intl. - - * config/config.guess, config/config.rpath, config/config.sub, - config/texinfo.tex, config/depcomp, config/texinfo.tex, - lib/tempname.c: Update to latest version from other packages. - - * lib/xalloc.h (xalloc_exit_failure): Remove; subsumed by exit_failure. - * lib/xmalloc.c: Include exitfail.h. - (xalloc_exit_failure): Remove; subsumed by exit_failure. - All uses changed. - - * lib/Makefile.am (noinst_HEADERS): Add c-stack.h, exitfail.h. - (libdiffutils_a_SOURCES): Add c-stack.c, exitfail.c, quotesys.c. - (INCLUDES): Remove. - - * lib/cmpbuf.h (buffer_lcm): New arg LCM_MAX. - * lib/cmpbuf.c: Include errno.h. - (errno): Declare if !STDC_HEADERS. - Include signal.h. - (SA_RESTART): Define if not already defined. - Include . - (PTRDIFF_MAX): Define if not already defined. - (TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM): Likewise. - (block_read): Accommodate ancient AIX hosts that set errno to EINTR - after uncaught SIGCONT. - (buffer_lcm): Return a reasonable size if the multiple is too large. - New arg LCM_MAX. All callers changed. - - * lib/hard-locale.c: Include "hard-locale.h". - (hard_locale): Ignore ENABLE_NLS, since we want to operate on - locales other than LC_MESSAGES. - - * m4/prereq.m4 (jm_PREREQ): Add jm_PREREQ_POSIXVER. - (jm_PREREQ_POSIXVER): New macro. - - * m4/setmode.m4 (AC_FUNC_SETMODE_DOS): - Check for fcntl.h and unistd.h unconditionally. - Suggested by Bruno Haible. - - * po/LINGUAS: Add cs, ja. - * po/POTFILES.in: Add lib/c-stack.c, src/dir.c. - - * src/Makefile.am (datadir): @DATADIRNAME@ -> share. - (INCLUDES): Remove intl. - (LDADD): Change INTLLIBS to LIBINTL. - No longer need to link libdiffutils.a twice. - - * src/analyze.c (diff_2_files): - Avoid arithmetic overflow in buffer size calculation. - - * src/cmp.c: Include c-stack.h, exitfail.h. - (hard_locale_LC_MESSAGES): Depend on ENABLE_NLS. - (try_help, check_stdout, main, cmp): 2 -> EXIT_TROUBLE. - (main): Check for stack overflow. - 0 -> EXIT_SUCCESS. - 1 -> EXIT_FAILURE. - (cmp): Likewise. - Accommodate ancient AIX hosts that set errno to - EINTR after uncaught SIGCONT. - - * src/context.c (pr_context_hunk): - Do not dump core if an enormous context causes an - arithmetic overflow. - (pr_unidiff_hunk): Likewise. - (find_hunk): Likewise. - - * src/diff.h: unsigned -> unsigned int. - * src/diff.c: Include c-stack.h, exitfail.h. - Do not include signal.h. - (specify_style, specify_value): Bring these routines back, as POSIX - requires that the order of options not matter. - (shortopts): New constant. - (group_format_option, line_format_option): New constants. - (main): 0 -> EXIT_SUCCESS, 1 -> EXIT_FAILURE, 2 -> EXIT_TROUBLE. - Ensure that order of options does not matter. - Check for stack overflow. - If contexts overflow, substitute LIN_MAX, as that's good enough. - If multiple contexts are specified, use their maximum. - -c is equivalent to -C 3 now, instead of having an implicit context; - likewise for -u and -U 3. - Use specify_style and specify_value. - (SIGCHLD): Do not define; now done in a header. - Use new style time stamp format for -u / -U. - Reject numeric-string options if operating in POSIX 1003.1-2001 mode. - Avoid overflow problems with tab width. - Simplify from-file and to-file code. - (usage): Do not mention obsolete options. - (filetype): Do not mention whether a file is executable. - Add typed memory objects. - (compare_files): 0 -> EXIT_SUCCESS, 1 -> EXIT_FAILURE, 2 -> - EXIT_TROUBLE. - - * src/diff3.c: Include c-stack.h, exitfail.h. - (ALLOCATE): Remove. All uses changed to xmalloc, or to xmalloc plus - an overflow check. - (myread): Remove. - (main): Check for stack overflow. - 0 -> EXIT_SUCCESS, 1 -> EXIT_FAIULRE, 2 -> EXIT_TROUBLE. - (try_help): Likewise. - (process_diff): Check for integer overflow, to avoid core dumps. - 2 -> EXIT_TROUBLE. - (read_diff): Exit with status 126 if the file is not executable, - for compatibility with POSIX 1003.1-2001. - Accommodate ancient AIX hosts that set errno to EINTR after uncaught - SIGCONT. - Check for integer overflow to avoid core dumps. - (fatal, perror_with_exit): 2 -> EXIT_TROUBLE. - - * src/dir.c (dir_read): - Ignore st_size of directories: POSIX says it's garbage. - Check for integer overflow to avoid core dumps. - (diff_dirs): 0 -> EXIT_SUCCESS, 2 -> EXIT_TROUBLE. - - * src/ifdef.c: Include . - (format_group, print_ifdef_lines): Avoid core dumps with bad formats. - (do_printf_spec): Avoid alloca. - - * src/io.c (sip): - Avoid integer overflow and core dumps if buffer alignments are - preposterously incompatible. - (slurp): Do not dump core if the file is growing as we read it. - If a regular file grows, keep reading until we catch up with its EOF. - (find_and_hash_each_line): Check for integer overflow to avoid cores. - (GUESS_LINES): Remove. - (guess_lines): New function. Avoid integer overflow. - (find_identical_ends): Use it. - Avoid integer overflow and possible core dumps. - - * src/sdiff.c: Include c-stack.h, exitfail.h. Do not include signal.h. - 0 -> EXIT_SUCCESS, 1 -> EXIT_FAILURE, 2 -> EXIT_TROUBLE. - (ck_editor_status): New function. - (main): Check for stack overflow. - Adopt POSIX convention for subsidiary programs not found. - (diffarg): Check for integer overflow to avoid core dumps. - (trapsigs): Remove SA_INTERRUPT special case; now done by header. - (SIGCHLD): Likewise. - (edit): Adopt POSIX convention for subsidiary programs not found. - - * src/side.c: unsigned -> unsigned int. - - * src/system.h: Don't use alloca or include . - unsigned -> unsigned int - (EXIT_SUCCESS, EXIT_FAILURE, EXIT_TROUBLE): Define if not defined. - Include signal.h. - (SA_RESTART): Define if not defined. - (SIGCHLD): Likewise. - - * src/util.c: 2 -> EXIT_TROUBLE. - Adopt POSIX convention for ENOEXEC and exit status 126. - unsigned -> unsigned int - -2002-01-24 Paul Eggert - - * NEWS, configure.ac (AC_INIT, AM_INIT_AUTOMAKE): Version 2.7.7. - - * intl/plural.c: Regenerate with Bison 1.31. - - * ABOUT-NLS, intl/*: Update to Gettext 0.11-pre5++. - * INSTALL: Update to Autoconf 2.52f. - - * INSTALLME: New file. - * Makefile.am (EXTRA_DIST): Add config/config.rpath, INSTALLME. - (DISTCLEANFILES): Remove. - * NEWS: Reformat for imminent 2.8 release. - * README: Mention INSTALLME. - * README-alpha: Move most of contents to INSTALLME. - * THANKS: Add Bruno Haible, Jim Meyering, and Eli Zaretskii. - - * config: New subdirectory, containing the following files from .: - config.guess, config.sub, depcomp, missing, install-sh, mkinstalldirs. - Move the following files here from doc: texinfo.tex, mdate-sh. - * config/config.guess, config/config.sub, config/texinfo.tex: - Update to latest version from FSF. - * config/config.rpath: New file, from Gettext 0.11-pre5++. - - * configure.ac (AC_INIT): Use new 3-arg form. - (AC_CONFIG_SRCDIR): Specify src/diff.c here, not in AC_INIT. - (ALL_LINGUAS): Remove: now in po/LINGUAS as per Gettext 0.11. - (AC_CONFIG_AUX_DIR): New macro invocation. - - * lib/Makefile.am (noinst_HEADERS): Add gettext.h. - * lib/gettext.h: New file, from Gettext 0.11-pre5++. - * lib/prepargs.c: Include . Reported by Bruno Haible. - - * m4/codeset.m4, m4/gettext.m4, glibc21.m4, iconv.m4, isc-posix.m4, - lcmessage.m4, progtest.m4: Upgrade to Gettext 0.11-pre5++. - * m4/lib-ld.m4, m4/lib-link.m4, m4/lib-prefix.m4: New files, from - Gettext 0.11-pre5++. - - * po/LINGUAS: New file. - * po/Makefile.in.in: Upgrade to Gettext 0.11-pre5++. - * po/Makevars, po/Rules-quot, po/boldquot.sed: New files, - from Gettext 0.11-pre5++. - - * src/cmp.c (copyright_string): Update to 2002. - * src/diff.c (copyright_string): Likewise. - * src/diff3.c (copyright_string): Likewise. - * src/sdiff.c (copyright_string): Likewise. - - * src/cmp.c (bytes, parse_ignore_initial, cmp): Use UINTMAX_MAX - instead of (uintmax_t) -1, to avoid warnings on some compilers. - * src/io.c (file_block_read): Likewise, for SIZE_MAX. - - * src/cmp.c (usage): Reformat messages to ease translation. - * src/diff3.c (usage): Likewise. - * src/sdiff.c (usage): Likewise. - - * src/diff3.c (main): Remove unused variable. - - * src/dir.c: Include - (struct dirdata): New member nnames. - (locale_specific_sorting, failed_strcoll): New vars. - (dir_read): Renamed from dir_sort. Don't sort the dir. - Set new nnames member of struct dirdata. All callers changed. - (compare_names): Don't check for errno after strcasecmp. - Use strcoll only if locale_specific_sorting is nonzero. - If strcoll fails, longjmp out rather than returning a value - that might result in an invalid comparison function that might - make qsort dump core. - (diff_dirs): Sort the directory ourselves. Use setjmp to recover - from strcoll failure, falling back on native byte comparison. - Make local variables volatile if they need to preserve their value - after setjmp/longjmp. - - * src/sdiff.c (handler_index_of_SIGINT, handler_index_of_SIGPIPE): - New macros. - (main): Do not confuse signal numbers with their indices. - Bug reported by Bruno Haible. - (edit): Cat lin to long before printing with %ld, since lin might - be narrow than long. - - * src/system.h (UINTMAX_MAX): New macro. - Include gettext.h, not libgettext.h. - (N_): Do not wrap arg in parentheses. Fix from Bruno Haible. - - * src/util.c (finish_output): Ensure that werrno is initialized. - (lines_differ): Have an explicit do-nothing case for - IGNORE_NO_WHITE_SPACE, to pacify gcc -Wall. - -2001-12-29 Eli Zaretskii - - * src/sdiff.c (interact): After extracting rlen from the editor - command, test for a terminating null character, not for a newline. - - * ms/config.bat: Allow longer source directory names without - overflowing the line length limits. Create the cache in the - build directory, not in the source directory - * ms/config.sed: Fix AC_CONFIG_LINKS for when symlinks are - unavailable. - -2001-12-23 Paul Eggert - - * NEWS, configure.ac (AM_INIT_AUTOMAKE): Version 2.7.6. - - * configure.ac (ALL_LINGUAS): Add tr. - - * src/util.c (begin_output): - Have child exit with status 127 rather than reporting - failure on its own. Set errno to 0 before invoking popen. - (finish_output): Report errno on pclose failure. - Distinguish between subsidiary program not found, and failure. - - * src/sdiff.c (not_found, execdiff): Remove. - (DIFF_PROGRAM_OPTION): New constant. - (longopts, option_help_msgid, main): Add --diff-program=PROGRAM. - (check_stdout): New function. - (main): Remove DIFF_PROGRAM. Check stdout after printing version. - Use check_stdout after printing help. Use execvp/perror_fatail rather - than execdiff. Set errno to 0 before invoking popen. - Check for pclose failure properly. - (main, edit): If child exec fails, exit with 127 rather than trying to - print diagnostic. - Distinguish between subsidiary program failing and not being found. - (edit): Handle signals the same way, regardless of whether we're using - system or fork+exec. Check for system returning -1. - - * src/diff3.c (DIFF_PROGRAM_OPTION, HELP_OPTION): New constants. - (longopts, main): Use them. - (longopts, main, option_help_msgid): New option --diff-option=PROGRAM. - (main): Remove DIFF_PROGRAM support. - Check stdout after printing version. - (check_stdout): Report errno info if fclose fails. - (read_diff): Have child exit with status 127 when program is not found, - rather than trying to have the child report failure. Check for - pclose returning -1. - - * src/diff.c (DEFAULT_WIDTH): Remove. - (main): Use 130 instead of DEFAULT_WIDTH, since it's not really - builder-settable. Do not prepend DIFF_OPTIONS. - (check-stdout): If fclose (stdout) fails, print errno info. - (option_help_msgid): Default context is 3, not 2. - (usage): Work even if ptrdiff_t is wider than int. - - * doc/diff.texi (diff Options): Remove DIFF_OPTIONS. - (Invoking diff3, Invoking sdiff): Remove DIFF_PROGRAM. - (diff3 Options, sdiff Options): Add --diff-program. - - * src/cmp.c (valid_suffixes): - Add '0', to support suffixes like "MB" and "MiB". - (check_stdout): Don't assume that the translations of "write failed" - and of "standard output" lack '%'. - (main): Check stdout after printing version. - - * lib/setmode.c: [HAVE_FCNTL_H && HAVE_SETMODE_DOS]: Include . - [!HAVE_SETMODE_DOS]: Do not include . - (set_binary_mode): Return mode (not 1) if fd is a tty. - Do not assume that O_TEXT is zero. - - * doc/diff.texi (cmp Options): - In byte counts, a plain suffix (without any integer) - is assumed to modify the integer 1. Index terms like "kibibyte". - Document plain "k". - - (Reporting Bugs): Mention bug-report archive and test version - location. Ask for "diff --version" in bug reports. - -2001-12-13 Paul Eggert - - * src/diff.c (DEFAULT_WIDTH): Remove; couldn't be changed without - also changing option_help_msgid. All uses replaced with 130. - - * lib/setmode.c: Include fcntl.h and unistd.h only if - HAVE_SETMODE_DOS. - (setmode): Assume a file is binary unless the mode is O_TEXT. - * ms/README: Fix minor typos. - -2001-12-13 Eli Zaretskii - - * ms/README: New file. - - * lib/setmode.c (set_binary_mode) [HAVE_SETMODE_DOS]: Don't assume - O_TEXT has a zero value. If FD is a terminal device, do nothing - and return MODE, thus pretending that it was already in the - requested MODE. - [HAVE_FCNTL_H]: Include fcntl.h (needed for O_BINARY). - - * ms/config.sed: Remove the split prevention of config.status. - Fix Sed commands for converting absolute file names into - top_srcdir-relative ones. - - * ms/config.bat: Fix typos. - -2001-12-12 Neal H Walfield - - * diff.c (option_help_msgid): Correct the default context width - from 2 to 3. - -2001-12-11 Paul Eggert - - * m4/Makefile.am.in: Remove jm-glibc-io.m4 - - * NEWS, configure.ac (AM_INIT_AUTOMAKE): Version 2.7.5. - - * configure.ac (PR_PROGRAM): Use AC_DEFINE_UNQUOTED, so that - $PR_PROGRAM is expanded by sh. - (ptrdiff_t, ssize_t): Use AC_CHECK_TYPE with a default of int, - not AC_CHECK_TYPES. - (jm_AC_DOS, AC_FUNC_SETMODE_DOS): New macros. - (AC_CONFIG_FILES): Add ms/Makefile. - - * doc/diff.texi: Add --no-ignore-file-name-case. - File name case sensitivity now affects file name exclusion. - Fix typos. - - * src/util.c: Include dirname.h. - (dir_file_pathname): Use base_name rather than file_name_lastdirchar. - - * src/system.h (S_IXUSR, S_IXGRP, S_IXOTH): New macros. - Include rather than rolling it ourselves. - (file_name_lastdirchar, HAVE_SETMODE, set_binary_mode): Remove. - - * src/sdiff.c: Include . - (expand_name): Use base_name rather than file_name_lastdirchar, for - portability to DOS. - (main): Initialize xalloc_exit_failure before possibly invoking - any memory allocator. - - * src/io.c: Include setmode.h. - - * src/diff3.c (main): - Initialize xalloc_exit_failure before possibly invoking any memory - allocator. - - * src/diff.c: Include dirname.h, setmode.h. - - (main): Later values and/or styles now silently override earlier. - (specify_value, specify_style): Likewise. All callers changed. - Remove. - (binary, main, option_help_msgid, compare_files): - HAVE_SETMODE -> HAVE_SETMODE_DOS. - (NO_IGNORE_FILE_NAME_CASE_OPTION): New constant. - (longopts, main, option_help_msgid): Support it. - (exclude_options): New function. - (main): Use it. Initialize xalloc_exit_failure before potentially - allocating memory. - - (filetype): Distinguish executable files from others, as POSIX - suggests. - - (compare_files): Use base_name instead of file_name_lastdirchar. - - * src/cmp.c: Include , . - (hard_locale_LC_MESSAGES): New macro. - (sprintc): Remove int width arg; it's now the caller's responsibility - to pad. All callers changed. - (stat_buf): New static var; was formerly a local var in 'main'. - (valid_suffixes): Add 'K', for 'KiB'. - (option_help_msgid): Don't confuse bytes with characters. - (main): Set xalloc_exit_failure before invoking anything that might - allocate memory. Fix bug: -n was incorrectly ignored when optimizing - the case of regular files with different lengths. - (cmp): Use an index column wide enough to store this comparison's - indexes. In locales other than the POSIX locale, say "byte" - rather than "char". - - * ms/config.bat: pc -> ms - - * ms/Makefile.am, m4/setmode.m4, lib/setmode.c, lib/setmode.h: - New file. - - * lib/Makefile.am (noinst_HEADERS): Add dirname.h, setmode.h. - (libdiffutils_a_SOURCES): Add basename.c, setmode.c. - - * Makefile.am (SUBDIRS): Add ms. - -2001-12-10 Paul Eggert - - * m4/fnmatch.m4: Test for FNM_CASEFOLD. - -2001-12-03 Paul Eggert - - * lib/posix/regex.h: Fix copyright notice. - -2001-12-03 Paul Eggert - - * NEWS, configure.ac (AM_INIT_AUTOMAKE): Version 2.7.4. - - * diff.texi (direntry, Overview, Comparison, Binary, Invoking cmp): - Use "byte" rather than "character" when talking about cmp, since - it compares bytes, not character. - (Invoking cmp): New trailing operands FROM-SKIP and TO-SKIP. - -i or --ignore-initial now accepts FROM-SKIP:TO-SKIP. - New option -n or --bytes. - Count operands now may be in octal or hex, and may be followed by a - size multiplier. - - * configure.ac (DEFAULT_DIFF_PROGRAM): - Define to "diff", not "$bindir/diff" (which didn't work anyway). - (AC_CHECK_MEMBERS): Add struct stat.st_blksize, struct stat.st_rdev. - (AC_STRUCT_ST_BLKSIZE, AC_STRUCT_ST_RDEV): Remove; obsolescent. - (AC_FUNC_FORK): Use this, instead of obsolescent AC_FUNC_VFORK. - (AC_CONFIG_FILES, AC_CONFIG_COMMANDS): Add. - (AC_OUTPUT): Remove args; they were obsolescent. - - * util.c (setup_output, begin_output, finish_output): - HAVE_FORK -> HAVE_WORKING_FORK || HAVE_WORKING_VFORK. - * sdiff.c (diffpid, cleanup, main, edit): Likewise. - * diff3.c (read_diff): Likewise. - - * system.h (STAT_BLOCKSIZE): - Use HAVE_STRUCT_STAT_ST_BLKSIZE, not HAVE_ST_BLKSIZE. - (vfork): New macro. - (HAVE_FORK): Remove. - (set_binary_mode): New macro. - - * sdiff.c (main): HAVE_VFORK -> HAVE_WORKING_VFORK. - (edit): Reopen the temporary file after the editor has run, in case - the editor operates by unlinking the old file and linking a new one. - (P_tmpdir): Rename from PVT_tmpdir; this fixes a typo. - All uses changed. - - * io.c (sip, read_files): - Remove tests for HAVE_SETMODE; use set_binary_mode - instead of setmode. - (sip): Fix typo in backward lseek when reverting to text mode. - - * config.site, config.sed, config.bat: New file. - - * Makefile.am (EXTRA_DIST): Add xstrtol.c. - (noinst_HEADERS): Add xstrtol.h. - (libdiffutils_a_SOURCES): Add xstrtoumax.c. - - * cmp.c: : Include. - (ignore_initial): Now an array with 2 elements. All uses changed. - (bytes): New var. - (HELP_OPTION): New constant. - (long_options, main): Use it. - (long_options, option_help_msgid, main, cmp): - Add support for -n or --bytes. - (parse_ignore_initial): New function. - (option_help_msgid, main): Add -i M:N. - (usage, main): Add two optional trailing operands, a la BSD. - (main): setmode -> set_binary_mode. - (cmp): Report byte number of what we've seen, not of the entire file. - This is to be consistent with the line number, which is always relative - with what we've seen. - -2001-12-02 Paul Eggert - - * diff.c (main, compare_files): setmode -> set_binary_mode. - - * xstrtol.c (__xstrtol): Don't accept 'Ki'; require 'KiB'. - - * xstrtol.c (__xstrtol): Add support for IEC 60027-2. - -2001-11-25 Paul Eggert - - * NEWS, configure.ac (AM_INIT_AUTOMAKE): Version 2.7.3. - - * README-alpha: New file. - - * src/Makefile.am (INCLUDES): Add -I../lib, for regex.h. - - * configure.ac: - Don't set LIB_CLOCK_GETTIME to 'none required'; set it to - the empty string instead. - - * lib/Makefile.am (EXTRA_DIST): Add strtoimax.c, strtol.c. - - * Makefile.am (SUBDIRS): Put intl before lib, so that libintl.h exists. - - * lib/Makefile.am (noinst_HEADERS): Add unlocked-io.h. - - * configure.ac (__EXTENSIONS__): New define, for the unlocked macros. - - * README: Add copyright notice. - Remove stuff that doesn't apply any more. - - * doc/diff.texi: offsets -> indices for cmp - - * src/cmp.c (option_help_msgid): offsets -> indices - - * src/diff.c (option_help_msgid): - Don't mention --binary on POSIX hosts. - - * src/sdiff.c (STRIP_TRAILING_CR_OPTION): New constant. - (longopts, option_help_msgid, main): Add -E, --ignore-tab-expansion, - --strip-trailing-cr. - - * doc/diff.texi: Change direcategory from Utilities to GNU Packages. - Add individual utilities. - Switch to Free Documentation License. - @code -> @command - @samp -> @option - GNU -> @sc{gnu} - Expand tabs to spaces, except when in an example that actually - uses tabs. - Prefer @node with just one arg. - Document -E or --ignore-tab-expansion, --strip-trailing-cr, - --ignore-file-name-case. - Regular expressions are now grep style, not Emacs style. - cmp's -c or --print-chars option is now -b or --print-bytes. - Time stamps now depend on LC_TIME. - -p now implies ^[[:alpha:]$_]. - Flags now include ' and 0. - cmp -i is an alias for --ignore-initial - Document --from-file, --to-file. - Document DIFF_OPTIONS. - - * configure.ac (AC_CHECK_FUNCS): Add gettimeofday, clock_gettime. - (LIB_CLOCK_GETTIME): New subst. - - * src/system.h: Assume C89 or better. - (_GNU_SOURCE): Remove; config.h now defines it. - (alloca): Declare like coreutils does it. - (verify, TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM, O_RDWR, - S_IRUSR, S_IWUSR): New macros. - (STAT_BLOCKSIZE): Parenthesize definiens. - : Include if HAVE_INTTYPES_H. - (CHAR_MAX, INT_MAX): Remove. - (PTRDIFF_MAX, SIZE_MAX): New macros. - (strtoumax): New decl. - Include stddef.h. - (bzero): Remove. - (bindtextdomain, textdomain, N_): New macros. - (ISPRINT, ISSPACE): Remove ifndef wrappers. - (ISUPPER, ISDIGIT): Remove. - (TOLOWER): New macro. - (MIN): Renamed from min; all callers changed. - (MAX): Likewise, from max. - (lin): New type. - (LIN_MAX): New macro. - (file_name_cmp): Renamed from filename_cmp. All callers changed. - (file_name_lastdirchar): Renamed from file_name_lastdirchar. - All callers changed. - (could_be_mvfs_stat_bug, could_be_nfs_stat_bug, - dev_may_have_duplicate_ino): Remove. - (HAVE_SETMODE, NULL_DEVICE): New macros. - (same_file): Do not check attributes. - (same_file_attributes): New macro. - - * src/util.c: Assume C89 or better. - int -> bool for booleans. - int -> lin for line numbers. - int -> size_t for sizes. - Use angle-brackets when including quotesys.h. - Include error.h, regex.h, xalloc.h. - (message5): sizeof -> offsetof - (begin_output): Invoke pr without -f. - (lines_differ): Renamed from line_cmp, and return bool not 3-way int. - All callers changed. - Add support for IGNORE_TAB_EXPANSION. - (change_letter): Now an array rather than a function. All - callers changed. - (translate_range): Translate line numbers to long, not lin, - for convenience with printf. - (analyze_hunk): Return enum changes instead of a count of - inserts and deletes. All callers changed. - (zalloc): New function. - - * src/side.c: Assume C89 or better. - int -> bool for booleans. - int -> lin for line numbers. - - * src/sdiff.c: Assume C89 or better. - int -> bool for booleans. - int -> lin for line numbers. - Use angle-brackets when including getopt.h, quotesys.h. - Include error.h, freesoft.h, stdio.h, xalloc.h. - (copyright_string): Use only most recent year. - (authorship_msgid, option_help_msgid): Wrap in N_(). - - (tmpname): Now volatile. - (tmpmade): Remove. - (tmp): New var. - (private_tempnam, exists, letters): Remove. - (temporary_file): New function. - (edit): Use it. - (interact): Use strtoumax, not atoi. - - * src/normal.c: Assume C89 or better. - int -> lin for line numbers. - - * src/io.c: Assume C89 or better. - int -> bool for booleans. - int -> lin for line numbers. - int -> size_t for sizes. - Use angle-brackets when including cmpbuf.h. - Include regex.h, xalloc.h. - (word): Remove; now done in system.h. - (hash_value): New type; use it instead of 'unsigned' for hash values. - (file_block_read): New function. - (sip, slurp): Use it. Now static. - (sip): Ensure block size is a multiple of word size. Clear eof flag. - (slurp): Use xalloc_die to report memory exhaustion. - (find_and_hash_each_line): Use TOLOWER instead of _tolower. - Add support for IGNORE_TAB_EXPANSION. - (prepare_text_end): Strip trailing CR if requested. - (find_identical_ends): Prepare the text only once, - if they're duplicates. - Let the compiler take advantage more of the fact that the buffers are - word-aligned. - (primes): Remove. - (prime_offset): New var. - (read_var): Use prime_offset instead of primes. - Use zalloc instead of xmalloc + bzero. - - * src/ifdef.c: Assume C89 or better. - int -> lin for line numbers. - (format_group): Use strtoumax to parse line numbers. - (format_group, print_ifdef_lines): Use do_printf_spec to - handle printf specs. - (groups_letter_value): Don't use _tolower; it's locale-dependent. - (do_printf_spec): Renamed from scan_printf_spec; now does the printing. - - * src/ed.c: Assume C89 or better. - int -> lin for line numbers (or 'long' when that's more convenient). - (print_ed_hunk): Fix bug when handling double-dot inserts. - - * src/dir.c: Assume C89 or better. - int -> bool for booleans. - Include error.h, exclude.h, xalloc.h. - - (dir_sort): Return 0 on error, 1 on success. All callers changed. - compare_names -> compare_names_for_qsort. - - (compare_names): Try strcasecmp if ignore_file_name_case. Then try - strcoll. Use file_name_cmp only as a last resort. Warn about - strcasecmp or strcoll failure. - (compare_names_for_qsort): New function. - - (diff_dirs): Use compare_names rather than filename_cmp. - - * src/diff3.c: Assume C89 or better. - int -> bool for booleans. - int -> lin for line numbers. - Use angle-brackets when including getopt.h, quotesys.h. - Include error.h, freesoft.h, inttostr.h, xalloc.h. - (copyright_string): Use only most recent year. - (authorship_msgid, option_help_msgid): Wrap in N_(). - - Rename the following variables for consistency with user-visible - option spellings. All uses changed. - (text): Renamed from always_text. - (initial_tab): Renamed from tab_align_flag. - - (horizon_lines): Remove. Remove all uses. - - (main): Invoke bindtextdomain and textdomain after setlocale. - Rename "DIFF" to "DIFF_PROGRAM". - - Try to compare file0 to file1, because this is where changes are - expected to come from. Diffing between these pairs of files is more - likely to avoid phantom changes from file0 to file1. - However, use file2 as the common file if this is a 3-way diff, - for backward compatibility. Suggested by Karl Tomlinson. - - (create_diff3_block): Use xcalloc instead of malloc + bzero. - - (INT_STRLEN_BOUND): Remove; now in system.h. - - (read_diff): Always use --horizon-lines=100 rather than trying - to guess it. - Do not pass --inhibit-hunk-merge. - Minimum chunk size is 1, not 8KiB. - Use xalloc_die to report memory exhaustion. - (undotlines): Use long for start, not int. - - * src/diff.h: Assume C89 or better. - int -> bool for booleans. - int -> lin for line numbers. - Don't include regex.h. - (enum changes): New enum. - (enum line_class): Remove; subsumed by enum changes. - (enum output_style): New constant OUTPUT_UNSPECIFIED. - - (ignore_space_change_flag, ignore_all_space_flag): Remove. - (ignore_white_space): New decl, subsuming the above two. All - uses changed. - - Rename the following decls for consistency with user-visible - option spellings. All uses changed. - (text): Renamed from always_text_flag. - (ignore_blank_lines): Renamed from ignore_blank_lines_flag. - (ignore_case): Renamed from ignore_case_flag. - (brief): Renamed from no_details_flag. - (initial_tab): Renamed from tab_align_flag. - (expand_tabs): Renamed from tab_expand_flag. - (starting_file): Renamed from dir_start_file. - (paginate): Renamed from paginate_flag. - (sdiff_merge_assist): Renamed from sdiff_help_sdiff. - (left_column): Renamed from sdiff_left_only. - (suppress_common_lines): Renamed from sdiff_skip_common_lines. - (speed_large_files): Renamed from heuristic. - (minimal): Renamed from no_discards. - - (inhibit_hunk_merge): Remove. - - (strip_trailing_cr, excluded, time_format): New decls. - - (files_can_be_treated_as_binary): Renamed from ignore_some_changes. - - (group_format, line_format): Now char const *[], not char *[]. - - (struct file_data): Buffer is now word*, not char*, as it's always - aligned and this can help the compiler. buffered_chars -> buffered - (since it's a byte count, not a char count). All uses changed. - New member `eof'. - - (FILE_BUFFER): New macro. - - (excluded_filename, error, free_software_msgid): Remove decls; now in - other .h files. - - (sip, slurp): Remove decls. - (file_block_read): New decl. - (change_letter): Now an array, not a function. - (lines_differ): Renamed from line_cmp. - (analyze_hunk): Now returns enum changes rather than two change counts. - - * src/Makefile.am (diff_LDADD): New symbol. - - * src/diff.c: Assume C89 or better. - int -> bool for booleans. - long -> off_t for line numbers. - Use angle-brackets when including getopt.h, fnmatch.h, quotesys.h. - Include error.h, exclude.h, freesoft.h, hard-locale.h, prepargs.h, - regex.h, signal.h, xalloc.h. - (copyright_string): Use only most recent year. - (authorship_msgid, option_help_msgid): Wrap in N_(). - - Rename the following variables for consistency with user-visible - option spellings. All uses changed. - (binary): Renamed from binary_flag. - (new_file): Renamed from entire_new_file_flag. - (unidirectional_new_file): Renamed from unidirectional_new_file_flag. - (report_identical_files): Renamed from print_file_same_flag. - - (numeric_arg): Remove. - - (exclude, exclude_alloc, exclude_count, excluded_filename, add_exclude, - add_exclude_file): - Remove; now done by exclude.h. - - (BINARY_OPTION, FROM_FILE_OPTION, HELP_OPTION, HORIZON_LINES_OPTION, - IGNORE_FILE_NAME_CASE_OPTION, INHIBIT_HUNK_MERGE_OPTION, - LEFT_COLUMN_OPTION, LINE_FORMAT_OPTION, NORMAL_OPTION, - SDIFF_MERGE_ASSIST_OPTION, STRIP_TRAILING_CR_OPTION, - SUPPRESS_COMMON_LINES_OPTION, TO_FILE_OPTION, - UNCHANGED_LINE_FORMAT_OPTION, OLD_LINE_FORMAT_OPTION, - NEW_LINE_FORMAT_OPTION, UNCHANGED_GROUP_FORMAT_OPTION, - OLD_GROUP_FORMAT_OPTION, NEW_GROUP_FORMAT_OPTION, - CHANGED_GROUP_FORMAT_OPTION): New constants. - (longopts, main): Use them. - - (longopts, main, option_help_msgid): Add -E, --from-file, --to-file. - - (main): Invoke bindtextdomain and textdomain after setlocale. - Use grep syntax, not Emacs, for regular expressions. - Use exclude.h, not our own functions. - Use ISO 8601 time format in hard locales. - Prepend DIFF_OPTIONS. - Don't update ignore_some_changes. - Use strtoumax instead of numeric_arg. - Use specify_value when appropriate. - error -> try_help when appropriate. - -p now means ^[[:alpha:]$_], not ^[_a-zA-Z$]. - Ignore --inhibit-hunk-merge. - Prefer changed group formats to unchanged ones. - Remove now-unnecessary casts. - Set files_can_be_treated_as_binary. - - (specify_value): Renamed from specify_format. All uses changed. - - (specify_style): Default is now unspecified, not normal. All - uses changed. - - (set_mtime_to_now): New function. - (compare_files): Use it. Use memset, not bzero. - Set stdin mtime to current time even when stdin is not a regular file. - Check for same file attributes, as well as for same file. - Use files_can_be_treated_as_binary. - "write failed" -> "standard output on output failure. - - * src/context.c: Assume C89 or better. - int -> lin for line numbers. - Include inttostr.h, regex.h. - (TIMESPEC_NS): New macro. - (nstrftime): New decl. - (print_context_label): Use nstrftime and time_format to format times. - Print numeric time stamp value if localtime fails. - (print_context_function): New function. - (pr_context_hunk, pr_unidiff_hunk): Use it. - (find_function): Use size_t for sizes, not int. - - * src/cmp.c: Assume C89 or better. - int -> bool for booleans. - long -> off_t for line numbers. - Use angle-brackets when including cmpbuf.h, getopt.h. - Include error.h, freesoft.h, inttostr.h, xalloc.h. - (copyright_string): Use only most recent year. - (authorship_msgid): Wrap in N_(). - (buffer): Now word*, not char*. All uses changed. - (word): Remove macro; now in system.h. - (long_options, option_help_msgid, main): -c --print-chars -> - -b --print-bytes - (check_stdout): "write failed" -> "standard output" - (option_help_msgid): Wrap in N_(). - (main): Invoke bindtextdomain and textdomain after setlocale. - Use strtoumax instead of doing the work ourselves. - Check for same_file_attributes as well as same_file. - (cmp): Use ssize_t for read returns, not size_t. - Do not assume that size_t is not narrower than int. - Do not assume that line numbers fit in 'long'. - (block_compare_and_count, block_compare): - Compiler now checks that buffers are word-aligned. - (block_compare_and_count): Count sizes with size_t, not long. - (sprintc): byte arg is unsigned char, not unsigned. - - * src/analyze.c: Assume C89 or better. - int -> lin for line numbers. - int -> bool for booleans. - unsigned int -> size_t for sizes. - Use angle-brackets when including cmpbuf.h. - Include error.h, regex.h, xalloc.h. - (discard_confusing_lines, diff_2_files): Use zalloc rather - than xalloc+bzero. - (discard_confusing_lines): unsigned int -> lin for values that - are really line numbers. - (shift_boundaries): Do not inhibit hunk merges. - (build_reverse_script, build_script, diff_2_files): Use |, not ||. - (diff_2_files): no_details_flag & ~ignore_some_changes -> - files_can_be_treated_as_binary. Esure that buffer size is a multiple - of sizeof (word). Use file_block_read to read buffers. - (diff_2_files): Abort if output style is not one of the - expected styles. - -2001-11-23 Paul Eggert - - * src/Makefile.am, m4/vararrays.m4: New file. - - * m4/prereq.m4 (jm_PREREQ_READUTMP): - Remove, as it gives autoheader the willies. - - * m4/README, lib/prepargs.h, lib/prepargs.c, lib/offtostr.c, - lib/umaxtostr.c, lib/inttostr.c, lib/inttostr.h, - lib/imaxtostr.c, lib/freesoft.h: New files. - - * lib/freesoft.c: Include config.h, freesoft.h rather than diff.h. - (free_software_msgid): Wrap contents in N_. - - * lib/cmpbuf.h: Use prototypes instead of old-style functions. - - * lib/cmpbuf.c: - Don't include system.h; instead, include config.h, unistd.h. - Use prototypes instead of old-style functions. - (block_read): Don't assume that int is no wider than size_t. - - * lib/Makefile.am, po/POTFILES.in: New file. - -2001-11-22 Paul Eggert - - * pc/config.h: - Define filename_cmp as an object-like macro, not as a function-like - macro. - - * exgettext: Always operate in the C locale. - Set AWK using a method that works even with broken shells. - - * doc/Makefile.am: New file. - - * configure.ac (AC_INIT): - Use src/diff.c, not diff.h, as the source files got removed. - (AM_CONFIG_HEADER): Switch from AC_CONFIG_HEADER. - (AC_ARG_PROGRAM, AC_MINIX): Remove. - - (AC_PREREQ, AM_INIT_AUTOMAKE, ALL_LINGUAS, AC_PROG_AWK, - AM_PROG_CC_STDC, AC_PROG_RANLIB, AC_C_INLINE, AC_C_VARARRAYS, - DEFAULT_DIFF_PROGRAM, DEFAULT_EDITOR_PROGRAM, - AC_STRUCT_ST_MTIM_NSEC): Add. - - (PR_PROGRAM): AC_DEFINE. - - (AC_SYS_LARGEFILE): Use instead of our homebrew version. - - (_GNU_SOURCE): Define if not defined. - - (AC_CHECK_HEADERS): Add stdbool.h, unistd.h. - (AC_CHECK_TYPES): Add ptrdiff_t, uintmax_t. - (AM_GNU_GETTEXT, XGETTEXT): Add. - - (WITH_MVFS_STAT_BUG, WITH_NFS_STAT_BUG): Remove. - (HAVE_MEMCHR): Remove. - (AC_CHECK_FUNCS): Add diraccess. - (AC_REPLACE_FUNCS): Add memchr, waitpid. - (jm_FUNC_GLIBC_UNLOCKED_IO, jm_FUNC_GNU_STRFTIME, jm_FUNC_MALLOC, - jm_FUNC_REALLOC, jm_PREREQ_ERROR, jm_PREREQ_QUOTEARG, jm_PREREQ_REGEX, - jm_PREREQ_TEMPNAME, jm_AC_PREREQ_XSTRTOUMAX, AC_FUNC_FNMATCH): Add. - (fnmatch.h, regex.h): Do not create these files unless we're using - our own fnmatch and regex. - - (AC_OUTPUT): Add doc/Makefile, intl/Makefile, lib/Makefile, - lib/posix/Makefile, m4/Makefile, po/Makefile.in, src/Makefile. - - * Makefile.am: New file. - - * po/en_GB.po: Don't translate "program" to "programme". - -2001-11-20 Paul Eggert - - * m4/prereq.m4: New file. - -2001-03-16 Paul Eggert - - * lib/tempname.c (uint64_t): - Define if not defined, and if UINT64_MAX is not defined. - -2001-02-26 Paul Eggert - - * lib/tempname.c: glibc 1.32 - -2001-02-17 Paul Eggert - - * m4/Makefile.am.in: GNU fileutils 4.1 - -2001-01-09 Paul Eggert - - * lib/tempname.c (struct_stat64): New macro. - (direxists, __gen_tempname): Use it. This avoids a portability problem - with Solaris 8. - - * lib/tempname.c (): Include if HAVE_CONFIG_H. - (, , ): - Include only if STDC_HEADERS || _LIBC. - (): Include only if HAVE_FCNTL_H || _LIBC. - (): Include only if HAVE_UNISTD_H || _LIBC. - (): Include only if HAVE_SYS_TIME_H || _LIBC. - (__set_errno): Define this macro if doesn't. - (P_tmpdir, TMP_MAX, __GT_FILE, __GT_BIGFILE, __GT_DIR, __GT_NOCREATE): - Define these macros if doesn't. - (S_ISDIR, S_IRUSR, S_IWUSR, S_IXUSR): - Define these macros if - doesn't. Ignore S_ISDIR if STAT_MACROS_BROKEN. - (stat64, __getpid, __gettimeofday, __mkdir, __open, __open64, lxstat64, - __xstat64): Define if not _LIBC. - (__secure_getenv): Define if ! (HAVE___SECURE_GETENV || _LIBC). - (__gen_tempname): Invoke gettimeofday only if HAVE_GETTIMEOFDAY - || _LIBC; otherwise, fall back on plain "time". - Use macros like S_IRUSR | S_IWUSR rather than octal values like 0600. - - * lib/mkstemp.c (__GT_FILE): Define to zero if not defined. - -2000-10-25 Paul Eggert - - * lib/hard-locale.c: New file. - -2000-02-05 Paul Eggert - - * exgettext: From GCC repository - -1999-07-06 Paul Eggert - - * lib/mkstemp.c: glibc 2.2 - -1998-12-11 Paul Eggert - - * src/sdiff.c (lf_snarf): - Fix bug when help line wrapped around the input buffer. - -1998-09-15 Paul Eggert - - * diff.texi: Add @dircategory and @direntry. - -1998-09-14 Paul Eggert - - * Makefile.in (VERSION): Version 2.7.2. - (DEFAULT_DIFF_PROGRAM): Renamed from DIFF_PROGRAM. - (PR_PROGRAM): All `configure' to define it. - (srcs): Add $(diffutils_srcs), freesoft.c, quotearg.c instead of - quote.c, quotearg.h. - (distfiles): Add acconfig.h, message/*. - (all): Depend on $(destfiles), not info. - (version.c): Parenthesize `GNU diffutils'. - (common_o): Add freesoft.o - (diff_o): quote.o -> quotearg.o - (diff3_o, sdiff_o): Likewise. - (diff.dvi): Depend on version.texi. - (diff.o diff3.o quotearg.o sdiff.o util.o): - New dependency on quotearg.h - (diff3.o): DIFF_PROGRAM -> DEFAULT_DIFF_PROGRAM. - (sdiff.o): Likewise. - (messages.po): Remove. - (message/msgid.po, message/template.po): New rules. - (maintainer-clean): Renamed from realclean. - (install): Install from source directory, if applicable. - Invoke install-info if needed. - (install-strip): New rule. - (check): Set DIFF. - (stamp-h.in): Don't put the date into the timestamp. - (D_dirs): Add $D/message. - ($D.tar.gz): Compress with gzip -9. - Don't use ln to create distribution; it doesn't work with symlinks. - (srcs, distfiles, diff_o, diff3_o, sdiff_o): Rename quotearg.c to - quotesys.c and quotearg.h to quotesys.h. - - * configure.in (AC_PATH_PROG): Add PR_PROGRAM. - If available, prefer support for large files unless the user specified - one of the CPPFLAGS, LDFLAGS, or LIBS variables. - (AC_STRUCT_ST_RDEV): Add. - (HAVE_ST_FSTYPE_STRING): Add. - (--with-mvfs-stat-bug, --with-nfs-stat-bug): New options. - (HAVE_MEMCHR): New macro. - (AC_CHECK_FUNCS): Add sicprocmask. - - * diff.h (XTERN): Renamed from EXTERN. - (struct filedata): Remove dir_p arg. - (struct comparison): New type. - (diff_2_files, diff_dirs)" Ise ot/ - (error): Add printf attribute if applicable. - (free_software_msgid): New decl. - (pr_program): New decl. - (fatal): Add noreturn attribute. - (pfatal_with_name): Likewise. - - * system.h (__attribute__): New macro. - (getenv): Don't declare if HAVE_STDLIB_H. - (CHAR_MAX): New macro. - (): New include. - (): Include before . - (could_be_mvfs_stat_bug, could_be_nfs_stat_bug, - dev_may_have_duplicate_ino, same_special_file): New macros. - (same_file): Use them. - - * cmp.c (authorship_msgid): New var. - (free_software_msgid): New decl. - (error): Now has printf attribute. - (try_help): Likewise. - (long_options): Don't assume ASCII. - (try_help): Now accepts operand arg. - (main): Check for -1, not EOF, when calling getopt_long. - Report --ignore-initial value when complaining about it. - Output copyright and free software info with -v. - Don't assume ASCII. - Report last operand when one is missing. - Report text of extra operand. - Move block_read into cmpbuf.c. - - * diff.c (authorship_msgid): New var. - (quotesys.h): Include. - (ck_atoi): Remove. - (function_regexp_list, ignore_regexp_list): Now static. - (binary_flag): Renamed from binary_I_O. - (entire_new_file_flag, unidirectional_new_file_flag, - print_file_same_flag): Now static. - (numeric_arg): Renamed from ck_atoi. - New argument specifying the argument type. - (longopts, main): Don't assume ASCII. - (longopts): Remove old aliases --file-label, --entire-new-file, - --ascii, --print. - (main): Check for -1, not EOF, when calling getopt_long. - Use numeric_arg to report errors. - Report error if -l specified but pagination is not supported. - Report error if -S is specified twice with conflicting values. - Have --version conform to the new GNU standards. - Add new --from-file, --to-file, --inhibit-hun,-merge options. - Make the horizon at least as large as the context. - Add casts to pacify gcc -Wall. - (try_help): Add operand arg. - (option_help_msgid): Doc fix to match above. - (usage): Indent option_help_msgid. - (compare_files): Now takes struct comparison - instead of two directory names and a depth. - (NONEXISTENT, UNOPENED, ERRNO_ENCODE, ERRNO_DECODE): - New macros. - (DIR_P): New macro. - Report error if fflush does. - - * cmpbuf.c (block_read): Moved here from cmp.c. - - * cmpbuf.h (block_read): New decl. - - * io.c (cmpbuf.h): Include. - (slurp): Check for arithmetic overflow when computing buffer size. - - * dir.c (diff_dirs): Check for recursive directory loop. - Arg is now struct comparison const *. - (dir_loop): New function - - * analyze.c (no_discards): Remove. - (inhibit): Remove. - (shift_boundaries): Don't inhibit. If inhibit_hunk_merge is nonzero, - don't merge hunks. - (briefly_report): Now returns 2 if trouble, CHANGES otherwise. - (diff_2_files): Now takes struct comparison. If briefly_report reports - trouble, pass it on to caller. - - * side.c (print_half_line): Add brackets to pacify GCC -Wall. - - * sdiff.c (quotesys.h): Include. - (DIFF_PROGRAM, DEFAULT_EDITOR_PROGRAM): Remove. - (free_software_msgid, editor_program, not_found): New vars. - (diffbin, edbin): Remove. - (editor_program): Renamed from edbin. - (edit, interact): Now take extra string arg. - (exiterr, fatal, perror_fatal, try_help): Add noreturn attribute. - (sigset_t, sigemptyset, sigmask, sigaddset, SIG_BLOCK, SIG_SETMASK): - (sigprocmask): New macros, if !HAVE_SIGPROCMASK. - (error): Now has printf attribute. - (longopts, main): Don't assume ASCII. - (try_help): New operand arg. - (usage): Conform to new GNU standards. - (main): Set static vars for editor and diff program. - Compare getopt_long result to -1, not EOF. - -v conforms to new GNU standard. - Complain better about extra and missing operands. - If HAVE_VFORK, block SIGINT and SIGPIPE in the parent, since when - the child munges its handlers it may somp on the parent. - Pass rname to intract. - Translate not-found message before forking. - (give_help): Just output it all at once. - (edit): New args lname, lline, rname, rline. - (edit): New command 'd'. - (interact): New args lname, rname. - - * util.c (quotesys.h): Include. - (PR_PROGRAM): New macro. - (pfatal_with_name): Abort if error returns. - (fatal): Likewise. - (print_message_queue): Free message chain after printing. - (currently_recursive): Renamed from current_depth, and now a boolean. - (begin_output): Report error if fflush does. - Avoid stdio and gettext in child. - - * diff3.c (quotesys.h): Include. - (free_software_msgid): New decl. - (RANGE_START, RANGE_END): Renamed from START and END. - (fatal, perror_with_exit, try_help): Add noreturn attribute. - (error): Add printf attribute. - (diff_program): Now a ptr, not an array. - Initialize to DEFAULT_DIFF_PROGRAM instead of DIFF_PROGRAM. - (longopts, main): Don't assume ASCII. - (main): Use DIFF environment var to specify name of diff program. - Compare getopt_long result to -1, not EOF. - -v now reports version according to new GNU standard. - Report spelling of extra operand, or last operand before missing one. - (try_help): Now takes operand arg. - (option_help_ms): Fix typo: missing comma. - (usage): Update as per current GNU standards. - (environ): Remove decl. - (read_diff): Invoke diff with --inhibit-hunk-merge. - Translate `not found' message before forking. - Quote name of diff program. - Pass horizon lines. - `memory exhausted' -> `Memory exhausted' - - * pc/makefile (%.exe): Remove. - (pc-clean): Remove *.exe - * pc/makefile.sed (DEFAULT_DIFF_PROGRAM): Renamed from DIFF_PROGRAM. - When editing mkinstalldirs rule, look for exec_prefix and prefix. - Add .exe when installing files. - * pc/emx/config.h (same_file): Add. - * pc/config.h (same_file): Remove. - * pc/djgpp/config.h: Adjust to latest patch from eliz. - * pc/djgpp/makefile.sed: Don't alter PROGRAMS. - * pc/pc.c: Update FSF address. - (quote_system_arg): Renamed from system_quote_arg. - - * README: Add --with-mvfs-stat-bug, --with-nfs-stat-bug. - - * getmsgids: Add copyright date and update FSF address. - - * diff.texi: Document recent changes. - The patch doc still corresponds to patch 2.2, unfortunately. - Update GNU bug reporting address. Omit Larry Wall's address; - it's obsolete and he's busy with perl. - - * context.c: Fix spacing. - - * NEWS: Mention --from-file=FILE, --to-file=FILE, ed. - - * acconfig.h, freesoft.c, message/de.po, message/en_UK.po, - message/es.po, message/fr.po, message/pl.po, message/sv.po: - New files. - - * ed.c: Remove `#if 0'ed code. - - * normal.c, waitpid.c: Update FSF address. - -1998-03-15 Paul Eggert - - * quotesys.c: Renamed from quotearg.c. - - * quotesys.h: Renamed from quotearg.h - (__QUOTESYS_P): Renamed from __QUOTEARG_P. - -1997-05-05 Paul Eggert - - * quotesys.c, quotesys.h: New file. - -Mon Nov 14 05:10:56 1994 Paul Eggert - - Add internationalization support. - Several messages have been changed slightly, - to make them more consistent and easier to translate. - All strings that are messages are passed through gettext once before - being used, so that they can be localized. - Each function and macro whose first parameter is a gettext msgid - has had its first parameter's name changed so it ends in `msgid'. - All arrays of msgids have had their names changed to end in `msgid'. - `getmsgids' uses this to determine which strings are msgids. - - * pc/COPYING, pc/INSTALL, pc/config.h, - pc/djgpp/config.h, pc/djgpp/makefile.sed, - pc/emx/config.h, pc/emx/diff.def, pc/emx/gnuregex.def, - pc/emx/makefile.sed, - pc/makefile, pc/makefile.sed, pc/pc.c: New files, for PC support. - - * getmsgids: New file. - - * Makefile.in (PACKAGE, VERSION, diffutils_srcs, D): New vars. - (version.c, version.texi, messages.po): New files. - messages.po is built automatically from source files and `getmsgids'. - (distfiles): Add them, pc/*, and getmsgids. - (diff.info): Now depends on version.texi. - (realclean): Clean messages.po, version.*. - (dist): Just build $D.tar.gz. - ($D.tar.gz): New file, takes over old `dist' function. - Don't assume $(distfiles) are all in same directory. - - * configure.in (AC_CHECK_HEADERS): Add libintl.h, locale.h. - (AC_CHECK_LIB): Check for -lintl. - - * analyze.c (briefly_report): Rewrite `message (A?"B":"C")' as - `if (A) message ("B") : message ("C")'; this is for getmsgids. - (briefly_report, diff_2_files): For label, use file_label if set. - * diff.c (compare_files): Likewise. - - * system.h (gettext): Declare; use a stub if ! HAVE_LIBINTL_H. - (setlocale): Declare; use a stub if ! HAVE_LOCALE_H. - - * cmp.c, diff.c, diff3.c, sdiff.c (main): - Invoke setlocale first thing, to tell library we're internationalized. - (option_help_msgid): New constant. - (usage): Use it, so message is translated one option at a time. - * sdiff (help_msgid, give_help): Likewise. - - * cmp.c (sprintc): Renamed from `printc'. - Now outputs to a buffer instead of stdout. - (cmp): Use new sprintc; it's easier to internationalize. - - * diff.c (main): -D FOO now outputs `/* ! FOO */ instead of - `/* not FOO */'. - - * sdiff.c (version_string): Fix decl typo: `const' was missing. - (trapsigs): Ignore sigaction failure, to be compatible with `signal'. - - * util.c (struct msg, message5, print_message_queue): - Allocate just one block of memory to save a message. - -Wed Nov 9 17:42:44 1994 Paul Eggert - - * sdiff.c (trapsigs): Don't check signal return value, since it's - bogus under djgpp. - -Mon Oct 31 07:27:27 1994 Paul Eggert - - * Makefile.in (srcs, diff_o, diff3_o, sdiff_o): - New files quote.c, quote.o. - - * diff.h (function_regexp, ignore_regexp): Replace lists of compiled - regexps with these single compiled regexps. All users changed. - (regexp_list,function_regexp_list,ignore_regexp_list): Move to diff.c. - * diff.c (add_regexp): Build one big regexp instead of a regexp list. - (summarize_regexp_list): New function. - (regexp_list): Redesigned struct; moved here from diff.h. - (function_regexp_list, ignore_regexp_list): Likewise, for vars. - - * context.c (find_function): Simplify interface: - don't return size of function line. All callers changed. - (print_context_script, find_function): INT_MAX now denotes no - previous match; this is simpler than `- file->prefix_lines - 1'. - - * diff3.c (read_diff): Quote arguments with system_quote_arg. - * sdiff.c (main): Use system_quote_arg to compute command. - * diff.c (option_list): Quote options with system_quote_arg. - * util.c (begin_output): Use system_quote_arg to compute command. - - * util.c (pr_program): New var. - (analyze_hunk): Fix off-by-1 line length bug. - Match with one big regexp instead of a list of regexps. - Use new `trivial_length' local instead of comparing first byte to `\n'. - Help the compiler with linbuf local vars. - - * system.h (system_quote_arg): - New function; replaces SYSTEM_QUOTE_ARG macro. - -Sat Oct 15 20:09:12 1994 Paul Eggert - - * system.h (_tolower): Define if not already defined. - * io.c (find_and_hash_each_line): Change tolower to _tolower; this - speeds up diff -i considerably on some hosts (e.g. Solaris 2.3). - * util.c (line_cmp): Likewise. - * ifdef.c (groups_letter_value): Likewise. - - * diff.h (ignore_some_line_changes): Remove. All users changed. - * io.c (find_and_hash_each_line): Don't invoke line_cmp if the length - differs and -i is in force. Don't assume ISSPACE ('\n') is nonzero. - - * diff.h (xmalloc_exit_failure): New variable. - All `main' programs set this variable at the start. - xmalloc and xrealloc are now taken from GNU library. - * cmp.c (main): Align buffer size to word size; some mallocs care. - * io.c (slurp): Likewise. - * diff.c (add_exclude): Can now assume xrealloc (0, ...) works. - (add_regexp): Free storage on failure. Allocate storage all at one go. - * system.h (malloc, realloc): Remove unused declarations. - * diff3.c, sdiff.c, util.c (xmalloc, xrealloc): Remove. - * sdiff.c (diffarg): Take advantage of cleaner xrealloc semantics. - - * io.c (ROL): Use sizeof to make it more generic. - - * Makefile.in (common_o): New variable. - Link error.o and xmalloc.o into all programs. - (check): Depend on $(PROGRAMS). - - * diff.h (error): Change to GNU library standard. All callers changed. - * diff3.c (main): Use strerror (EISDIR) instead of "Is a directory". - (fatal, perror_with_exit): Use `error'. - * util.c (perror_with_name, fatal): Use GNU `error'. - (error): Remove. - -Wed Oct 12 17:04:40 1994 David J. MacKenzie (djm@duality.gnu.ai.mit.edu) - - * cmp.c (main): Set xmalloc_exit_failure. - -Sat Oct 1 05:24:19 1994 Paul Eggert - - * Version 2.7 released. - - * configure.in (AC_HEADER_SYS_WAIT): Add. - (AC_CHECK_HEADERS): Remove sys/wait.h. - (AC_CHECK_FUNCS): Add tmpnam. - * system.h (, WEXITSTATUS): Use simpler scheme - now that HAVE_SYS_WAIT_H is not set on hosts - that are incompatible with Posix applications. - - * util.c (dir_file_pathname): Use filename_lastdirchar not strrchr. - * sdiff.c (expand_name): Likewise. - (private_tempnam): Use tmpnam if HAVE_TMPNAM; this simplifies porting. - (exists, letters): Omit if HAVE_TMPNAM. - - * diff3.c (read_diff): If STAT_BLOCKSIZE yields zero, - adjust it to a more reasonable value. - -Sat Sep 24 20:36:40 1994 Paul Eggert - - * sdiff.c (exists, private_tempname): Adopt latest GNU libc algorithm. - (private_tempnam): Specialize for sdiff to avoid portability problems. - -Thu Sep 22 16:47:00 1994 Paul Eggert - - * configure.in (AC_ARG_PROGRAM): Added. - (AC_OUTPUT): Add [date > stamp-h]. - - * Makefile.in (DEFAULT_EDITOR_PROGRAM, DIFF_PROGRAM, LIBOBJS, - NULL_DEVICE, PR_PROGRAM, PROGRAMS): New variables. - (check, stamp-h.in, cmp.o, util.o): New targets. - (edit_program_name): New variable; replaces old binprefix method. - (install, uninstall): Use it. - (binprefix): Removed. - (distfiles): Add stamp-h.in. - (clean): Clean stamp-h. - (config.hin, config.h): Use time stamp files. - (cmp_o): Add $(LIBOBJS). - (install): Install info files from srcdir if they're not in `.'. - - * cmp.c, io.c (word): Don't define if already defined. - - * comp.c (main): Use setmode, not open(..., O_BINARY); this gets stdin. - Use NULL_DEVICE instead of "/dev/null". - (cmp): Use %lu instead of %ld when it is more likely to be right. - - * diff.h (PR_FILE_NAME): Rename to PR_PROGRAM and move to Makefile.in, - util.c. - - * diff3.c (main): Give proper diagnostic if too many labels were given. - (read_diff): Use SYSTEM_QUOTE_ARG. - - * system.h: : Include if HAVE_STRING_H, too. - : Include here. All includers changed. - (CTYPE_DOMAIN, ISDIGIT, ISPRINT, ISSPACE, ISUPPER): New macros that - work around common problems. - (O_BINARY): Remove. - (SYSTEM_QUOTE_ARG): New macros. - - * diff.c: Add comment. - - * util.c (PR_PROGRAM): Moved here from diff.h. - (begin_output): Use SYSTEM_QUOTE_ARG. - - * io.c (read_files): Set mode to binary before returning 1. - - * sdiff.c (TMPDIR_ENV): New macro. - (DEFAULT_EDITOR_PROGRAM): Renamed from DEFAULT_EDITOR for consistency. - (expand_name): Change `isdir' to `is_dir' to avoid theoretical ctype - namespace contamination. - (main): Use SYSTEM_QUOTE_ARG. - (private_tempnam): Don't access "/tmp" directly; use PVT_tmpdir. - -Tue Sep 13 18:46:43 1994 Paul Eggert - - * configure.in (AC_FUNC_MEMCHR): Remove. Autoconf didn't adopt this, - since we need not worry about an old experimental library - where memchr didn't work. - (AC_FUNC_MEMCMP): Not needed, since we only test for equality. - (AC_REPLACE_FUNCS): Add test for memchr. - (AC_CHECK_FUNCS): Check for memchr, not memcpy, since it'll be cached. - (AC_CHECK_HEADERS): Add string.h; regex.c uses on some old hosts. - - * system.h (memcmp): Define in terms of bcmp. - Use HAVE_MEMCHR to test for all mem* routines. - - * Makefile.in (srcs): Remove memcmp.c. - We use bcmp if memcmp doesn't work, since we only test for equality. - -Mon Sep 12 15:52:22 1994 Paul Eggert - - * configure.in (AC_CONFIG_HEADER): Rename config.h.in to config.hin. - (AC_ISC_POSIX, AC_MINIX): Go back to these old names for Autoconf 2. - (AC_CHECK_HEADERS): Remove now-redundant check for . - (AC_CHECK_FUNCS): Check for strchr. - (AC_FUNC_MEMCHR, AC_FUNC_MEMCMP, AC_CHECK_FUNCS): Use special-purpose - macros when suitable. - * memcmp.c: New file. - * Makefile.in (CPPFLAGS, DEFS, CFLAGS, LDFLAGS, prefix, exec_prefix): - Default to autoconf-specified strings. - (COMPILE): Use the defaults. - (srcs): Add memcmp.c. - (distfiles): Rename config.h.in->config.hin, install.sh->install-sh. - (Makefile, config.h, config.hin, config.status): Rework for - compatibility with Autoconf 2. - * io.c (binary_file_p): Assume non-broken memchr. - * memchr.c: Assume compiler understands void *; otherwise - we don't match GCC's internal declaration of memchr. - * system.h: Use more modern autoconf approach to standard C headers. - * version.c: Include , not "config.h". - - * diff.c, diff.h (ignore_some_line_changes): - New variable; replaces `length_varies'. - (line_end_char): Replace with '\n'; it wasn't being used consistently. - - * io.c (find_and_hash_each_line): Fix inconsistencies with -b -w -i and - incomplete lines. Put incomplete lines into their own bucket. - This means line_cmp no longer needs line length arguments, - and equivalence classes' line lengths no longer need to include \n. - Invoke line_cmp only if ignore_some_line_changes. - (prepare_text_end): -B no longer ignores missing newlines. - (read_files): Allocate another bucket for incomplete lines. - - * util.c (line_cmp): Now takes just two arguments. No longer - optimizes for common case of exact equality; the caller does that - optimization now. The caller is changed accordingly. - Optimize for the common case of mostly equality. - Use isupper+tolower instead of islower+toupper, for consistency. - - * waitpid.c (waitpid): Fix typo with internal scoping. - -Thu Sep 8 08:23:15 1994 Paul Eggert - - * configure.in: Revamp for Autoconf 2. - * memchr.c, waitpid.c: New source files for substitute functions. - * Makefile.in (diff_o, diff3_o, sdiff_o): Add $(LIBOBJS). - (srcs): Add memchr.c, waitpid.c. - (distfiles): Add install.sh, memchr.c, waitpid.c, install.sh. - * system.h: Use Autoconf 2 style HAVE_DIRENT_H etc. macros for dirs. - * dir.c (dir_sort): Prefer NAMLEN (p) to strlen (p->d_name). - Change VOID_CLOSEDIR to CLOSEDIR_VOID for Autoconf 2. - * sdiff.c, util.c (memchr, waitpid): Remove; use new substitutes. - * diff3.c (read_diff): Use new waitpid substitute. - - * cmp.c, diff.c, diff3.c, sdiff.c (check_stdout, try_help): New fns. - (usage): Just print more detailed usage message; let caller exit. - * diff.c (option_help): New variable. - (filetype): Add Posix.1b file types. - -Fri Sep 2 16:01:49 1994 Paul Eggert - - * configure.in: Switch to new autoconf names. Add sys/file.h test. - * Makefile.in (distclean): Clean config.cache, config.log - (used by new autoconf). - - * diff.c, diff3.c, (main), sdiff.c (trapsigs): If we'll have children, - make sure SIGCHLD isn't ignored. - - * diff3.c (DIFF_CHUNK_SIZE): Removed. Get size from STAT_BLOCKSIZE. - (INT_STRLEN_BOUND): New macro. - - * ifdef.c (format_group, groups_letter_value): - Use * instead of [] in prototypes. - - * system.h: Include only if HAVE_SYS_FILE_H. - (S_IXGRP, S_IXOTH, S_IXUSR): Remove unused macros. - - * util.c (begin_output): Check fdopen result. - - The following changes simplify porting to non-Posix environments. - * cmp.c, diff.c, diff3.c, sdiff.c, (main): Call initialize_main first. - * diff.c (binary_I_O): New variable for --binary option. - (main, usage, compare_files): Support --binary option. - (compare_files): Use filename_lastdirchar to find last - directory char in a file name. - * cmp.c (main), diff.c (compare_files), dir.c (compare_names, - diff_dirs): Use filename_cmp to compare file names. - Use same_file to determine whether two files are the same. - * context.c (print_context_label): Check whether ctime yields 0. - * diff3.c (read_diff), sdiff.c (cleanup, main, waitpid), - util.c (begin_output): Use popen+pclose if !HAVE_FORK. - * io.c (sip): If HAVE_SETMODE, test for binary files in O_BINARY mode. - * sdiff.c (ck_fdopen): Function removed. - (edit): Use system if !HAVE_FORK. - (execdiff): Now assumes caller has pushed all args, plus trailing 0. - All callers changed. - (private_tempnam): Try TMP if TMPDIR isn't defined. - Fit temporary filenames into 8.3 limit. - * system.h (STAT_BLOCKSIZE): Don't define if already defined. - (min, max): Undef if already defined. - (filename_cmp, filename_lastdirchar, HAVE_FORK, HAVE_SETMODE, - initialize_main, O_BINARY, same_file): New macros. - -Fri Jun 17 11:23:53 1994 David J. MacKenzie (djm@geech.gnu.ai.mit.edu) - - * Makefile.in (info, dvi, diff.dvi): New targets. - (clean): Remove TeX output files. - -Fri Jun 17 05:37:52 1994 Paul Eggert (eggert@twinsun.com) - - * cmp.c, io.c (word): Change from typedef to #define, to avoid - collision with Unicos 8.0 , which also typedefs `word'. - -Thu Apr 15 00:53:01 1994 Paul Eggert (eggert@twinsun.com) - - * diff3.c (scan_diff_line), util.c (print_number_range): Don't - rely on promotion to make the old-style parameter type agree - with the prototype parameter type; this doesn't work on - Apollos running bsd4.3. - -Mon Jan 3 02:05:51 1994 Paul Eggert (eggert@twinsun.com) - - * Makefile.in (LDFLAGS): Remove -g. Change all link commands - to use both $(CFLAGS) and $(LDFLAGS). - -Mon Dec 13 12:23:27 1993 Paul Eggert (eggert@twinsun.com) - - * system.h: Don't assume dirent.h exists just because - _POSIX_VERSION is defined. - -Fri Dec 3 18:39:39 1993 Paul Eggert (eggert@twinsun.com) - - * diff.c (main): allow -pu. - -Tue Nov 23 03:51:08 1993 Paul Eggert (eggert@twinsun.com) - - * Makefile.in (distclean): Remove config.h. - -Wed Nov 10 00:28:27 1993 Paul Eggert (eggert@twinsun.com) - - * Version 2.6 released. - - * analyze.c (too_expensive): New variable, for heuristic to - limit the worst-case cost to O(N**1.5 log N) at the price of - producing suboptimal output for large inputs with many differences. - (diff_2_files): Initialize it. - (struct partition): New type. - (SNAKE_LIMIT): New macro; merely documents already-used number 20. - (diag): New `minimal' arg; all callers changed. Put results into - struct partition. Apply `too_expensive' heuristic. Tune. - (compareseq): New `minimal' arg; all callers changed. Tune. - (shift_boundaries): Improve heuristic to also coalesce adjacent runs - of changes more often. - - * diff.c (long_options, main, usage): Add `--help'. - (main): Send version number to stdout, not stderr. - (usage): Send usage to stdout, not stderr. - (compare_files): Initialize `inf' properly. - - * io.c (word): Change to `int'; it makes a big difference on x86. - (sip, slurp): Put off allocating room to hold the whole file until we - have to read the whole file. This wins if the file turns out - to be binary. - - * util.c (xmalloc, xrealloc): "virtual memory" -> "memory" - (primes): Omit large primes if INT_MAX is small. - - * sdiff.c (usage): Send usage to stdout, not stderr. - (long_options, main, usage): Add `--help'. - (main): Send version number to stdout, not stderr. Exit afterwards. - - * diff3.c (usage): Send usage to stdout, not stderr. - (long_options, main, usage): Add `--help'. - (read_diff): Detect integer overflow in buffer size calculations. - - * cmp.c (word): New type. All uses of `long' for - word-at-a-time comparisons changed to `word'. - (long_options, main, usage): Add `--help'. - (usage): Send usage to stdout, not stderr. - (main): Add `-v'. Send version number to stdout, not stderr. - - * configure.in (AC_HAVE_HEADERS): Add unistd.h; remove AC_UNISTD_H. - -Mon Sep 27 07:20:24 1993 Paul Eggert (eggert@twinsun.com) - - * diff.c (add_exclude_file): Cast memchr to (char *) - to suppress bogus warnings on some nonstandard hosts. - - * Makefile.in (cmp): Add version.o. - - * analyze.c (diff_2_files): Work around memcmp bug with size=0. - - * cmp.c (main, usage, version_string): Add --version option. - - * system.h (malloc, realloc): Declare only if !HAVE_STDLIB_H. - (memchr): Declare only if !HAVE_MEMCHR. These changes are - needed to keep some nonstandard hosts happy. - - * util.c (memchr): Make first arg char const * - to match standard. - (xmalloc, xrealloc): Cast malloc, realloc - to (VOID *) to suppress bogus warnings on some nonstandard hosts. - - * diff3.c (xmalloc, xrealloc): Cast malloc, realloc - to (VOID *) to suppress bogus warnings on some nonstandard hosts. - - * sdiff.c (xmalloc, xrealloc): Cast malloc, realloc - to (VOID *) to suppress bogus warnings on some nonstandard hosts. - (lf_copy, lf_skip, lf_snarf): Cast memchr to (char *) - to suppress bogus warnings on some nonstandard hosts. - (memchr): Make first arg char const * - to match standard. - -Mon Sep 27 00:23:37 1993 Paul Eggert (eggert@twinsun.com) - - * Version 2.5 released. - - * analyze.c (diff_2_files): Work around memcmp bug with size=0. - - * cmp.c (main, usage, version_string): Add --version option. - * Makefile.in (cmp): Add version.o. - - * diff.c (add_exclude_file): Cast memchr to (char *) - to suppress bogus warnings on some nonstandard hosts. - * sdiff.c (lf_copy, lf_skip, lf_snarf): Likewise. - - * diff3.c, sdiff.c, util.c (xmalloc, xrealloc): Cast malloc, realloc - to (VOID *) to suppress bogus warnings on some nonstandard hosts. - - * sdiff.c, util.c (memchr): Make first arg char const * - to match standard. - - * system.h (malloc, realloc): Declare only if !HAVE_STDLIB_H. - (memchr): Declare only if !HAVE_MEMCHR. These changes are - needed to keep some nonstandard hosts happy. - - * xmalloc.c: Include always; some nonstandard hosts - need it for size_t even if STDC_HEADERS. - -Sat Sep 18 01:33:07 1993 Paul Eggert (eggert@twinsun.com) - - * configure.in (AC_STAT_MACROS_BROKEN): Add. - * system.h (S_IS{BLK,CHR,DIR,FIFO,REG,SOCK}): Fix defns if - STAT_MACROS_BROKEN. - - * Makefile.in (diff3, sdiff, cmp): Do not link $(ALLOCA). - - * analyze.c (discard_confusing_lines): Make defn static, like decl. - * sdiff.c (xmalloc): Likewise. - - * ifdef.c (format_group): Ensure isdigit argument isn't < 0. - - * side.c (print_half_line): Use isprint, since some hosts lack isgraph. - * util.c (output_1_line): Likewise. Ensure its argument isn't < 0. - (xmalloc, xrealloc): Remove needless casts. - - * system.h (volatile, const): - Define these before including any system headers, - so that they're used consistently in all system includes. - (getenv, malloc, realloc): Declare even if HAVE_STDLIB_H, since some - s don't declare them. - (memchr): Likewise for . - - * cmp.c, diff3.c, diff.h, sdiff.c: Include "system.h" first. - * diff.c: Remove redundant "system.h" inclusion. - - * diff3.c (xmalloc): Now static. - (xmalloc, realloc): Remove needless casts. - (READNUM): Ensure isdigit argument isn't negative. - -Wed Sep 14 07:14:15 1993 Paul Eggert (eggert@twinsun.com) - - * Version 2.4 released. - - * ifdef.c (scan_char_literal): New function, for new %c'x' and - %c'\ooo' format specs. - (format_group, print_ifdef_lines): Use it. Remove %0 format spec. - - * cmp.c (cmp): Don't try to read past end of file; this doesn't - work on ttys. - - * system.h, version.c: #include , not "config.h", to allow - configuring in a separate directory when the source directory has - already been configured. - * Makefile.in (COMPILE): New defn, with proper -I options so that - `#include ' works. - (.c.o, diff3.o, sdiff.o): Use it. - -Mon Sep 13 06:45:43 1993 Paul Eggert (eggert@twinsun.com) - - * diff.c (main, longopts): Add --line-format=FORMAT option. - (specify_format): Args no longer const pointers. All callers changed. - - * ifdef.c: Add support for %?c, %(A=B?T:E), PRINTF_SPECn formats. - (struct group): New struct. - (print_ifdef_lines): Use it to simplify argument passing. - Remove the convention that last arg -1 signifies that the lines - from file 2 are the same as the lines from file 1; this - convention no longer works, now that line numbers might be - printed out, since the line numbers may differ. - Add first FILE * argument to output to. All callers changed. - Use a faster test for the single-fwrite optimization. - (format_group, scan_printf_spec, groups_letter_value): New functions. - - * diff.h (group_format, line_format): No longer const pointers. - (format_ifdef): 1st arg is no longer const pointer. - - * configure.in: Configure HAVE_LIMITS_H, HAVE_STDLIB_H. - * system.h , , : - Include only if HAVE_LIMITS_H etc. - - * system.h (memcmp, memcpy, strchr, strrchr, struct dirent): Prefer - these standard names to the traditional names (bcmp, bcpy, index, - rindex, struct direct). All callers changed. - - * system.h (PARAMS, VOID): - Define earlier so that malloc decl can use VOID. - (STAT_BLOCKSIZE): Simplify ersatz defn; just use 8K. - -Fri Sep 3 00:21:02 1993 Paul Eggert (eggert@twinsun.com) - - * diff.c (compare_files): Two files with the same name must be - the same file; avoid a needless `stat' in that case. - -Fri Aug 27 06:59:03 1993 Paul Eggert (eggert@twinsun.com) - - * Pervasive changes for portability to 64-bit hosts: - Add prototypes to function declarations. - Use size_t, not int, when needed. - - * Other pervasive changes: - Use `const' more often. - Use STD{IN,OUT,ERR}_FILENO instead of [012]. - Use 0, not NULL, for portability to broken hosts. - - * Makefile.in: (srcs, objs, distfiles, cmp): New files cmpbuf.[ch]. - (distfiles): New files config.h.in, mkinstalldirs. - (.c.o): Add -DHAVE_CONFIG_H. - - * analyze.c: (diag): Pacify `gcc -Wall' with a useless assignment. - (diff_2_files): Use l.c.m., not max, of files' buffer sizes. - - * cmp.c: Make globals static when possible. - - (file): Now a 2-element array; replaces `file1' and `file2'. - (file_desc, buffer): Likewise, for file[12]_desc and buf[12]. - (main): Likewise, for stat_buf[12]. Index these variables with `i'. - - (ignore_initial): New var. - (long_options): Now const. Add `--ignore-initial'. - (usage): Sort options and add `--ignore-initial'. - (main, cmp): Add `--ignore-initial' support. - - (main): `cmp - -' now succeeds. - When comparing standard input to a file, and using a shortcut (e.g. - looking at file sizes or inode numbers), take the lseek offset into - account before deciding whether the files are identical. - Avoid mentioning `dev_t', `ino_t' for portability to nonstandard hosts. - Use l.c.m. of files' buffer sizes, not 8 * 1024. - ferror (stdout) does not imply errno has a useful value. - If 2nd file is "-", treat it first, in case stdin is closed. - - (cmp): Always compute `char_number', `smaller' for speed and simplicity. - Say `cmp: EOF on input', not `/usr/gnu/bin/cmp: EOF on input', - as per Posix.2. - - (block_compare_and_count): Increment line_number argument. - Remove end_char argument; it's always '\n'. All callers changed. - Do not assume sizeof(long) == 4; this isn't true on some 64-bit hosts. - (block_compare): Minimize differences with block_compare_and_count. - - (block_read): Coalesce `bp += nread's. - - (printc): Remove `FILE *' arg; output to stdout. All callers changed. - - * configure.in: Configure HAVE_SIGACTION, RETSIGTYPE, HAVE_VPRINTF. - Configure into config.h. - - * context.c (print_context_label): - Standard input's st_mtime is no longer a special case - here, since `compare_files' now sets it to the current time. - - * diff.c (usage): Sort options. - (filetype): New function. - (compare_files): Set stdin's st_mtime to be the current time. - Leave its name "-" instead of changing it to "Standard Input"; - to test whether a file is stdin, we must compare its name to "-" instead - of its desc to 0, since if it's closed other file descs may be 0. - When comparing standard input to a file, and using a shortcut (e.g. - looking at file sizes or inode numbers), take the lseek offset into - account before deciding whether the files are identical. - Pretend that nonexistent files have the same filetype as existing files. - Rename `errorcount' to `failed', since it's boolean. - In directory comparisons, if a file is neither a regular file nor a - directory, just print its type and the other file's type. - - * diff.h (Is_space, textchar): Remove. - (struct msg, msg_chain, msg_chain_end): Move to util.c. - (VOID): Move to system.h. - (line_cmp, version_string, change_letter, print_number_range, - find_change): New decls. - - * diff.texi: - whitespace -> white space. It now stands for whatever isspace yields. - Add --ignore-initial. - - * diff3.c (VOID): Move to system.h. - (version_string): Now char[]. - (usage): Sort options. - (process_diff): Pacify `gcc -Wall' with a useless assignment. - (read_diff): pid is of type pid_t, not int. Use waitpid if available. - (output_diff3): Simplify test for `\ No newline at end of file' message. - - * dir.c (struct dirdata): Rename `files' to `names' to avoid confusion - with external struct file_data `files'. - - * io.c (line_cmp): Move declaration to diff.h. - (textchar): Remove. - (find_and_hash_each_line): Use locale's definition of white space - instead of using one hardwired defn for -b and another for -w. - - * normal.c (change_letter, print_number_range, find_change): - Move decls to diff.h. - (print_normal_hunk): Now static. - - * sdiff.c (SEEK_SET): Move to system.h. - (version_string): Now char[], not char*. - (private_tempnam): Remove hardcoded limit on temporary file names. - (exiterr, perror_fatal, main): When exiting because of a signal, - exit with that signal's status. - (lf_refill, main, skip_white, edit, interact): Check for signal. - (ignore_SIGINT): Renamed from `ignore_signals'. - (NUM_SIGS, initial_handler): New macros. - (initial_action, signal_received, sigs_trapped): New vars. - (catchsig, trapsigs): Use sigaction if possible, since this closes the - windows of vulnerability that `signal' has. Use RETSIGTYPE not void. - When a signal comes in, just set a global variable; this is safer. - (checksigs, untrapsig): New functions. - (edit): Pacify `gcc -Wall' with a useless assignment. - Respond to each empty line with help, not to every other empty line. - (private_tempnam): Remove hardcoded limit on temporary file name length. - Don't assume sizeof (pid_t) <= sizeof (int). - - * system.h: (S_IXOTH, S_IXGRP, S_IXUSR, - SEEK_SET, SEEK_CUR, - STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO): - New macros, if system doesn't define them. - (volatile): Don't define if already defined. - (PARAMS): New macro. - (VOID): Move here from diff.h. - - * util.c (struct msg, msg_chain, msg_chain_end): Moved here from diff.h. - (message5): New function. - (pr_pid): New var. - (begin_output): Allocate `name' more precisely. - Put child pid into pr_pid, so that we can wait for it later. - Don't check execl's return value, since any return must be an error. - (finish_output): Detect and report output errors. - Use waitpid if available. Check pr exit status. - (line_cmp): Use locale's definition of white space - instead of using one hardwired defn for -b and another for -w. - (analyze_cmp): Avoid double negation with `! nontrivial'. - Pacify `gcc -Wall' be rewriting for-loop into do-while-loop. - (dir_file_pathname): New function. - - * version.c (version_string): Now char[], not char*. - -Thu Jul 29 20:44:30 1993 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu) - - * Makefile.in (config.status): Run config.status --recheck, not - configure, to get the right args passed. - -Thu Jul 22 10:46:30 1993 Paul Eggert (eggert@twinsun.com) - - * Makefile.in (dist): Replace `if [ ! TEST ]; then ACTION; fi' - with `[ TEST ] || ACTION || exit' so that the containing for-loop exits - with proper status for `make'. - -Thu Jul 8 19:47:22 1993 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) - - * Makefile.in (installdirs): New target. - (install): Use it. - (Makefile, config.status, configure): New targets. - -Sat Jun 5 23:10:40 1993 Paul Eggert (eggert@twinsun.com) - - * Makefile.in (dist): Switch from .z to .gz. - -Wed May 26 17:16:02 1993 Paul Eggert (eggert@twinsun.com) - - * diff.c (main): Cast args to compare_files, for traditional C. - * side.c (print_sdiff_common_lines_print_sdiff_hunk): Likewise. - * analyze.c, diff3.c, sdiff.c, util.c: Don't assume NULL is defined - properly. - -Tue May 25 14:54:05 1993 Paul Eggert (eggert@twinsun.com) - - * analyze.c (diff_2_files): With -q, do not report that files differ - if all their differences are ignored. - (briefly_report): New function. - * diff.h (ignore_some_changes): New variable. - * diff.c (compare_files): Don't use the file size shortcut if - ignore_some_changes is nonzero, since the file size may differ - merely due to ignored changes. - (main): Set ignore_some_changes if we might ignore some changes. - Remove unsystematic assignment of 0 to static vars. - * io.c (read_files): New argument PRETEND_BINARY says whether to - pretend the files are binary. - - * diff3.c (tab_align_flag): New variable, for new -T option. - (main, usage, output_diff3): Add support for -T. - -Sun May 23 15:25:29 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) - - * dir.c (dir_sort): Always init `data' to avoid GCC warning. - -Sat May 22 15:35:02 1993 Paul Eggert (eggert@twinsun.com) - - * Makefile.in (dist): Change name of package from diff to diffutils. - Don't bother to build .Z dist; .z suffices. - -Fri May 21 16:35:22 1993 Paul Eggert (eggert@twinsun.com) - - * diff.c: Include "system.h" to get memchr declaration. - * system.h (memchr): Declare if !HAVE_MEMCHR, not if - !HAVE_MEMCHR && !STDC_HEADERS. - -Wed May 19 17:43:55 1993 Paul Eggert (eggert@twinsun.com) - - * Version 2.3 released. - -Fri Apr 23 17:18:44 1993 Paul Eggert (eggert@twinsun.com) - - * io.c (find_identical_ends): Do not discard the last HORIZON_LINES - lines of the prefix, or the first HORIZON_LINES lines of the suffix. - * diff.c (main, longopts, usage): Add --horizon-lines option. - * diff3.c (main, process_diff, read_diff): Invoke second diff - with --horizon-lines determined by the first diff. - * diff.h, diff3.c (horizon_lines): New variable. - -Mon Mar 22 16:16:00 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) - - * system.h [HAVE_STRING_H || STDC_HEADERS] (bcopy, bcmp, bzero): - Don't define if already defined. - -Fri Mar 5 00:20:16 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) - - * diff.c (main): Use NULL in arg to compare_files. - -Thu Feb 25 15:26:01 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) - - * system.h: Declare memchr #if !HAVE_MEMCHR && !STDC_HEADERS, - not #if !HAVE_MEMCHR || !STDC_HEADERS. - -Mon Feb 22 15:04:46 1993 Richard Stallman (rms@geech.gnu.ai.mit.edu) - - * io.c (find_identical_ends): Move complicated arg outside GUESS_LINES. - -Mon Feb 22 12:56:12 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) - - * Makefile.in (.c.o): Add -I$(srcdir); put $(CFLAGS) last before $<. - -Sat Feb 20 19:18:56 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) - - * io.c (binary_file_p): Return zero if file size is zero. - -Fri Feb 19 17:31:32 1993 Roland McGrath (roland@geech.gnu.ai.mit.edu) - - * Version 2.2 released. - - * system.h [HAVE_STRING_H || STDC_HEADERS] (index, rindex): Don't - define if already defined. - -Wed Feb 17 17:08:00 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) - - * Makefile.in (srcs): Remove limits.h. - -Thu Feb 11 03:36:00 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) - - * diff3.c (xmalloc): No longer static. - - * sdiff.c (edit): Allocate buf dynamically. - - * dir.c (dir_sort): Handle VOID_CLOSEDIR. - -Wed Feb 10 00:15:54 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) - - * limits.h: File deleted (should never have been there). - -Tue Feb 9 03:53:22 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) - - * Makefile.in (.c.o, diff3.o, sdiff.o): Put $(CFLAGS) last. - -Wed Feb 3 15:42:10 1993 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) - - * system.h: Don't #define const; let configure do it. - -Mon Feb 1 02:13:23 1993 Paul Eggert (eggert@hal.gnu.ai.mit.edu) - - * Version 2.1 released. - - * Makefile.in (dist): Survive ln failures. Create .tar.z - (gzipped tar) file as well as .tar.Z (compressed tar) file. - -Fri Jan 8 22:31:41 1993 Paul Eggert (eggert@twinsun.com) - - * side.c (print_half_line): When the input position falls - outside the column, do not output a tab even if the output - position still falls within the column. - -Mon Dec 21 13:54:36 1992 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu) - - * Makefile.in (.c.o): Add -I. - -Fri Dec 18 14:08:20 1992 Paul Eggert (eggert@twinsun.com) - - * configure.in: Add HAVE_FCNTL_H, since system.h uses it. - -Tue Nov 24 10:06:48 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) - - * Makefile.in: Note change from USG to HAVE_STRING_H. - -Mon Nov 23 18:44:00 1992 Paul Eggert (eggert@twinsun.com) - - * io.c (find_and_hash_each_line): When running out of lines, - double the number of allocated lines, instead of just doubling - that number minus the prefix lines. This is more likely to - avoid the need for further memory allocation. - -Wed Nov 18 20:40:28 1992 Paul Eggert (eggert@twinsun.com) - - * dir.c (dir_sort): Plug memory leak: space holding directory - contents was not being reclaimed. Get directory size from - struct file_data for initial guess at memory needed. - Detect errors when reading and closing directory. - (diff_dirs): Pass struct file_data to dir_sort. Finish plugging leak. - * diff.c (compare_files): Pass struct file_data to diff_dirs. - - * io.c (find_and_hash_each_line): Don't assume alloc_lines is - nonzero when allocating more lines. - -Thu Nov 12 16:02:18 1992 Paul Eggert (eggert@twinsun.com) - - * diff.c (main): Add `-U lines' as an alias for `--unified=lines'. - - * diff3.c (usage): Add third --label option in example. - - * util.c (analyze_hunk): Fix test for ignoring blank lines. - - * configure.in, system.h: Avoid USG; use HAVE_TIME_H etc. instead. - -Mon Nov 9 05:13:25 1992 Paul Eggert (eggert@twinsun.com) - - * diff3.c (main, usage): Add -A or --show-all. - -m now defaults to -A, not -E. Allow up to three -L options. - (output_diff3_edscript, output_diff3_merge): - Remove spurious differences between these two functions. - Output ||||||| for -A. Distinguish between conflicts and overlaps. - (dotlines, undotlines): New functions that output `Ns', not `N,Ns'. - (output_diff3_edscript, output_diff3_merge): Use them. - - * io.c (find_identical_ends): shift_boundaries needs an extra - identical line at the end, not at the beginning. - - * sdiff.c (edit): execvp wants char **, not const char **. - -Mon Oct 19 04:39:32 1992 Paul Eggert (eggert@twinsun.com) - - * context.c (print_context_script, find_function): Context - line numbers start with - file->prefix_lines, not 0. - - * io.c (binary_file_p): Undo last change; it was a library bug. - -Sun Oct 18 00:17:29 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu) - - * io.c (binary_file_p): Consider empty file as non-binary. - -Mon Oct 5 05:18:46 1992 Paul Eggert (eggert@twinsun.com) - - * diff3.c (main, make_3way_diff, using_to_diff3_block): Don't - report bogus differences (for one of -mexEX3) just because the - file0-file1 diffs don't line up with the file0-file2 diffs. - (This is entirely possible since we don't use diff's -n - option.) Always compare file1 to file2, so that diff3 sees - those changes directly. Typically, file2 is now the common - file, not file0. - (output_diff3_merge): The input file is file 0, not the common file. - - (FC, FO): New macros; they replace FILE1, FILE0 for two-way diffs, - to distinguish them from three-way diffs. - - * diff3.c (using_to_diff3_block): Fold repeated code into loops. - - * diff3.c (make_3way_diff, process_diff): Have the *_end - variable point to the next field to be changed, not to the last - object allocated; this saves an if-then-else. - - * diff3.c (process_diff): Use D_NUMLINES instead of its definiens. - - * diff3.c: Make fns and vars static unless they must be external. - -Wed Sep 30 09:21:59 1992 Paul Eggert (eggert@twinsun.com) - - * analyze.c (diff_2_files): OUTPUT_IFDEF is now robust. - * diff.h (ROBUST_OUTPUT_STYLE): Likewise. - (default_line_format): Remove. All refs removed. - - * ifdef.c (print_ifdef_lines): Add %L. Optimize %l\n even if user - specified it, as opposed to its being the default. - -Tue Sep 29 19:01:28 1992 Paul Eggert (eggert@twinsun.com) - - * diff.c (longopts, main): --{old,new,unchanged,changed}--group-format - are new options, so that -D is no longer overloaded. Set - no_diff_means_no_output if --unchanged-{line,group}-format allows it. - * diff.h (enum line_class): New type. - (group_format, line_format): Use it to regularize option flags. - All refs changed. - - * ifdef.c (format_ifdef, print_ifdef_lines): %n is no longer a format. - -Mon Sep 28 04:51:42 1992 Paul Eggert (eggert@twinsun.com) - - * diff.c (main, usage): Replace --line-prefix with the more general - --{old,new,unchanged}-line-format options. - * ifdef.c (format_ifdef, print_ifdef_lines): Likewise. - * diff.h (line_format): Renamed from line_prefix. All refs changed. - * diff.h, ifdef.c (default_line_format): New variable. - * util.c (output_1_line): New function. - (print_1_line): Use it. - - * ifdef.c: (format_ifdef, print_ifdef_lines): Add %0 format. - -Sun Sep 27 05:38:13 1992 Paul Eggert (eggert@twinsun.com) - - * diff.c (main): Add -E or --line-prefix option. Add -D'=xxx' - for common lines. Change default -D< format from copy of -D> - format to to -D<%<; similarly for default -D> format. - * diff.h (common_format, line_prefix): New variables. - * ifdef.c (format_ifdef): New function. - (print_ifdef_script, print_ifdef_hunk, print_ifdef_lines): - Use it for -D'=xxx', -E. - - * context.c (find_hunk): Glue together two non-ignorable changes that - are exactly CONTEXT * 2 lines apart. This shortens output, removes - a behavioral discontinuity at CONTEXT = 0, and is more compatible - with traditional diff. - - * io.c (find_identical_ends): Slurp stdin at most once. - - * util.c (print_line_line): line_flag is const char *. - -Thu Sep 24 15:18:07 1992 Paul Eggert (eggert@twinsun.com) - - * ifdef.c (print_ifdef_lines): New function, which fwrites a sequence - of lines all at once for speed. - (print_ifdef_script, print_ifdef_hunk): Use it. - -Thu Sep 24 05:54:14 1992 Paul Eggert (eggert@twinsun.com) - - * diff.c (main): Support new -D options for if-then-else formats. - (specify_format): New function. - * diff.h (ifndef_format, ifdef_format, ifnelse_format): New variables. - * ifdef.c (print_ifdef_hunk): Use the new variables instead of - a hardwired format. - - * side.c (print_1sdiff_line): Represent incomplete lines on output. - (print_sdiff_script): Likewise. Don't print 'q' at end, - since that doesn't work with incomplete lines. - * sdiff.c (interact): Don't assume diff output ends with 'q' line. - * diff.h (ROBUST_OUTPUT_STYLE): OUTPUT_SDIFF is now robust. - - * sdiff.c (lf_copy, lf_snarf): Use memchr instead of index, - to avoid dumping core when files contain null characters. - (memchr): New function (if memchr is missing). - - * io.c (sip): New arg SKIP_TEST to skip test for binary file. - (read_files): Don't bother testing second file if first is binary. - -Thu Sep 17 21:17:49 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) - - * system.h [!USG && !_POSIX_VERSION]: Protect from conflicting - prototype for wait in sys/wait.h. - -Wed Sep 16 12:32:18 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) - - * Makefile.in: Include binprefix in -DDIFF_PROGRAM. - -Tue Sep 15 14:27:25 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) - - * Version 2.0. - -Sat Sep 12 01:31:19 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) - - * util.c, diff.h, system.h [!HAVE_MEMCHR]: Don't use void * - and const when declaring memchr replacement. Declare memchr - if !STDC_HEADERS && !USG. - -Thu Sep 10 15:17:32 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) - - * Makefile.in (uninstall): New target. - - * diff.c (excluded_filename): Use fnmatch, not wildmat. - (usage): Document -x, -X, --exclude, --exclude-from. - Makefile.in: Use fnmatch.c, not wildmat.c. - -Sun Sep 6 23:46:25 1992 Paul Eggert (eggert@twinsun.com) - - * configure.in: Add HAVE_MEMCHR. - * diff.h, util.c: Use it instead of MEMCHR_MISSING. - -Sun Sep 6 07:25:49 1992 Paul Eggert (eggert@twinsun.com) - - * diff.h: (struct line_def): Replace this 3-word struct with char *. - This uses less memory, particularly for large files with short lines. - (struct file_data): New member linbuf_base counts number of lines - in common prefix that are not recorded in linbuf; - this uses less memory if files are identical or differ only at end. - New member buffered_lines counts possibly differing lines. - New member valid_lines counts valid data. - New member alloc_lines - linbuf_base replaces old linbufsize. - linbuf[0] now always points at first differing line. - Remove unused members ltran, suffix_lines. - Add const where appropriate. - (Is_space): New macro, for consistent definition of `white space'. - (excluded_filename, memchr, sip, slurp): New declarations. - * ed.c (print_ed_hunk): Adjust to diff.h's struct changes. - * context.c (pr_context_hunk): Likewise. - * ifdef.c (print_ifdef_script): Likewise. - * side.c (print_sdiff_script, print_half_line): Likewise. - * util.c (analyze_hunk, line_cmp, print_1_line): Likewise. - - * analyze.c (shift_boundaries): Remove unneeded variable `end' and - unnecessary comparisons of `preceding' and `other_preceding' against 0. - (diff_2_files): When comparing files byte-by-byte for equality, - don't slurp them all in at once; just compare them a buffer at a time. - This can win big if they differ early on. - Move some code to compare_files to enable this change. - Use only one buffer for stdin with `diff - -'. - (discard_confusing_lines, diff_2_files): Coalesce malloc/free calls. - (build_script): Remove obsolete OUTPUT_RCS code. - - * diff.c (add_exclude, add_exclude_file, excluded_filename): New fns. - (main): Use them for the new --exclude and --exclude-from options. - (compare_files): Don't open a file unless it must be read. - Treat `diff file file' and `diff file dir' similarly. - Move some code here from diff_2_files to enable this. - Simplify file vs dir warning. - - * dir.c (dir_sort): Support new --exclude* options. - - * io.c (struct equivclass): Put hash code and line length here instead - of struct line_def, so that they can be shared. - (find_and_hash_each_line): Compute equivalence class as we go, - instead of doing it in a separate pass; this thrashes memory less. - Make buckets realloc-able, since we can't preallocate them. - Record one more line start than there are lines, so that we can compute - any line's length by subtracting its start from the next line's, - instead of storing the length explicitly. This saves memory. - Move prefix-handling code to find_identical_ends; - this wins with large prefixes. - Use Is_space, not is_space, for consistent treatment of white space. - (prepare_text_end): New function. - (find_identical_ends): Move slurping here, so it's only done when - needed. Work even if the buffers are the same (because of `diff - -'). - Compare prefixes a word at a time for speed. - (find_equiv_class): Delete; now done by find_and_hash_each_line. - (read_files): Don't slurp unless needed. - find_equiv_class's work is now folded into find_and_hash_each_line. - Don't copy stdin buffer if `diff - -'. - Check for running out of primes. - (sip, slurp): Split first part of `slurp' into another function `sip'. - `sip' sets things up and perhaps reads the first ST_BLKSIZE buffer to - see whether the file is binary; `slurp' now just finishes the job. - This lets diff_2_files compare binary files lazily. - Allocate a one-word sentinel to allow word-at-a-time prefix comparison. - Count prefix lines only if needed, only count the first file's prefix. - Don't bother to count suffix lines; it's never needed. - Set up linbuf[0] to point at first differing line. - (binary_file_p): Change test for binary files: - if it has a null byte in its first buffer, it's binary. - (primes): Add more primes. - - * util.c (line_cmp): Use bcmp for speed. - Use Is_space, not is_space, for consistent treatment of white space. - (translate_line_number): Internal line numbers now count from 0 - starting after the prefix. - (memchr): New function (if memchr is missing). - - * Makefile.in: Document HAVE_ST_BLKSIZE. Link with wildmat.o. - * system.h (STAT_BLOCKSIZE): New macro based on HAVE_ST_BLKSIZE. - * configure.in: Add AC_ST_BLKSIZE. - * wildmat.c: New file. - -Fri Sep 4 01:28:51 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu) - - * sdiff.c (xmalloc): Renamed from ck_malloc. Callers changed. - -Thu Sep 3 15:28:59 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) - - * diff.h: Don't declare free, index, rindex. - -Tue Aug 11 22:18:06 1992 John Gilmore (gnu at cygnus.com) - - * io.c (binary_file_p): Use heuristic to avoid declaring info - files as binary files. Allow about 1.5% non-printing - characters (in info's case, ^_). - -Tue Jul 7 01:09:26 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) - - * diff.h: Replace function_regexp and ignore_regexp with lists - of compiled regexps. - * analyze.c, context.c, util.c: Test whether the lists, not - the old variables, are empty. - * util.c (analyze_hunk), context.c (find_function): Compare - lines with the lists of regexps. - * diff.c (add_regexp): New function. - (main): Use it. - - * diff3: Add -v --version option. - * Makefile.in: Link with version.o. - - * system.h: New file. - * diff.h, cmp.c, diff3.c, sdiff.c: Use it. - - * diff.h, diff3.c: Include string.h or strings.h, as appropriate. - Declare malloc and realloc. - - * diff3.c (perror_with_exit): Include program name in message. - - * diff3.c: Lowercase error messages for GNU standards. - - * sdiff.c [USG || STDC_HEADERS]: Define bcopy in terms of memcpy. - - * sdiff.c: Use the version number from version.c. - * Makefile.in: Link with version.o. - - * cmp.c error.c xmalloc.c: New files from textutils. - * Makefile.in: Add rules for them. - - * diff.c (longopts): --unidirectional-new-file is like -P, not -N. - Rename --file-label to --label (leave old name, but undocumented). - - * sdiff.c, diff.c (usage): Condense messages and fix some errors. - - * diff3.c (main, usage): Add long-named options. - -Fri Jul 3 14:31:18 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) - - * diff.h, diff3.c, sdiff.c: Change FOO_MISSING macros to HAVE_FOO. - -Thu Jun 25 16:59:47 1992 David J. MacKenzie (djm@apple-gunkies.gnu.ai.mit.edu) - - * diff.c: --reversed-ed -> --forward-ed. - -Wed Feb 26 12:17:32 1992 Paul Eggert (eggert@yata.uucp) - - * analyze.c, diff.c, diff.h, io.c: For -y, compare even if same file. - -Fri Feb 14 22:46:38 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu) - - * io.c, diff3.c, analyze.c: Add extra parentheses. - -Sun Feb 9 00:22:42 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu) - - * diff.h (unidirectional_new_file_flag): New variable. - * diff.c (main): Set that for -P. - (compare_files): Support -P, somewhat like -N. - (longopts): Support long name for -P. - -Sat Jan 4 20:10:34 1992 Paul Eggert (eggert at yata.uucp) - - * Makefile.in: Distribute diff.info-* too. - - * README, sdiff.c: version number now matches version.c. - - * configure: Fix and document vfork test. - - * ifdef.c: Don't dump core if `diff -Dx f f'. - -Mon Dec 23 23:36:08 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu) - - * diff.h, diff3.c, sdiff.c: Change POSIX ifdefs to - HAVE_UNISTD_H and _POSIX_VERSION. - -Wed Dec 18 17:00:31 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu) - - * Makefile.in (srcs): Add sdiff.c. - (tapefiles): Add diff.texi and diff.info. - - * diff.h, diff3.c, sdiff.c: Use HAVE_VFORK_H instead of - VFORK_HEADER and VFORK_WORKS. - -Tue Dec 17 00:02:59 1991 Paul Eggert (eggert at yata.uucp) - - * Makefile.in (all): Add diff.info, sdiff. - - * configure, diff.c, sdiff.c: - Prefix long options with `--', not `+'. - * diff.c: Regularize option names. - - * configure: Fix check for vfork. - * configure, diff.c, diff.h, diff3.c, sdiff.c: - Use Posix definitions when possible. - - * context.c: Align context with tab if -T is given. Tune. - * diff.c, diff.h, side.c: Calculate column widths so that tabs line up. - * io.c: Add distinction between white space and printing chars. - * side.c: Don't expand tabs unless -t is given. - * side.c, util.c: Tab expansion now knows about '\b', '\f', '\r', '\v'. - * util.c: -w skips all white space. Remove lint. Tune. - - * sdiff.c: Support many more diff options, e.g. `-', `sdiff file dir'. - Ignore interrupts while the subsidiary editor is in control. - Clean up temporary file and kill subsidiary diff if interrupted. - Ensure subsidiary diff doesn't ignore SIGPIPE. - Don't get confused while waiting for two subprocesses. - Don't let buffers overflow. Check for I/O errors. - Convert to GNU style. Tune. - - * sdiff.c, util.c: Don't lose errno. - Don't confuse sdiff with messages like `Binary files differ'. - * sdiff.c, side.c: Don't assume that common lines are identical. - Simplify --sdiff-merge-assist format. - -Mon Sep 16 16:42:01 1991 Tom Lord (lord at churchy.gnu.ai.mit.edu) - - * Makefile.in, sdiff.c: introduced sdiff front end to diff. - - * Makefile.in, analyze.c, diff.c, diff.h, io.c, side.c: Added - sdiff-style output format to diff. - -Mon Aug 26 16:44:55 1991 David J. MacKenzie (djm at pogo.gnu.ai.mit.edu) - - * Makefile.in, configure: Only put $< in Makefile if using VPATH, - because older makes don't understand it. - -Fri Aug 2 12:22:30 1991 David J. MacKenzie (djm at apple-gunkies) - - * configure: Create config.status. Remove it and Makefile if - interrupted while creating them. - -Thu Aug 1 22:24:31 1991 David J. MacKenzie (djm at apple-gunkies) - - * configure: Check for +srcdir etc. arg and look for - Makefile.in in that directory. Set VPATH if srcdir is not `.'. - * Makefile.in: Get rid of $(archpfx). - -Tue Jul 30 21:28:44 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * Makefile.in (prefix): Renamed from DESTDIR. - -Wed Jul 24 23:08:56 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu) - - * diff.h, diff3.c: Rearrange ifdefs to use POSIX, - STDC_HEADERS, VFORK_MISSING, DIRENT. This way it works on - more systems that aren't pure USG or BSD. - Don't not define const if __GNUC__ is defined -- that would - break with -traditional. - * configure: Check for those features. - -Wed Jul 10 01:39:23 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu) - - * configure, Makefile.in: $(INSTALLPROG) -> $(INSTALL). - -Sat Jul 6 16:39:04 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu) - - * Replace Makefile with configure and Makefile.in. - Update README with current compilation instructions. - -Sat Jul 6 14:03:29 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * util.c (setup_output): Just save the args for later use. - (begin_output): Do the real work, with the values that were saved. - It's safe to call begin_output more than once. - Print the special headers for context format here. - * analyze.c (diff_2_files): Don't print special headers here. - * context.c (pr_context_hunk, pr_unidiff_hunk): Call begin_output. - * ed.c (print_ed_hunk, print_forward_ed_hunk, print_rcs_hunk): - * normal.c (print_normal_hunk): Likewise. - * ifdef.c (print_ifdef_hunk): Likewise. - * util.c (finish_output): Don't die if begin_output was not called. - -Thu Jun 20 23:10:01 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu) - - * Makefile: Add TAGS, distclean, and realclean targets. - Set SHELL. - -Tue Apr 30 13:54:36 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * diff.h (TRUE, FALSE): Undefine these before defining. - -Thu Mar 14 18:27:27 1991 Richard Stallman (rms@mole.ai.mit.edu) - - * Makefile (objs): Include $(ALLOCA). - -Sat Mar 9 22:34:03 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * diff.h: Include regex.h. - -Thu Feb 28 18:59:53 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * Makefile (diff3): Link with GNU getopt. - -Sat Feb 23 12:49:43 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * io.c (find_equiv_class): Make hash code unsigned before mod. - - * diff.h (files): Add EXTERN. - -Sun Jan 13 21:33:01 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * diff.c: +print option renamed +paginate. Remove +all-text. - -Mon Jan 7 06:18:01 1991 David J. MacKenzie (djm at geech.ai.mit.edu) - - * Makefile (dist): New target, replacing diff.tar and - diff.tar.Z, to encode version number in distribution directory - and tar file names. - -Sun Jan 6 18:42:23 1991 Michael I Bushnell (mib at geech.ai.mit.edu) - - * Version 1.15 released. - - * version.c: Updated from 1.15 alpha to 1.15 - - * context.c (print_context_number_range, - print_unidiff_number_range): Don't print N,M when N=M, print - just N instead. - - * README: Updated for version 1.15. - Makefile: Updated for version 1.15. - - * diff3.c (main): Don't get confused if one of the arguments - is a directory. - - * diff.c (compare_files): Don't get confused if comparing - standard input to a directory; print error instead. - - * analyze.c (diff_2_files), context.c (print_context_header, - print_context_script), diff.c (main), diff.h (enum - output_style): Tread unidiff as an output style in its own - right. This also generates an error when both -u and -c are - given. - - * diff.c (main): Better error messages when regexps are bad. - - * diff.c (compare_files): Don't assume stdin is opened. - - * diff3.c (read_diff): Don't assume things about the order of - descriptor assignment and closes. - - * util.c (setup_output): Don't assume things about the order - of descriptor assignment and closes. - - * diff.c (compare_files): Set a flag so that closes don't - happen more than once. - - * diff.c (main): Don't just flush stdout, do a close. That - way on broken systems we can still get errors. - -Mon Dec 24 16:24:17 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * diff.c (usage): Use = for args of long options. - -Mon Dec 17 18:19:20 1990 Michael I Bushnell (mib at geech.ai.mit.edu) - - * context.c (print_context_label): Labels were interchanged badly. - - * context.c (pr_unidiff_hunk): Changes to deal with files - ending in incomplete lines. - * util.c (print_1_line): Other half of the changes. - -Mon Dec 3 14:23:55 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * diff.c (longopts, usage): unidiff => unified. - -Wed Nov 7 17:13:08 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * analyze.c (diff_2_files): No warnings about newlines for -D. - - * diff.c (pr_unidiff_hunk): Remove ref to output_patch_flag. - -Tue Oct 23 23:19:18 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * diff.c (compare_files): For -D, compare even args are same file. - * analyze.c (diff_2_files): Likewise. - Also, output even if files have no differences. - - * analyze.c (diff_2_files): Print missing newline messages last. - Return 2 if a newline is missing. - Print them even if files end with identical text. - -Mon Oct 22 19:40:09 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * diff.c (usage): Return 2. - -Wed Oct 10 20:54:04 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * diff.c (longopts): Add +new-files. - -Sun Sep 23 22:49:29 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * context.c (print_context_script): Handle unidiff_flag. - (print_context_header): Likewise. - (print_unidiff_number_range, pr_unidiff_hunk): New functions. - * diff.c (longopts): Add element for +unidiff. - (main): Handle +unidiff and -u. - (usage): Mention them. - -Wed Sep 5 16:33:22 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * io.c (find_and_hash_each_line): Deal with missing final newline - after buffering necessary context lines. - -Sat Sep 1 16:32:32 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * io.c (find_identical_ends): ROBUST_OUTPUT_FORMAT test was backward. - -Thu Aug 23 17:17:20 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * diff3.c (WIFEXITED): Undef it if WEXITSTATUS is not defined. - * context.c (find_function): Don't try to return values. - -Wed Aug 22 11:54:39 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * diff.h (O_RDONLY): Define if not defined. - -Tue Aug 21 13:49:26 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * Handle -L option. - * context.c (print_context_label): New function. - (print_context_header): Use that. - * diff.c (main): Recognize the option. - (usage): Updated. - * diff.h (file_label): New variable. - * diff3.c (main): Recognize -L instead of -t. - - * diff3.c (main): Support -m without other option. - - * diff3.c (WEXITSTATUS, WIFEXITED): Define whenever not defined. - - * diff3.c (bcopy, index, rindex): Delete definitions; not used. - (D_LINENUM, D_LINELEN): Likewise. - (struct diff_block): lengths includes newlines. - (struct diff3_block): Likewise. - (always_text, merge): New variables. - (read_diff): Return address of end, not size read. Calls changed. - Pass -a to diff if given to diff3. - current_chunk_size now an int. Detect error in `pipe'. - Check for incomplete line of output here. - (scan_diff_line): Don't make scan_ptr + 2 before knowing it is valid. - No need to check validity of diff output here. - Include newline in length of line. - (main): Compute rev_mapping here. Handle -a and -m. - Error message if excess -t operands. Error for incompatible options. - Error if `-' given more than once. - Fix error storing in tag_strings. - (output_diff3): REV_MAPPING is now an arg. Call changed. - Change syntax of "missing newline" message. - Expect length of line to include newline. - (output_diff3_edscript): Return just 0 or 1. - REV_MAPPING is now an arg. Call changed. - (output_diff3_merge): New function. - (process_diff): Better error message for bad diff format. - (fatal, perror_with_exit): Return status 2. - - * analyze.c (diff_2_files): Report missing newline in either - or both files, if not robust output style. - - * util.c (setup_output): Detect error from pipe. - No need to close stdin. - - * util.c (print_1_line): Change format of missing-newline msg. - Change if statements to switch. - - * io.c (slurp): Don't mention differences in final newline if -B. - - * io.c (binary_file_p): Use ISO char set as criterion, not ASCII. - - * io.c (find_identical_ends): Increase value of BEG0 by 1. - Other changes in backwards scan to avoid decrementing pointers - before start of array, and set LINES properly. - - * diff.h (ROBUST_OUTPUT_STYLE): New macro. - * io.c (find_identical_ends, find_and_hash_each_line): Use that macro. - - * diff.h (dup2): Don't define if XENIX. - - * diff.c (main): Check for write error at end. - - * context.c (find_function): Don't return a value. - Use argument FILE rather than global files. - - * analyze.c: Add external function declarations. - * analyze.c (build_script): Turn off explicit check for final newline. - - * analyze.c (discard_confusing_lines): Make integers unsigned. - -Tue Jul 31 21:37:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * io.c (find_and_hash_each_line): Correct the criterion - for leaving out the newline from the end of the line. - -Tue May 29 21:28:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * dir.c (diff_dirs): Free things only if nonzero. - -Mon Apr 16 18:31:05 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * diff.h (NDIR_IN_SYS): New macro controls location of ndir.h. - - * diff3.c (xmalloc, xrealloc): Don't die if size == 0 returns 0. - -Sun Mar 25 15:58:42 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * analyze.c (discard_confusing_lines): - `many' wasn't being used; use it. - Canceling provisionals near start of run must handle already - canceled provisionals. - Canceling subruns of provisionals was canceling last nonprovisional. - -Sat Mar 24 14:02:51 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * analyze.c (discard_confusing_lines): - Threshold for line occurring many times scales by square root - of total lines. - Within each run, cancel any long subrun of provisionals. - Don't update `provisional' while canceling provisionals. - In big outer loop, handle provisional and nonprovisional separately. - -Thu Mar 22 16:35:33 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * analyze.c (discard_confusing_lines): - The first loops to discard provisionals from ends failed to step. - In second such loops, keep discarding all consecutive provisionals. - Increase threshold for stopping discarding, and also check for - consecutive nondiscardables as separate threshold. - -Fri Mar 16 00:33:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * diff3.c (read_diff): Pass -- as first arg to diff. - - * diff3.c: Include wait.h or define equivalent macros. - (read_diff): Don't use stdio printing error in the inferior. - Remember the pid and wait for it. Report failing status. - Report failure of vfork. - -Sun Mar 11 17:10:32 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * diff3.c (main): Accept -t options and pass to output_diff3_edscript. - (usage): Mention -t. - (read_diff): Use vfork. - (vfork): Don't use it on Sparc. - - * diff.h (vfork): Don't use it on Sparc. - -Tue Mar 6 22:37:20 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * diff3.c (dup2): Don't define on Xenix. - - * Makefile: Comments for Xenix. - -Thu Mar 1 17:19:23 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * analyze.c (diff_2_files): `message' requires three args. - -Fri Feb 23 10:56:50 1990 David J. MacKenzie (djm at albert.ai.mit.edu) - - * diff.h, util.c, diff3.c: Change 'void *' to 'VOID *', with - VOID defined as void if __STDC__, char if not. - -Sun Feb 18 20:31:58 1990 David J. MacKenzie (djm at albert.ai.mit.edu) - - * Makefile: Add rules for getopt.c, getopt1.c, getopt.h. - - * getopt.c, getopt.h, getopt1.c: New files. - - * main.c (main, usage): Add long options. - - * analyze.c (shift_boundaries): Remove unused var 'j_end'. - -Thu Feb 8 02:43:16 1990 Jim Kingdon (kingdon at pogo.ai.mit.edu) - - * GNUmakefile: include ../Makerules before Makefile. - -Fri Feb 2 23:21:38 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * analyze.c (diff_2_files): If -B or -I, don't return 1 - if all changes were ignored. - -Wed Jan 24 20:43:57 1990 Richard Stallman (rms at albert.ai.mit.edu) - - * diff3.c (fatal): Output to stderr. - -Thu Jan 11 00:25:56 1990 David J. MacKenzie (djm at hobbes.ai.mit.edu) - - * diff.c (usage): Mention -v. - -Wed Jan 10 16:06:38 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * diff3.c (output_diff3_edscript): Return number of overlaps. - (main): If have overlaps, exit with status 1. - -Sun Dec 24 10:29:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * io.c (find_equiv_class): Fix typo that came from changing init of B - to an assignment. - - * version.c: New file. - * diff.c (main): -v prints version number. - - * io.c (binary_file_p): Null char implies binary file. - -Fri Nov 17 23:44:55 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * util.c (print_1_line): Fix off by 1 error. - -Thu Nov 16 13:51:10 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * util.c (xcalloc): Function deleted. - - * io.c (slurp): Null-terminate the buffer. - - * io.c (read_files): Delete unused vars. - - * io.c (find_equiv_class): Don't index by N if too low. - - * dir.c (dir_sort): Delete the extra declaration of compare_names. - - * diff.h: Don't declare xcalloc. Declare some other functions. - - * analyze.c (shift_boundaries): - Test for END at end of range before indexing by it. - Fix misspelling of `preceding' in var names. - -Sat Nov 11 14:04:16 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * diff3.c (using_to_diff3_block): Delete unused vars. - (make_3way_diff, process_diff_control, read_diff, output_diff3): Likewise. - -Mon Nov 6 18:15:50 EST 1989 Jay Fenlason (hack@ai.mit.edu) - - * README Fix typo. - -Fri Nov 3 15:27:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * diff.c (usage): Mention -D. - - * ifdef.c (print_ifdef_hunk): Write comments on #else and #endif. - -Sun Oct 29 16:41:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * diff.c (compare_files): Don't fflush for identical files. - -Wed Oct 25 17:57:12 1989 Randy Smith (randy at apple-gunkies.ai.mit.edu) - - * diff3.c (using_to_diff3_block): When defaulting lines from - FILE0, only copy up to just under the *lowest* line mentioned - in the next diff. - - * diff3.c (fatal): Add \n to error messages. - -Wed Oct 25 15:05:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * Makefile (tapefiles): Add ChangeLog. - -Tue Oct 3 00:51:17 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * diff3.c (process_diff, create_diff3_block): Init ->next field. - -Fri Sep 29 08:16:45 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * util.c (line_cmp): Alter end char of line 2, not line 1. - -Wed Sep 20 00:12:37 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * Makefile (diff.tar): Expect ln to fail on some files; - copy them with cp. - -Mon Sep 18 02:54:29 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * Handle -D option: - * io.c (find_and_hash_each_line): Keep all lines of 1st file. - * diff.c (main): Handle -D option. - (compare_files): Reject -D if files spec'd are directories. - * analyze.c (diff_2_files): Handle OUTPUT_IFDEF case. - -Fri Sep 1 20:15:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * diff.c (option_list): Rename arg VECTOR as OPTIONVEC. - -Mon Aug 28 17:58:27 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * diff.c (compare_files): Clear entire inf[i].stat. - -Wed Aug 23 17:48:47 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) - - * io.c (find_identical_ends): Sign was backward - determining where to bound the scan for the suffix. - -Wed Aug 16 12:49:16 1989 Richard Stallman (rms at hobbes.ai.mit.edu) - - * analyze.c (diff_2_files): If -q, treat all files as binary. - * diff.c (main): Detect -q, record in no_details_flag. - -Sun Jul 30 23:12:00 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * diff.c (usage): New function. - (main): Call it. - -Wed Jul 26 02:02:19 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * diff.c (main): Make -C imply -c. - -Thu Jul 20 17:57:51 1989 Chris Hanson (cph at kleph) - - * io.c (find_and_hash_each_line): Bug fix in context handling, - introduced by last change. - -Fri Jul 14 17:39:20 1989 Chris Hanson (cph at kleph) - - * analyze.c: To make RCS work correctly on files that don't - necessarily end in newline, introduce some changes that cause - diffs to be sensitive to missing final newline. Because - non-RCS modes don't want to be affected by these changes, they - are conditional on `output_style == OUTPUT_RCS'. - (diff_2_files) [OUTPUT_RCS]: Suppress the "File X missing - newline" message. - (build_script) [OUTPUT_RCS]: Cause the last line to compare as - different if exactly one of the files is missing its final - newline. - - * io.c (find_and_hash_each_line): Bug fix in - ignore_space_change mode. Change line's length to include the - newline. For OUTPUT_RCS, decrement last line's length if - there is no final newline. - (find_identical_ends) [OUTPUT_RCS]: If one of the files is - missing a final newline, make sure it's not included in either - the prefix or suffix. - - * util.c (print_1_line): Change line output routine to account - for line length including the newline. - -Tue Jun 27 02:35:28 1989 Roland McGrath (roland at hobbes.ai.mit.edu) - - * Makefile: Inserted $(archpfx) where appropriate. - -Wed May 17 20:18:43 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * diff3.c [USG]: Include fcntl.h. - - * diff.h [USG]: New compilation flags HAVE_NDIR, HAVE_DIRECT. - -Wed Apr 26 15:35:57 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * dir.c (diff_dirs): Two new args, NONEX1 and NONEX2, say to pretend - nonex dirs are empty. - (dir_sort): New arg NONEX, likewise. - * diff.c (compare_files): Pass those args. - Sometimes call diff_dirs if subdir exists in just one place. - -Wed Apr 12 01:10:27 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * io.c (find_identical_ends): Set END0 *after* last char - during backward scan for suffix. - -Sat Apr 8 15:49:49 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) - - * diff3.c (using_to_diff3_block): Now find high marks in files 1 - and 2 through mapping off of the last difference instead of the - first. - - * diff3.c: Many trivial changes to spelling inside comments. - -Fri Feb 24 12:38:03 1989 Randall Smith (randy at gluteus.ai.mit.edu) - - * util.c, normal.c, io.c, ed.c, dir.c, diff.h, diff.c, context.c, - analyze.c, Makefile: Changed copyright header to conform with new - GNU General Public license. - * diff3.c: Changed copyright header to conform with new GNU - General Public license. - * COPYING: Made a hard link to /gp/rms/COPYING. - -Fri Feb 24 10:01:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * io.c (slurp): Leave 2 chars space at end of buffer, not one. - (find_identical_ends): Special case if either file is empty; - don't try to make a sentinel since could crash. - -Wed Feb 15 14:24:48 1989 Jay Fenlason (hack at apple-gunkies.ai.mit.edu) - - * diff3.c (message) Re-wrote routine to avoid using alloca() - -Wed Feb 15 06:19:14 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * io.c (find_identical_ends): Delete the variable `bytes'. - -Sun Feb 12 11:50:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * io.c (slurp): ->bufsize is nominal amount we have room for; - add room for sentinel when calling xmalloc or xrealloc. - - * io.c (find_identical_ends): Do need overrun check in finding suffix. - -Fri Feb 10 01:28:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * diff.c (main): -C now takes arg to specify context length. - Now -p to show C function name--Damned IEEE! - Fatal error if context length spec'd twice. - - * ed.c (print_ed_hunk): Now special treatment only for lines containing - precisely a dot and nothing else. Output `..', end the insert, - substitute that one line, then resume the insert if nec. - - * io.c (find_and_hash_lines): When backing up over starting context, - don't move past buffer-beg. - - * io.c (find_identical_ends): Use sentinels to make the loops faster. - If files are identical, skip the 2nd loop and return quickly. - (slurp): Leave 1 char extra space after each buffer. - - * analyze.c (diff_2_files): Mention difference in final newlines. - -Wed Jan 25 22:44:44 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * dir.c (diff_dirs): Use * when calling fcn ptr variable. - -Sat Dec 17 14:12:06 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * Makefile: New vars INSTALL and LIBS used in some rules; - provide default defns plus commented-put defns for sysV. - -Thu Nov 17 16:42:53 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * dir.c (dir_sort): Open-trouble not fatal; just say # files is -1. - (diff_dirs): If dir_sort does that, give up and return 2. - - * diff.c (compare_files): Don't open directories. - Don't close them specially either. - Cross-propagate inf[i].dir_p sooner. - -Sun Nov 13 11:19:36 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * diff.h: Declare index, rindex. - - * diff.c (compare_files): If comparing foodir with b/f, - use foodir/f, not foodir/b/f. - - * diff.c (compare_files): Don't print "are identical" msg for 2 dirs. - Status now 1 if one file is a dir and the other isn't, etc. - -Thu Nov 3 16:30:24 1988 Randall Smith (randy at gluteus.ai.mit.edu) - - * Makefile: Added a define for diff3 to define DIFF_PROGRAM. - - * util.c: Added hack to make sure that perror was not called with - a null pointer. - - * diff.c: Changed S_IFDIR to S_IFMT in masking type of file bits - out. - - * diff3.c: Included USG compatibility defines. - - * diff.h: Moved sys/file.h into #else USG section (not needed or - wanted on System V). - - * ed.c, analyze.c, context.c: Shortened names to 12 characters for - the sake of System V (too simple not to do). - - -Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1997, 1998, 1999, -2000, 2001, 2002 Free Software Foundation, Inc. - -This file is part of GNU Diffutils. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -This program is distributed in the hope that they will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. diff --git a/src/bin/diffutils/INSTALL b/src/bin/diffutils/INSTALL deleted file mode 100644 index 62ea076c1f..0000000000 --- a/src/bin/diffutils/INSTALL +++ /dev/null @@ -1,231 +0,0 @@ -Copyright 1994, 1995, 1996, 1999, 2000, 2001 Free Software Foundation, -Inc. - - This file is free documentation; the Free Software Foundation gives -unlimited permission to copy, distribute and modify it. - -Basic Installation -================== - - These are generic installation instructions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). - - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. (Caching is -disabled by default to prevent problems with accidental use of stale -cache files.) - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you -may remove or edit it. - - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You only need -`configure.ac' if you want to change it or regenerate `configure' using -a newer version of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - - Running `configure' takes awhile. While running, it prints some - messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - -Compilers and Options -===================== - - Some systems require unusual options for compilation or linking that -the `configure' script does not know about. Run `./configure --help' -for details on some of the pertinent environment variables. - - You can give `configure' initial values for variables by setting -them in the environment. You can do that on the command line like this: - - ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix - - *Note Defining Variables::, for more details. - -Compiling For Multiple Architectures -==================================== - - You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - If you have to use a `make' that does not support the `VPATH' -variable, you have to compile the package for one architecture at a -time in the source code directory. After you have installed the -package for one architecture, use `make distclean' before reconfiguring -for another architecture. - -Installation Names -================== - - By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PATH'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PATH', the package will use -PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=PATH' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - - There may be some features `configure' cannot figure out -automatically, but needs to determine by the type of host the package -will run on. Usually `configure' can figure that out, but if it prints -a message saying it cannot guess the host type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: - - CPU-COMPANY-SYSTEM - -where SYSTEM can have one of these forms: - - OS KERNEL-OS - - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the host type. - - If you are _building_ compiler tools for cross-compiling, you should -use the `--target=TYPE' option to select the type of system they will -produce code for. - - If you want to _use_ a cross compiler, that generates code for a -platform different from the build platform, you should specify the host -platform (i.e., that on which the generated programs will eventually be -run) with `--host=TYPE'. In this case, you should also specify the -build platform with `--build=TYPE', because, in this case, it may not -be possible to guess the build platform (it sometimes involves -compiling and running simple test programs, and this can't be done if -the compiler is a cross compiler). - -Sharing Defaults -================ - - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Defining Variables -================== - - Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run -configure again during the build, and the customized values of these -variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: - - ./configure CC=/usr/local2/bin/gcc - -will cause the specified gcc to be used as the C compiler (unless it is -overridden in the site shell script). - -`configure' Invocation -====================== - - `configure' recognizes the following options to control how it -operates. - -`--help' -`-h' - Print a summary of the options to `configure', and exit. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`--cache-file=FILE' - Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to - disable caching. - -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. - diff --git a/src/bin/diffutils/INSTALLME b/src/bin/diffutils/INSTALLME deleted file mode 100644 index eab41194c3..0000000000 --- a/src/bin/diffutils/INSTALLME +++ /dev/null @@ -1,53 +0,0 @@ -Installation instructions specific to GNU Diffutils - - Copyright (C) 2001, 2002 Free Software Foundation, Inc. - - This file is part of GNU Diffutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. If not, write to - the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. - - -Please send comments and problem reports to . - -If you have a problem with internationalization, you might be able to -work around it as described in ABOUT-NLS by invoking `./configure ---disable-nls'. Many of the problems arise from dynamic linking -issues on non-GNU platforms (e.g. with the iconv library). Such -problems tend to be shared by other GNU applications on these -platforms, and can usually be fixed by carefully tweaking your non-GNU -installation. If you have an older version of libiconv, please -upgrade to the latest one, preferably libiconv-1.8 or newer. -(libiconv-1.8 is not yet available as of this writing, but it should -be out soon.) If the problem seems isolated to diffutils, though, -please report a bug. - -This program requires a Standard C compiler (C89 or later); if you -have an older K&R compiler, please install GCC first. - -If you make changes to the source code, you may need recent test -versions of GNU build tools to regenerate the intermediate files. The -following versions were used to generate the intermediate files in -this distribution: - -* GNU Autoconf 2.53 - -* GNU Automake 1.6 - -* GNU gettext 0.11.1 - -* GNU help2man 1.27 - -* GNU texinfo 4.2 diff --git a/src/bin/diffutils/Jamfile b/src/bin/diffutils/Jamfile deleted file mode 100644 index 4523d1c9c8..0000000000 --- a/src/bin/diffutils/Jamfile +++ /dev/null @@ -1,4 +0,0 @@ -SubDir HAIKU_TOP src bin diffutils ; - -SubInclude HAIKU_TOP src bin diffutils lib ; -SubInclude HAIKU_TOP src bin diffutils src ; diff --git a/src/bin/diffutils/Makefile b/src/bin/diffutils/Makefile deleted file mode 100644 index 9b2d5e631f..0000000000 --- a/src/bin/diffutils/Makefile +++ /dev/null @@ -1,455 +0,0 @@ -# Makefile.in generated by automake 1.6 from Makefile.am. -# Makefile. Generated from Makefile.in by configure. - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - - -# Main Automakefile for GNU diffutils. - -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. -SHELL = /bin/sh - -srcdir = . -top_srcdir = . - -prefix = /usr/local -exec_prefix = ${prefix} - -bindir = ${exec_prefix}/bin -sbindir = ${exec_prefix}/sbin -libexecdir = ${exec_prefix}/libexec -datadir = ${prefix}/share -sysconfdir = ${prefix}/etc -sharedstatedir = ${prefix}/com -localstatedir = ${prefix}/var -libdir = ${exec_prefix}/lib -infodir = ${prefix}/info -mandir = ${prefix}/man -includedir = ${prefix}/include -oldincludedir = /usr/include -pkgdatadir = $(datadir)/diffutils -pkglibdir = $(libdir)/diffutils -pkgincludedir = $(includedir)/diffutils -top_builddir = . - -ACLOCAL = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run aclocal-1.6 -AUTOCONF = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoconf -AUTOMAKE = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run automake-1.6 -AUTOHEADER = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoheader - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = /bin/install -c -INSTALL_PROGRAM = ${INSTALL} -INSTALL_DATA = ${INSTALL} -m 644 -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -INSTALL_SCRIPT = ${INSTALL} -INSTALL_HEADER = $(INSTALL_DATA) -transform = s,x,x, -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = -host_triplet = i586-pc-beos - -EXEEXT = -OBJEXT = o -PATH_SEPARATOR = : -AMTAR = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run tar -AWK = gawk -BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ -CATOBJEXT = @CATOBJEXT@ -CC = gcc -CPP = gcc -E -DATADIRNAME = @DATADIRNAME@ -DEPDIR = .deps -GENCAT = @GENCAT@ -GLIBC21 = @GLIBC21@ -GMSGFMT = : -HAVE_LIB = @HAVE_LIB@ -HELP2MAN = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run help2man -INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s -INSTOBJEXT = @INSTOBJEXT@ -INTLBISON = @INTLBISON@ -INTLLIBS = -INTLOBJS = @INTLOBJS@ -INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -LIB = @LIB@ -LIBICONV = -LIBINTL = -LIB_CLOCK_GETTIME = -LTLIB = @LTLIB@ -LTLIBICONV = -LTLIBINTL = -MKINSTALLDIRS = config/mkinstalldirs -PACKAGE = diffutils -POSUB = -PR_PROGRAM = /bin/pr -RANLIB = ranlib -STRIP = -U = -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = no -VERSION = 2.8.1 -am__include = include -am__quote = -install_sh = /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/install-sh - -EXTRA_DIST = config/config.rpath exgettext INSTALLME -SUBDIRS = doc lib m4 ms src man po - -ACLOCAL_AMFLAGS = -I m4 -subdir = . -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = -DIST_SOURCES = - -RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \ - uninstall-info-recursive all-recursive install-data-recursive \ - install-exec-recursive installdirs-recursive install-recursive \ - uninstall-recursive check-recursive installcheck-recursive -DIST_COMMON = README ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL \ - Makefile.am Makefile.in NEWS THANKS aclocal.m4 config.hin \ - config/config.guess config/config.rpath config/config.sub \ - config/depcomp config/install-sh config/mdate-sh config/missing \ - config/mkinstalldirs config/texinfo.tex configure configure.ac -DIST_SUBDIRS = $(SUBDIRS) -all: config.h - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -.SUFFIXES: -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe) - -$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck -$(srcdir)/configure: $(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) - cd $(srcdir) && $(AUTOCONF) - -$(ACLOCAL_M4): configure.ac m4/c-bs-a.m4 m4/c-stack.m4 m4/check-decl.m4 m4/codeset.m4 m4/dos.m4 m4/error.m4 m4/fnmatch.m4 m4/gettext.m4 m4/glibc21.m4 m4/gnu-source.m4 m4/iconv.m4 m4/inttypes.m4 m4/jm-glibc-io.m4 m4/lcmessage.m4 m4/lib-ld.m4 m4/lib-link.m4 m4/lib-prefix.m4 m4/longlong.m4 m4/malloc.m4 m4/mbrtowc.m4 m4/mbstate_t.m4 m4/prereq.m4 m4/progtest.m4 m4/realloc.m4 m4/regex.m4 m4/setmode.m4 m4/st_mtim.m4 m4/stdbool.m4 m4/strftime.m4 m4/vararrays.m4 m4/xstrtoumax.m4 - cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) - -config.h: stamp-h1 - @if test ! -f $@; then \ - rm -f stamp-h1; \ - $(MAKE) stamp-h1; \ - else :; fi - -stamp-h1: $(srcdir)/config.hin $(top_builddir)/config.status - @rm -f stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status config.h - -$(srcdir)/config.hin: $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOHEADER) - touch $(srcdir)/config.hin - -distclean-hdr: - -rm -f config.h -uninstall-info-am: - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @set fnord $(MAKEFLAGS); amf=$$2; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: - @set fnord $(MAKEFLAGS); amf=$$2; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done - -ETAGS = etags -ETAGSFLAGS = - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique - -TAGS: tags-recursive $(HEADERS) $(SOURCES) config.hin $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) config.hin $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$tags$$unique" \ - || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = . -distdir = $(PACKAGE)-$(VERSION) - -am__remove_distdir = \ - { test ! -d $(distdir) \ - || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -fr $(distdir); }; } - -GZIP_ENV = --best -distcleancheck_listfiles = find . -type f -print - -distdir: $(DISTFILES) - @if sed 15q $(srcdir)/NEWS | fgrep -e "$(VERSION)" >/dev/null; \ - then :; else \ - echo "NEWS not updated; not releasing" 1>&2; \ - exit 1; \ - fi - $(am__remove_distdir) - mkdir $(distdir) - $(mkinstalldirs) $(distdir)/config $(distdir)/po - @for file in $(DISTFILES); do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir)$$dir \ - || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -d $(distdir)/$$subdir \ - || mkdir $(distdir)/$$subdir \ - || exit 1; \ - (cd $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$(top_distdir)" \ - distdir=../$(distdir)/$$subdir \ - distdir) \ - || exit 1; \ - fi; \ - done - -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ - ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r $(distdir) -dist-gzip: distdir - $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) - -dist dist-all: distdir - $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - $(am__remove_distdir) - GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - - chmod -R a-w $(distdir); chmod a+w $(distdir) - mkdir $(distdir)/=build - mkdir $(distdir)/=inst - chmod a-w $(distdir) - dc_install_base=`$(am__cd) $(distdir)/=inst && pwd` \ - && cd $(distdir)/=build \ - && ../configure --srcdir=.. --prefix=$$dc_install_base \ - --with-included-gettext \ - $(DISTCHECK_CONFIGURE_FLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) uninstall \ - && (test `find $$dc_install_base -type f -print | wc -l` -le 1 \ - || { echo "ERROR: files left after uninstall:" ; \ - find $$dc_install_base -type f -print ; \ - exit 1; } >&2 ) \ - && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \ - && rm -f $(distdir).tar.gz \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck - $(am__remove_distdir) - @echo "$(distdir).tar.gz is ready for distribution" | \ - sed 'h;s/./=/g;p;x;p;x' -distcleancheck: distclean - if test '$(srcdir)' = . ; then \ - echo "ERROR: distcleancheck can only run from a VPATH build" ; \ - exit 1 ; \ - fi - test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left after distclean:" ; \ - $(distcleancheck_listfiles) ; \ - exit 1; } >&2 -check-am: all-am -check: check-recursive -all-am: Makefile config.h -installdirs: installdirs-recursive -installdirs-am: - -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic mostlyclean-am - -distclean: distclean-recursive - -rm -f config.status config.cache config.log -distclean-am: clean-am distclean-generic distclean-hdr distclean-tags - -dvi: dvi-recursive - -dvi-am: - -info: info-recursive - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-recursive - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic - -uninstall-am: uninstall-info-am - -uninstall-info: uninstall-info-recursive - -.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \ - clean-generic clean-recursive dist dist-all dist-gzip distcheck \ - distclean distclean-generic distclean-hdr distclean-recursive \ - distclean-tags distcleancheck distdir dvi dvi-am dvi-recursive \ - info info-am info-recursive install install-am install-data \ - install-data-am install-data-recursive install-exec \ - install-exec-am install-exec-recursive install-info \ - install-info-am install-info-recursive install-man \ - install-recursive install-strip installcheck installcheck-am \ - installdirs installdirs-am installdirs-recursive \ - maintainer-clean maintainer-clean-generic \ - maintainer-clean-recursive mostlyclean mostlyclean-generic \ - mostlyclean-recursive tags tags-recursive uninstall \ - uninstall-am uninstall-info-am uninstall-info-recursive \ - uninstall-recursive - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/bin/diffutils/Makefile.am b/src/bin/diffutils/Makefile.am deleted file mode 100644 index a579b1d5aa..0000000000 --- a/src/bin/diffutils/Makefile.am +++ /dev/null @@ -1,23 +0,0 @@ -# Main Automakefile for GNU diffutils. - -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. - -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2, or (at your option) -## any later version. - -## This program is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. - -## You should have received a copy of the GNU General Public License -## along with this program; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -## 02111-1307, USA. - -EXTRA_DIST = config/config.rpath exgettext INSTALLME -SUBDIRS = doc lib m4 ms src man po - -ACLOCAL_AMFLAGS = -I m4 diff --git a/src/bin/diffutils/Makefile.in b/src/bin/diffutils/Makefile.in deleted file mode 100644 index 75304fd68a..0000000000 --- a/src/bin/diffutils/Makefile.in +++ /dev/null @@ -1,455 +0,0 @@ -# Makefile.in generated by automake 1.6 from Makefile.am. -# @configure_input@ - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# Main Automakefile for GNU diffutils. - -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = . - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_HEADER = $(INSTALL_DATA) -transform = @program_transform_name@ -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ - -EXEEXT = @EXEEXT@ -OBJEXT = @OBJEXT@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -AMTAR = @AMTAR@ -AWK = @AWK@ -BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -CPP = @CPP@ -DATADIRNAME = @DATADIRNAME@ -DEPDIR = @DEPDIR@ -GENCAT = @GENCAT@ -GLIBC21 = @GLIBC21@ -GMSGFMT = @GMSGFMT@ -HAVE_LIB = @HAVE_LIB@ -HELP2MAN = @HELP2MAN@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTOBJEXT = @INSTOBJEXT@ -INTLBISON = @INTLBISON@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ -INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -LIB = @LIB@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ -LTLIB = @LTLIB@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -PACKAGE = @PACKAGE@ -POSUB = @POSUB@ -PR_PROGRAM = @PR_PROGRAM@ -RANLIB = @RANLIB@ -STRIP = @STRIP@ -U = @U@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -am__include = @am__include@ -am__quote = @am__quote@ -install_sh = @install_sh@ - -EXTRA_DIST = config/config.rpath exgettext INSTALLME -SUBDIRS = doc lib m4 ms src man po - -ACLOCAL_AMFLAGS = -I m4 -subdir = . -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = -DIST_SOURCES = - -RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \ - uninstall-info-recursive all-recursive install-data-recursive \ - install-exec-recursive installdirs-recursive install-recursive \ - uninstall-recursive check-recursive installcheck-recursive -DIST_COMMON = README ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL \ - Makefile.am Makefile.in NEWS THANKS aclocal.m4 config.hin \ - config/config.guess config/config.rpath config/config.sub \ - config/depcomp config/install-sh config/mdate-sh config/missing \ - config/mkinstalldirs config/texinfo.tex configure configure.ac -DIST_SUBDIRS = $(SUBDIRS) -all: config.h - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -.SUFFIXES: -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe) - -$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck -$(srcdir)/configure: $(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) - cd $(srcdir) && $(AUTOCONF) - -$(ACLOCAL_M4): configure.ac m4/c-bs-a.m4 m4/c-stack.m4 m4/check-decl.m4 m4/codeset.m4 m4/dos.m4 m4/error.m4 m4/fnmatch.m4 m4/gettext.m4 m4/glibc21.m4 m4/gnu-source.m4 m4/iconv.m4 m4/inttypes.m4 m4/jm-glibc-io.m4 m4/lcmessage.m4 m4/lib-ld.m4 m4/lib-link.m4 m4/lib-prefix.m4 m4/longlong.m4 m4/malloc.m4 m4/mbrtowc.m4 m4/mbstate_t.m4 m4/prereq.m4 m4/progtest.m4 m4/realloc.m4 m4/regex.m4 m4/setmode.m4 m4/st_mtim.m4 m4/stdbool.m4 m4/strftime.m4 m4/vararrays.m4 m4/xstrtoumax.m4 - cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) - -config.h: stamp-h1 - @if test ! -f $@; then \ - rm -f stamp-h1; \ - $(MAKE) stamp-h1; \ - else :; fi - -stamp-h1: $(srcdir)/config.hin $(top_builddir)/config.status - @rm -f stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status config.h - -$(srcdir)/config.hin: $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOHEADER) - touch $(srcdir)/config.hin - -distclean-hdr: - -rm -f config.h -uninstall-info-am: - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @set fnord $(MAKEFLAGS); amf=$$2; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: - @set fnord $(MAKEFLAGS); amf=$$2; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done - -ETAGS = etags -ETAGSFLAGS = - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique - -TAGS: tags-recursive $(HEADERS) $(SOURCES) config.hin $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) config.hin $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$tags$$unique" \ - || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = . -distdir = $(PACKAGE)-$(VERSION) - -am__remove_distdir = \ - { test ! -d $(distdir) \ - || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -fr $(distdir); }; } - -GZIP_ENV = --best -distcleancheck_listfiles = find . -type f -print - -distdir: $(DISTFILES) - @if sed 15q $(srcdir)/NEWS | fgrep -e "$(VERSION)" >/dev/null; \ - then :; else \ - echo "NEWS not updated; not releasing" 1>&2; \ - exit 1; \ - fi - $(am__remove_distdir) - mkdir $(distdir) - $(mkinstalldirs) $(distdir)/config $(distdir)/po - @for file in $(DISTFILES); do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir)$$dir \ - || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -d $(distdir)/$$subdir \ - || mkdir $(distdir)/$$subdir \ - || exit 1; \ - (cd $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$(top_distdir)" \ - distdir=../$(distdir)/$$subdir \ - distdir) \ - || exit 1; \ - fi; \ - done - -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ - ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r $(distdir) -dist-gzip: distdir - $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) - -dist dist-all: distdir - $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - $(am__remove_distdir) - GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - - chmod -R a-w $(distdir); chmod a+w $(distdir) - mkdir $(distdir)/=build - mkdir $(distdir)/=inst - chmod a-w $(distdir) - dc_install_base=`$(am__cd) $(distdir)/=inst && pwd` \ - && cd $(distdir)/=build \ - && ../configure --srcdir=.. --prefix=$$dc_install_base \ - --with-included-gettext \ - $(DISTCHECK_CONFIGURE_FLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) uninstall \ - && (test `find $$dc_install_base -type f -print | wc -l` -le 1 \ - || { echo "ERROR: files left after uninstall:" ; \ - find $$dc_install_base -type f -print ; \ - exit 1; } >&2 ) \ - && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \ - && rm -f $(distdir).tar.gz \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck - $(am__remove_distdir) - @echo "$(distdir).tar.gz is ready for distribution" | \ - sed 'h;s/./=/g;p;x;p;x' -distcleancheck: distclean - if test '$(srcdir)' = . ; then \ - echo "ERROR: distcleancheck can only run from a VPATH build" ; \ - exit 1 ; \ - fi - test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left after distclean:" ; \ - $(distcleancheck_listfiles) ; \ - exit 1; } >&2 -check-am: all-am -check: check-recursive -all-am: Makefile config.h -installdirs: installdirs-recursive -installdirs-am: - -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic mostlyclean-am - -distclean: distclean-recursive - -rm -f config.status config.cache config.log -distclean-am: clean-am distclean-generic distclean-hdr distclean-tags - -dvi: dvi-recursive - -dvi-am: - -info: info-recursive - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-recursive - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic - -uninstall-am: uninstall-info-am - -uninstall-info: uninstall-info-recursive - -.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \ - clean-generic clean-recursive dist dist-all dist-gzip distcheck \ - distclean distclean-generic distclean-hdr distclean-recursive \ - distclean-tags distcleancheck distdir dvi dvi-am dvi-recursive \ - info info-am info-recursive install install-am install-data \ - install-data-am install-data-recursive install-exec \ - install-exec-am install-exec-recursive install-info \ - install-info-am install-info-recursive install-man \ - install-recursive install-strip installcheck installcheck-am \ - installdirs installdirs-am installdirs-recursive \ - maintainer-clean maintainer-clean-generic \ - maintainer-clean-recursive mostlyclean mostlyclean-generic \ - mostlyclean-recursive tags tags-recursive uninstall \ - uninstall-am uninstall-info-am uninstall-info-recursive \ - uninstall-recursive - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/bin/diffutils/NEWS b/src/bin/diffutils/NEWS deleted file mode 100644 index 348ac82e57..0000000000 --- a/src/bin/diffutils/NEWS +++ /dev/null @@ -1,202 +0,0 @@ -User-visible changes in version 2.8.1: - -* Documentation fixes. - -User-visible changes in version 2.8: - -* cmp and diff now conform to POSIX 1003.1-2001 (IEEE Std 1003.1-2001) - if the underlying system conforms to POSIX and if the _POSIX2_VERSION - environment variable is set to 200112. Conformance removes support - for `diff -NUM', where NUM is a number. Use -C NUM or -U NUM instead. -* cmp now supports trailing operands SKIP1 and SKIP2, like BSD cmp. -* cmp -i or --ignore-initial now accepts SKIP1:SKIP2 option value. -* New cmp option: -n or --bytes. -* cmp's old -c or --print-chars option has been renamed; - use -b or --print-bytes instead. -* cmp now outputs "byte" rather than "char" outside the POSIX locale. -* cmp -l's index column width now adjusts to fit larger (or smaller) files. -* cmp -l -s and cmp -s -l are not allowed. Use cmp -s or cmp -l instead. -* diff uses ISO 8601 style time stamps for output times (e.g. "2001-11-23 - 16:44:36.875702460 -0800") unless in the C or POSIX locale and the - -c style is specified. -* diff's -I and -F options use the regexp syntax of grep, not of Emacs. -* diff now accepts multiple context arguments, and uses their maximum value. -* New diff and sdiff options: - -E --ignore-tab-expansion - --strip-trailing-cr -* New diff options: - --from-file=FILE, --to-file=FILE - --ignore-file-name-case - --no-ignore-file-name-case -* New diff3 and sdiff option: - --diff-program=PROGRAM -* The following diff options are still accepted, but are no longer documented. - They may be withdrawn in future releases. - -h (omit; it has no effect) - -H (use --speed-large-files instead) - -L (use --label instead) - -P (use --unidirectional-new-file instead) - --inhibit-hunk-merge (omit; it has no effect) -* Recursive diffs now sort file names according to the LC_COLLATE locale - category if possible, instead of using native byte comparison. -* Diff printf specs can now use the "0" and "'" flags. -* The new sdiff interactive command `ed' precedes each version with a header. -* On 64-bit hosts, files larger than 2 GB can be compared. -* Some internationalization support has been added, but multibyte locales - are still not completely supported yet. -* Some diagnostics have been reworded slightly for consistency. - Also, `diff -D FOO' now outputs `/* ! FOO */' instead of `/* not FOO */'. -* The `patch' part of the manual now describes `patch' version 2.5.4. -* Man pages are now distributed and installed. -* There is support for DJGPP; see the 'ms' subdirectory and the files - m4/dos.m4 and */setmode.*. - - -User-visible changes in version 2.7: - -* New diff option: --binary (useful only on non-POSIX hosts) -* diff -b and -w now ignore line incompleteness; -B no longer does this. -* cmp -c now uses locale to decide which output characters to quote. -* Help and version messages are reorganized. - - -User-visible changes in version 2.6: - -* New cmp, diff, diff3, sdiff option: --help -* A new heuristic for diff greatly reduces the time needed to compare - large input files that contain many differences. -* Partly as a result, GNU diff's output is not exactly the same as before. - Usually it is a bit smaller, but sometimes it is a bit larger. - - -User-visible changes in version 2.5: - -* New cmp option: -v --version - - -User-visible changes in version 2.4: - -* New cmp option: --ignore-initial=BYTES -* New diff3 option: -T --initial-tab -* New diff option: --line-format=FORMAT -* New diff group format specifications: - [eflmnEFLMN] - A printf spec followed by one of the following letters - causes the integer corresponding to that letter to be - printed according to the printf specification. - E.g. `%5df' prints the number of the first line in the - group in the old file using the "%5d" format. - e: line number just before the group in old file; equals f - 1 - f: first line number in group in the old file - l: last line number in group in the old file - m: line number just after the group in old file; equals l + 1 - n: number of lines in group in the old file; equals l - f + 1 - E, F, L, M, N: likewise, for lines in the new file - %(A=B?T:E) - If A equals B then T else E. A and B are each either a decimal - constant or a single letter interpreted as above. T and E are - arbitrary format strings. This format spec is equivalent to T if - A's value equals B's; otherwise it is equivalent to E. For - example, `%(N=0?no:%dN) line%(N=1?:s)' is equivalent to `no lines' - if N (the number of lines in the group in the the new file) is 0, - to `1 line' if N is 1, and to `%dN lines' otherwise. - %c'C' - where C is a single character, stands for the character C. C may not - be a backslash or an apostrophe. E.g. %c':' stands for a colon. - %c'\O' - where O is a string of 1, 2, or 3 octal digits, stands for the - character with octal code O. E.g. %c'\0' stands for a null character. -* New diff line format specifications: - n - The line number, printed with . - E.g. `%5dn' prints the line number with a "%5d" format. - %c'C' - %c'\O' - The character C, or with octal code O, as above. -* Supported s have the same meaning as with printf, but must - match the extended regular expression %-*[0-9]*(\.[0-9]*)?[doxX]. -* The format spec %0 introduced in version 2.1 has been removed, since it - is incompatible with printf specs like %02d. To represent a null char, - use %c'\0' instead. -* cmp and diff now conform to POSIX 1003.2-1992 (ISO/IEC 9945-2:1993) - if the underlying system conforms to POSIX: - - Some messages' wordings are changed in minor ways. - - ``White space'' is now whatever C's `isspace' says it is. - - When comparing directories, if `diff' finds a file that is not a regular - file or a directory, it reports the file's type instead of diffing it. - (As usual, it follows symbolic links first.) - - When signaled, sdiff exits with the signal's status, not with status 2. -* Now portable to hosts where int, long, pointer, etc. are not all the same - size. -* `cmp - -' now works like `diff - -'. - - -User-visible changes in version 2.3: - -* New diff option: --horizon-lines=lines - - -User-visible changes in version 2.1: - -* New diff options: - --{old,new,unchanged}-line-format='format' - --{old,new,unchanged,changed}-group-format='format' - -U -* New diff3 option: - -A --show-all -* diff3 -m now defaults to -A, not -E. -* diff3 now takes up to three -L or --label options, not just two. - If just two options are given, they refer to the first two input files, - not the first and third input files. -* sdiff and diff -y handle incomplete lines. - - -User-visible changes in version 2.0: - -* Add sdiff and cmp programs. -* Add Texinfo documentation. -* Add configure script. -* Improve diff performance. -* New diff options: --x --exclude --X --exclude-from --P --unidirectional-new-file --W --width --y --side-by-side ---left-column ---sdiff-merge-assist ---suppress-common-lines -* diff options renamed: ---label renamed from --file-label ---forward-ed renamed from --reversed-ed ---paginate renamed from --print ---entire-new-file renamed from --entire-new-files ---new-file renamed from --new-files ---all-text removed -* New diff3 options: --v --version -* Add long-named equivalents for other diff3 options. -* diff options -F (--show-function-line) and -I (--ignore-matching-lines) - can now be given more than once. - - - -Copyright (C) 1993, 1994, 1998, 2001, 2002 Free Software Foundation, -Inc. - -This file is part of GNU Diffutils. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -This program is distributed in the hope that they will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. diff --git a/src/bin/diffutils/README b/src/bin/diffutils/README deleted file mode 100644 index 275a8cfb56..0000000000 --- a/src/bin/diffutils/README +++ /dev/null @@ -1,38 +0,0 @@ -README for GNU DIFF - - Copyright (C) 1992, 1998, 2001, 2002 Free Software Foundation, Inc. - - This file is part of GNU Diffutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. If not, write to - the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. - - -This directory contains the GNU diff, diff3, sdiff, and cmp utilities. -Their features are a superset of the Unix features and they are -significantly faster. - -Please see the file COPYING for copying conditions. - -Please see the file doc/diff.texi (or doc/diff.info) for documentation -that can be printed with TeX, or read with the `info' program or with -Emacs's `M-x info'. There are no man pages. - -See the file INSTALL for generic compilation and installation instructions, -and the file INSTALLME for instructions specific to GNU diff. - -See the file ABOUT-NLS for notes about translations. - -Please report bugs to . diff --git a/src/bin/diffutils/THANKS b/src/bin/diffutils/THANKS deleted file mode 100644 index 4fc388c2c9..0000000000 --- a/src/bin/diffutils/THANKS +++ /dev/null @@ -1,22 +0,0 @@ -Thanks to all the following for their contributions to GNU diffutils: - -Thomas Bushnell -Wayne Davison -Ulrich Drepper -Paul Eggert -Jay Fenlason -John Gilmore -Torbjorn Granlund -Mike Haertel -Bruno Haible -Chris Hanson -Jim Kingdon -Tom Lord -David J. MacKenzie -Roland McGrath -Jim Meyering -Eugene W. Myers -Randy Smith -Richard Stallman -Leonard H. Tower Jr. -Eli Zaretskii diff --git a/src/bin/diffutils/aclocal.m4 b/src/bin/diffutils/aclocal.m4 deleted file mode 100644 index 6028802234..0000000000 --- a/src/bin/diffutils/aclocal.m4 +++ /dev/null @@ -1,3633 +0,0 @@ -# aclocal.m4 generated automatically by aclocal 1.6 -*- Autoconf -*- - -# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- - -# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -AC_PREREQ([2.52]) - -# serial 6 - -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. We must strip everything past the first ":", -# and everything past the last "/". - -# _AM_DIRNAME(PATH) -# ----------------- -# Like AS_DIRNAME, only do it during macro expansion -AC_DEFUN([_AM_DIRNAME], - [m4_if(regexp([$1], [^.*[^/]//*[^/][^/]*/*$]), -1, - m4_if(regexp([$1], [^//\([^/]\|$\)]), -1, - m4_if(regexp([$1], [^/.*]), -1, - [.], - patsubst([$1], [^\(/\).*], [\1])), - patsubst([$1], [^\(//\)\([^/].*\|$\)], [\1])), - patsubst([$1], [^\(.*[^/]\)//*[^/][^/]*/*$], [\1]))[]dnl -])# _AM_DIRNAME - - -# The stamp files are numbered to have different names. -# We could number them on a directory basis, but that's additional -# complications, let's have a unique counter. -m4_define([_AM_STAMP_Count], [0]) - - -# _AM_STAMP(HEADER) -# ----------------- -# The name of the stamp file for HEADER. -AC_DEFUN([_AM_STAMP], -[m4_define([_AM_STAMP_Count], m4_incr(_AM_STAMP_Count))dnl -AS_ESCAPE(_AM_DIRNAME(patsubst([$1], - [:.*])))/stamp-h[]_AM_STAMP_Count]) - - -# _AM_CONFIG_HEADER(HEADER[:SOURCES], COMMANDS, INIT-COMMANDS) -# ------------------------------------------------------------ -# We used to try to get a real timestamp in stamp-h. But the fear is that -# that will cause unnecessary cvs conflicts. -AC_DEFUN([_AM_CONFIG_HEADER], -[# Add the stamp file to the list of files AC keeps track of, -# along with our hook. -AC_CONFIG_HEADERS([$1], - [# update the timestamp -echo 'timestamp for $1' >"_AM_STAMP([$1])" -$2], - [$3]) -])# _AM_CONFIG_HEADER - - -# AM_CONFIG_HEADER(HEADER[:SOURCES]..., COMMANDS, INIT-COMMANDS) -# -------------------------------------------------------------- -AC_DEFUN([AM_CONFIG_HEADER], -[AC_FOREACH([_AM_File], [$1], [_AM_CONFIG_HEADER(_AM_File, [$2], [$3])]) -])# AM_CONFIG_HEADER - -# Do all the work for Automake. -*- Autoconf -*- - -# This macro actually does too much some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 8 - -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - -AC_PREREQ([2.52]) - -# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow -# the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl - -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl - AC_REQUIRE([AC_PROG_INSTALL])dnl -# test to see if srcdir already configured -if test "`cd $srcdir && pwd`" != "`pwd`" && - test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) -fi - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl - AC_SUBST([PACKAGE], [AC_PACKAGE_TARNAME])dnl - AC_SUBST([VERSION], [AC_PACKAGE_VERSION])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, "aclocal-${am__api_version}") -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, "automake-${am__api_version}") -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) -AM_MISSING_PROG(AMTAR, tar) -AM_PROG_INSTALL_SH -AM_PROG_INSTALL_STRIP -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl - -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_][CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_][CC], - defn([AC_PROG_][CC])[_AM_DEPENDENCIES(CC)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_][CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_][CXX], - defn([AC_PROG_][CXX])[_AM_DEPENDENCIES(CXX)])])dnl -]) -]) - -# Copyright 2002 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.6"]) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION so it can be traced. -# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], - [AM_AUTOMAKE_VERSION([1.6])]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright 2001, 2002 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 2 - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# ------------------------------ -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) - -# _AM_SET_OPTIONS(OPTIONS) -# ---------------------------------- -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# -# Check to make sure that the build environment is sane. -# - -# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 3 - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftest.file -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftest.file` - fi - rm -f conftest.file - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT(yes)]) - -# -*- Autoconf -*- - - -# Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 3 - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it supports --run. -# If it does, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - AC_MSG_WARN([`missing' script is too old or missing]) -fi -]) - -# AM_AUX_DIR_EXPAND - -# Copyright 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to -# `$srcdir', `$srcdir/..', or `$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is `.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -# Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50]) - -AC_DEFUN([AM_AUX_DIR_EXPAND], [ -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` -]) - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. - -# Copyright 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -install_sh=${install_sh-"$am_aux_dir/install-sh"} -AC_SUBST(install_sh)]) - -# AM_PROG_INSTALL_STRIP - -# Copyright 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# One issue with vendor `install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in `make install-strip', and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be `maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# serial 4 -*- Autoconf -*- - -# Copyright 1999, 2000, 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - - -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "GCJ", or "OBJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -ifelse([$1], CC, [depcc="$CC" am_compiler_list=], - [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'] - [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - for depmode in $am_compiler_list; do - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - echo '#include "conftest.h"' > conftest.c - echo 'int i;' > conftest.h - echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf - - case $depmode in - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - none) break ;; - esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. - if depmode=$depmode \ - source=conftest.c object=conftest.o \ - depfile=conftest.Po tmpdepfile=conftest.TPo \ - $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && - grep conftest.h conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES -AC_DEFUN([AM_SET_DEPDIR], -[rm -f .deps 2>/dev/null -mkdir .deps 2>/dev/null -if test -d .deps; then - DEPDIR=.deps -else - # MS-DOS does not allow filenames that begin with a dot. - DEPDIR=_deps -fi -rmdir .deps 2>/dev/null -AC_SUBST([DEPDIR]) -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking Speeds up one-time builds - --enable-dependency-tracking Do not reject slow dependency extractors]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH]) -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -#serial 2 - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[for mf in $CONFIG_FILES; do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - if (sed 1q $mf | fgrep 'generated by automake') > /dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue - # Extract the definition of DEP_FILES from the Makefile without - # running `make'. - DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` - test -z "$DEPDIR" && continue - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n -e '/^U = / s///p' < "$mf"` - test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" - # We invoke sed twice because it is the simplest approach to - # changing $(DEPDIR) to its actual value in the expansion. - for file in `sed -n -e ' - /^DEP_FILES = .*\\\\$/ { - s/^DEP_FILES = // - :loop - s/\\\\$// - p - n - /\\\\$/ b loop - p - } - /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done -done -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each `.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Copyright 2001 Free Software Foundation, Inc. -*- Autoconf -*- - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 2 - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -doit: - @echo done -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# We grep out `Entering directory' and `Leaving directory' -# messages which can occur if `w' ends up in MAKEFLAGS. -# In particular we don't look at `^make:' because GNU make might -# be invoked under some other name (usually "gmake"), in which -# case it prints its new name instead of `make'. -if test "`$am_make -s -f confmf 2> /dev/null | fgrep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -fi -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then - am__include=.include - am__quote="\"" - _am_result=BSD - fi -fi -AC_SUBST(am__include) -AC_SUBST(am__quote) -AC_MSG_RESULT($_am_result) -rm -f confinc confmf -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright 1997, 2000, 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 5 - -AC_PREREQ(2.52) - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE]) -AC_SUBST([$1_FALSE]) -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([conditional \"$1\" was never defined. -Usually this means the macro was only invoked conditionally.]) -fi])]) - -# isc-posix.m4 serial 1 (gettext-0.10.40) -dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -# This test replaces the one in autoconf. -# Currently this macro should have the same name as the autoconf macro -# because gettext's gettext.m4 (distributed in the automake package) -# still uses it. Otherwise, the use in gettext.m4 makes autoheader -# give these diagnostics: -# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX -# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX - -undefine([AC_ISC_POSIX]) - -AC_DEFUN([AC_ISC_POSIX], - [ - dnl This test replaces the obsolescent AC_ISC_POSIX kludge. - AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) - ] -) - - -# Copyright 1996, 1997, 1999, 2000, 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 1 - -# @defmac AC_PROG_CC_STDC -# @maindex PROG_CC_STDC -# @ovindex CC -# If the C compiler in not in ANSI C mode by default, try to add an option -# to output variable @code{CC} to make it so. This macro tries various -# options that select ANSI C on some system or another. It considers the -# compiler to be in ANSI C mode if it handles function prototypes correctly. -# -# If you use this macro, you should check after calling it whether the C -# compiler has been set to accept ANSI C; if not, the shell variable -# @code{am_cv_prog_cc_stdc} is set to @samp{no}. If you wrote your source -# code in ANSI C, you can make an un-ANSIfied copy of it by using the -# program @code{ansi2knr}, which comes with Ghostscript. -# @end defmac - -AC_DEFUN([AM_PROG_CC_STDC], -[AC_REQUIRE([AC_PROG_CC]) -AC_BEFORE([$0], [AC_C_INLINE]) -AC_BEFORE([$0], [AC_C_CONST]) -dnl Force this before AC_PROG_CPP. Some cpp's, eg on HPUX, require -dnl a magic option to avoid problems with ANSI preprocessor commands -dnl like #elif. -dnl FIXME: can't do this because then AC_AIX won't work due to a -dnl circular dependency. -dnl AC_BEFORE([$0], [AC_PROG_CPP]) -AC_MSG_CHECKING([for ${CC-cc} option to accept ANSI C]) -AC_CACHE_VAL(am_cv_prog_cc_stdc, -[am_cv_prog_cc_stdc=no -ac_save_CC="$CC" -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX 10.20 and later -Ae -# HP-UX older versions -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - AC_TRY_COMPILE( -[#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -], [ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; -], -[am_cv_prog_cc_stdc="$ac_arg"; break]) -done -CC="$ac_save_CC" -]) -if test -z "$am_cv_prog_cc_stdc"; then - AC_MSG_RESULT([none needed]) -else - AC_MSG_RESULT([$am_cv_prog_cc_stdc]) -fi -case "x$am_cv_prog_cc_stdc" in - x|xno) ;; - *) CC="$CC $am_cv_prog_cc_stdc" ;; -esac -]) - -#serial 3 -# Make sure _GNU_SOURCE is defined where necessary: as early as possible -# for configure-time tests, as well as for every source file that includes -# config.h. - -# From Jim Meyering. - -AC_DEFUN([AC__GNU_SOURCE], -[ - # Make sure that _GNU_SOURCE is defined for all subsequent - # configure-time compile tests. - # This definition must be emitted (into confdefs.h) before any - # test that involves compilation. - cat >>confdefs.h <<\EOF -#ifndef _GNU_SOURCE -# define _GNU_SOURCE -#endif -EOF - - # Emit this code into config.h.in. - # The ifndef is to avoid redefinition warnings. - AH_VERBATIM([_GNU_SOURCE], [#ifndef _GNU_SOURCE -# define _GNU_SOURCE -#endif]) -]) - -# Check for variable-length arrays. - -#serial 1 - -# From Paul Eggert - -# Copyright (C) 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -AC_DEFUN([AC_C_VARARRAYS], -[ - AC_CACHE_CHECK([for variable-length arrays], - ac_cv_c_vararrays, - [AC_TRY_COMPILE( - [], - [static int x; char a[++x]; a[sizeof a - 1] = 0; return a[0];], - ac_cv_c_vararrays=yes, - ac_cv_c_vararrays=no)]) - if test $ac_cv_c_vararrays = yes; then - AC_DEFINE(HAVE_C_VARARRAYS, 1, - [Define to 1 if C supports variable-length arrays.]) - fi -]) - -# Check for stdbool.h that conforms to C99. - -# Copyright (C) 2002 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -AC_DEFUN([AC_HEADER_STDBOOL], - [AC_CACHE_CHECK([for stdbool.h that conforms to C99], - [ac_cv_header_stdbool_h], - [AC_TRY_COMPILE( - [ - #include - #ifndef bool - "error: bool is not defined" - #endif - #ifndef false - "error: false is not defined" - #endif - #ifndef true - "error: false is not defined" - #endif - #ifndef __bool_true_false_are_defined - "error: __bool_true_false_are_defined is not defined" - #endif - - struct s { _Bool s: 1; _Bool t; } s; - - char a[true == 1 ? 1 : -1]; - char b[false == 0 ? 1 : -1]; - char c[__bool_true_false_are_defined == 1 ? 1 : -1]; - char d[(bool) -0.5 == true ? 1 : -1]; - char e[(bool) &s == true ? 1 : -1]; - char f[(_Bool) -0.0 == false ? 1 : -1]; - char g[true]; - char h[sizeof (_Bool)]; - char i[sizeof s.t]; - ], - [ return !a + !b + !c + !d + !e + !f + !g + !h + !i; ], - [ac_cv_header_stdbool_h=yes], - [ac_cv_header_stdbool_h=no])]) - if test $ac_cv_header_stdbool_h = yes; then - AC_DEFINE(HAVE_STDBOOL_H, 1, [Define to 1 if stdbool.h conforms to C99.]) - fi]) - -#serial 6 - -dnl From Paul Eggert. - -AC_PREREQ(2.52) - -# Define intmax_t to long or long long if doesn't define. - -AC_DEFUN([jm_AC_TYPE_INTMAX_T], -[ - AC_REQUIRE([jm_AC_TYPE_LONG_LONG]) - AC_CHECK_TYPE(intmax_t, , - [test $ac_cv_type_long_long = yes \ - && ac_type='long long' \ - || ac_type='long' - AC_DEFINE_UNQUOTED(intmax_t, $ac_type, - [Define to widest signed type if doesn't define.])]) -]) - -# Define uintmax_t to unsigned long or unsigned long long -# if doesn't define. - -AC_DEFUN([jm_AC_TYPE_UINTMAX_T], -[ - AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG]) - AC_CHECK_TYPE(uintmax_t, , - [test $ac_cv_type_unsigned_long_long = yes \ - && ac_type='unsigned long long' \ - || ac_type='unsigned long' - AC_DEFINE_UNQUOTED(uintmax_t, $ac_type, - [Define to widest unsigned type if doesn't define.])]) -]) - -#serial 2 - -dnl From Paul Eggert. - -# Define HAVE_LONG_LONG if 'long long' works. - -AC_DEFUN([jm_AC_TYPE_LONG_LONG], -[ - AC_CACHE_CHECK([for long long], ac_cv_type_long_long, - [AC_TRY_LINK([long long ll = 1; int i = 63;], - [long long llmax = (long long) -1; - return ll << i | ll >> i | llmax / ll | llmax % ll;], - ac_cv_type_long_long=yes, - ac_cv_type_long_long=no)]) - if test $ac_cv_type_long_long = yes; then - AC_DEFINE(HAVE_LONG_LONG, 1, - [Define if you have the long long type.]) - fi -]) - -# Define HAVE_UNSIGNED_LONG_LONG if 'unsigned long long' works. - -AC_DEFUN([jm_AC_TYPE_UNSIGNED_LONG_LONG], -[ - AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long, - [AC_TRY_LINK([unsigned long long ull = 1; int i = 63;], - [unsigned long long ullmax = (unsigned long long) -1; - return ull << i | ull >> i | ullmax / ull | ullmax % ull;], - ac_cv_type_unsigned_long_long=yes, - ac_cv_type_unsigned_long_long=no)]) - if test $ac_cv_type_unsigned_long_long = yes; then - AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1, - [Define if you have the unsigned long long type.]) - fi -]) - -# gettext.m4 serial 13 (gettext-0.11.1) -dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper , 1995-2000. -dnl Bruno Haible , 2000-2002. - -dnl Macro to add for using GNU gettext. - -dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). -dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The -dnl default (if it is not specified or empty) is 'no-libtool'. -dnl INTLSYMBOL should be 'external' for packages with no intl directory, -dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. -dnl If INTLSYMBOL is 'use-libtool', then a libtool library -dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, -dnl depending on --{enable,disable}-{shared,static} and on the presence of -dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library -dnl $(top_builddir)/intl/libintl.a will be created. -dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext -dnl implementations (in libc or libintl) without the ngettext() function -dnl will be ignored. -dnl INTLDIR is used to find the intl libraries. If empty, -dnl the value `$(top_builddir)/intl/' is used. -dnl -dnl The result of the configuration is one of three cases: -dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled -dnl and used. -dnl Catalog format: GNU --> install in $(datadir) -dnl Catalog extension: .mo after installation, .gmo in source tree -dnl 2) GNU gettext has been found in the system's C library. -dnl Catalog format: GNU --> install in $(datadir) -dnl Catalog extension: .mo after installation, .gmo in source tree -dnl 3) No internationalization, always use English msgid. -dnl Catalog format: none -dnl Catalog extension: none -dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. -dnl The use of .gmo is historical (it was needed to avoid overwriting the -dnl GNU format catalogs when building on a platform with an X/Open gettext), -dnl but we keep it in order not to force irrelevant filename changes on the -dnl maintainers. -dnl -AC_DEFUN([AM_GNU_GETTEXT], -[ - dnl Argument checking. - ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , - [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT -])])])])]) - ifelse([$2], [], , [ifelse([$2], [need-ngettext], , - [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT -])])]) - define(gt_included_intl, ifelse([$1], [external], [no], [yes])) - define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], [])) - - AC_REQUIRE([AM_PO_SUBDIRS])dnl - ifelse(gt_included_intl, yes, [ - AC_REQUIRE([AM_INTL_SUBDIR])dnl - ]) - - dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - - AC_MSG_CHECKING([whether NLS is requested]) - dnl Default is enabled NLS - AC_ARG_ENABLE(nls, - [ --disable-nls do not use Native Language Support], - USE_NLS=$enableval, USE_NLS=yes) - AC_MSG_RESULT($USE_NLS) - AC_SUBST(USE_NLS) - - ifelse(gt_included_intl, yes, [ - BUILD_INCLUDED_LIBINTL=no - USE_INCLUDED_LIBINTL=no - ]) - LIBINTL= - LTLIBINTL= - POSUB= - - dnl If we use NLS figure out what method - if test "$USE_NLS" = "yes"; then - gt_use_preinstalled_gnugettext=no - ifelse(gt_included_intl, yes, [ - AC_MSG_CHECKING([whether included gettext is requested]) - AC_ARG_WITH(included-gettext, - [ --with-included-gettext use the GNU gettext library included here], - nls_cv_force_use_gnu_gettext=$withval, - nls_cv_force_use_gnu_gettext=no) - AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) - - nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" - if test "$nls_cv_force_use_gnu_gettext" != "yes"; then - ]) - dnl User does not insist on using GNU NLS library. Figure out what - dnl to use. If GNU gettext is available we use this. Else we have - dnl to fall back to GNU NLS library. - - dnl Add a version number to the cache macros. - define([gt_api_version], ifelse([$2], [need-ngettext], 2, 1)) - define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) - define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) - - AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, - [AC_TRY_LINK([#include -extern int _nl_msg_cat_cntr; -extern int *_nl_domain_bindings;], - [bindtextdomain ("", ""); -return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], - gt_cv_func_gnugettext_libc=yes, - gt_cv_func_gnugettext_libc=no)]) - - if test "$gt_cv_func_gnugettext_libc" != "yes"; then - dnl Sometimes libintl requires libiconv, so first search for libiconv. - ifelse(gt_included_intl, yes, , [ - AM_ICONV_LINK - ]) - dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL - dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) - dnl because that would add "-liconv" to LIBINTL and LTLIBINTL - dnl even if libiconv doesn't exist. - AC_LIB_LINKFLAGS_BODY([intl]) - AC_CACHE_CHECK([for GNU gettext in libintl], - gt_cv_func_gnugettext_libintl, - [gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $INCINTL" - gt_save_LIBS="$LIBS" - LIBS="$LIBS $LIBINTL" - dnl Now see whether libintl exists and does not depend on libiconv. - AC_TRY_LINK([#include -extern int _nl_msg_cat_cntr; -extern int *_nl_domain_bindings; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias ();], - [bindtextdomain ("", ""); -return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings + *_nl_expand_alias (0)], - gt_cv_func_gnugettext_libintl=yes, - gt_cv_func_gnugettext_libintl=no) - dnl Now see whether libintl exists and depends on libiconv. - if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then - LIBS="$LIBS $LIBICONV" - AC_TRY_LINK([#include -extern int _nl_msg_cat_cntr; -extern int *_nl_domain_bindings; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias ();], - [bindtextdomain ("", ""); -return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings + *_nl_expand_alias (0)], - [LIBINTL="$LIBINTL $LIBICONV" - LTLIBINTL="$LTLIBINTL $LTLIBICONV" - gt_cv_func_gnugettext_libintl=yes - ]) - fi - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS"]) - fi - - dnl If an already present or preinstalled GNU gettext() is found, - dnl use it. But if this macro is used in GNU gettext, and GNU - dnl gettext is already preinstalled in libintl, we update this - dnl libintl. (Cf. the install rule in intl/Makefile.in.) - if test "$gt_cv_func_gnugettext_libc" = "yes" \ - || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ - && test "$PACKAGE" != gettext; }; then - gt_use_preinstalled_gnugettext=yes - else - dnl Reset the values set by searching for libintl. - LIBINTL= - LTLIBINTL= - INCINTL= - fi - - ifelse(gt_included_intl, yes, [ - if test "$gt_use_preinstalled_gnugettext" != "yes"; then - dnl GNU gettext is not found in the C library. - dnl Fall back on included GNU gettext library. - nls_cv_use_gnu_gettext=yes - fi - fi - - if test "$nls_cv_use_gnu_gettext" = "yes"; then - dnl Mark actions used to generate GNU NLS library. - INTLOBJS="\$(GETTOBJS)" - BUILD_INCLUDED_LIBINTL=yes - USE_INCLUDED_LIBINTL=yes - LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" - LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" - LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` - fi - - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - dnl Mark actions to use GNU gettext tools. - CATOBJEXT=.gmo - fi - ]) - - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - AC_DEFINE(ENABLE_NLS, 1, - [Define to 1 if translation of program messages to the user's native language - is requested.]) - else - USE_NLS=no - fi - fi - - if test "$USE_NLS" = "yes"; then - - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if test "$gt_cv_func_gnugettext_libintl" = "yes"; then - AC_MSG_CHECKING([how to link with libintl]) - AC_MSG_RESULT([$LIBINTL]) - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) - fi - - dnl For backward compatibility. Some packages may be using this. - AC_DEFINE(HAVE_GETTEXT, 1, - [Define if the GNU gettext() function is already present or preinstalled.]) - AC_DEFINE(HAVE_DCGETTEXT, 1, - [Define if the GNU dcgettext() function is already present or preinstalled.]) - fi - - dnl We need to process the po/ directory. - POSUB=po - fi - - ifelse(gt_included_intl, yes, [ - dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL - dnl to 'yes' because some of the testsuite requires it. - if test "$PACKAGE" = gettext; then - BUILD_INCLUDED_LIBINTL=yes - fi - - dnl Make all variables we use known to autoconf. - AC_SUBST(BUILD_INCLUDED_LIBINTL) - AC_SUBST(USE_INCLUDED_LIBINTL) - AC_SUBST(CATOBJEXT) - AC_SUBST(INTLOBJS) - - dnl For backward compatibility. Some configure.ins may be using this. - nls_cv_header_intl= - nls_cv_header_libgt= - - dnl For backward compatibility. Some Makefiles may be using this. - DATADIRNAME=share - AC_SUBST(DATADIRNAME) - - dnl For backward compatibility. Some Makefiles may be using this. - INSTOBJEXT=.mo - AC_SUBST(INSTOBJEXT) - - dnl For backward compatibility. Some Makefiles may be using this. - GENCAT=gencat - AC_SUBST(GENCAT) - - dnl Enable libtool support if the surrounding package wishes it. - INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix - AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) - ]) - - dnl For backward compatibility. Some Makefiles may be using this. - INTLLIBS="$LIBINTL" - AC_SUBST(INTLLIBS) - - dnl Make all documented variables known to autoconf. - AC_SUBST(LIBINTL) - AC_SUBST(LTLIBINTL) - AC_SUBST(POSUB) -]) - - -dnl Checks for all prerequisites of the po subdirectory, -dnl except for USE_NLS. -AC_DEFUN([AM_PO_SUBDIRS], -[ - AC_REQUIRE([AC_PROG_MAKE_SET])dnl - AC_REQUIRE([AC_PROG_INSTALL])dnl - AC_REQUIRE([AM_MKINSTALLDIRS])dnl - - dnl Perform the following tests also if --disable-nls has been given, - dnl because they are needed for "make dist" to work. - - dnl Search for GNU msgfmt in the PATH. - dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. - dnl The second test excludes FreeBSD msgfmt. - AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, - [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && - (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], - :) - AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) - - dnl Search for GNU xgettext 0.11 or newer in the PATH. - dnl The first test excludes Solaris xgettext and early GNU xgettext versions. - dnl The second test excludes FreeBSD xgettext. - AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, - [$ac_dir/$ac_word --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && - (if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], - :) - dnl Remove leftover from FreeBSD xgettext call. - rm -f messages.po - - dnl Search for GNU msgmerge 0.11 or newer in the PATH. - AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, - [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :) - - dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. - dnl Test whether we really found GNU msgfmt. - if test "$GMSGFMT" != ":"; then - dnl If it is no GNU msgfmt we define it as : so that the - dnl Makefiles still can work. - if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && - (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` - AC_MSG_RESULT( - [found $GMSGFMT program is not GNU msgfmt; ignore it]) - GMSGFMT=":" - fi - fi - - dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. - dnl Test whether we really found GNU xgettext. - if test "$XGETTEXT" != ":"; then - dnl If it is no GNU xgettext we define it as : so that the - dnl Makefiles still can work. - if $XGETTEXT --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && - (if $XGETTEXT --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - AC_MSG_RESULT( - [found xgettext program is not GNU xgettext; ignore it]) - XGETTEXT=":" - fi - dnl Remove leftover from FreeBSD xgettext call. - rm -f messages.po - fi - - AC_OUTPUT_COMMANDS([ - for ac_file in $CONFIG_FILES; do - # Support "outfile[:infile[:infile...]]" - case "$ac_file" in - *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - esac - # PO directories have a Makefile.in generated from Makefile.in.in. - case "$ac_file" in */Makefile.in) - # Adjust a relative srcdir. - ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" - ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - # In autoconf-2.13 it is called $ac_given_srcdir. - # In autoconf-2.50 it is called $srcdir. - test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" - case "$ac_given_srcdir" in - .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then - rm -f "$ac_dir/POTFILES" - test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" - cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" - # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend - # on $ac_dir but don't depend on user-specified configuration - # parameters. - if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then - # The LINGUAS file contains the set of available languages. - if test -n "$ALL_LINGUAS"; then - test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" - fi - ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` - # Hide the ALL_LINGUAS assigment from automake. - eval 'ALL_LINGUAS''=$ALL_LINGUAS_' - fi - case "$ac_given_srcdir" in - .) srcdirpre= ;; - *) srcdirpre='$(srcdir)/' ;; - esac - POFILES= - GMOFILES= - UPDATEPOFILES= - DUMMYPOFILES= - for lang in $ALL_LINGUAS; do - POFILES="$POFILES $srcdirpre$lang.po" - GMOFILES="$GMOFILES $srcdirpre$lang.gmo" - UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" - DUMMYPOFILES="$DUMMYPOFILES $lang.nop" - done - # CATALOGS depends on both $ac_dir and the user's LINGUAS - # environment variable. - INST_LINGUAS= - if test -n "$ALL_LINGUAS"; then - for presentlang in $ALL_LINGUAS; do - useit=no - if test "%UNSET%" != "$LINGUAS"; then - desiredlanguages="$LINGUAS" - else - desiredlanguages="$ALL_LINGUAS" - fi - for desiredlang in $desiredlanguages; do - # Use the presentlang catalog if desiredlang is - # a. equal to presentlang, or - # b. a variant of presentlang (because in this case, - # presentlang can be used as a fallback for messages - # which are not translated in the desiredlang catalog). - case "$desiredlang" in - "$presentlang"*) useit=yes;; - esac - done - if test $useit = yes; then - INST_LINGUAS="$INST_LINGUAS $presentlang" - fi - done - fi - CATALOGS= - if test -n "$INST_LINGUAS"; then - for lang in $INST_LINGUAS; do - CATALOGS="$CATALOGS $lang.gmo" - done - fi - test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" - sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" - for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do - if test -f "$f"; then - case "$f" in - *.orig | *.bak | *~) ;; - *) cat "$f" >> "$ac_dir/Makefile" ;; - esac - fi - done - fi - ;; - esac - done], - [# Capture the value of obsolete $ALL_LINGUAS because we need it to compute - # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it - # from automake. - eval 'ALL_LINGUAS''="$ALL_LINGUAS"' - # Capture the value of LINGUAS because we need it to compute CATALOGS. - LINGUAS="${LINGUAS-%UNSET%}" - ]) -]) - - -dnl Checks for all prerequisites of the intl subdirectory, -dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, -dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. -AC_DEFUN([AM_INTL_SUBDIR], -[ - AC_REQUIRE([AC_PROG_INSTALL])dnl - AC_REQUIRE([AM_MKINSTALLDIRS])dnl - AC_REQUIRE([AC_PROG_CC])dnl - AC_REQUIRE([AC_CANONICAL_HOST])dnl - AC_REQUIRE([AC_PROG_RANLIB])dnl - AC_REQUIRE([AC_ISC_POSIX])dnl - AC_REQUIRE([AC_HEADER_STDC])dnl - AC_REQUIRE([AC_C_CONST])dnl - AC_REQUIRE([AC_C_INLINE])dnl - AC_REQUIRE([AC_TYPE_OFF_T])dnl - AC_REQUIRE([AC_TYPE_SIZE_T])dnl - AC_REQUIRE([AC_FUNC_ALLOCA])dnl - AC_REQUIRE([AC_FUNC_MMAP])dnl - AC_REQUIRE([jm_GLIBC21])dnl - - AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ -stdlib.h string.h unistd.h sys/param.h]) - AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ -geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ -strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next]) - - AM_ICONV - AM_LANGINFO_CODESET - AM_LC_MESSAGES - - dnl intl/plural.c is generated from intl/plural.y. It requires bison, - dnl because plural.y uses bison specific features. It requires at least - dnl bison-1.26 because earlier versions generate a plural.c that doesn't - dnl compile. - dnl bison is only needed for the maintainer (who touches plural.y). But in - dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put - dnl the rule in general Makefile. Now, some people carelessly touch the - dnl files or have a broken "make" program, hence the plural.c rule will - dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not - dnl present or too old. - AC_CHECK_PROGS([INTLBISON], [bison]) - if test -z "$INTLBISON"; then - ac_verc_fail=yes - else - dnl Found it, now check the version. - AC_MSG_CHECKING([version of bison]) -changequote(<<,>>)dnl - ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) -changequote([,])dnl - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - esac - AC_MSG_RESULT([$ac_prog_version]) - fi - if test $ac_verc_fail = yes; then - INTLBISON=: - fi -]) - - -AC_DEFUN([AM_MKINSTALLDIRS], -[ - dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly - dnl find the mkinstalldirs script in another subdir but $(top_srcdir). - dnl Try to locate is. - MKINSTALLDIRS= - if test -n "$ac_aux_dir"; then - MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" - fi - if test -z "$MKINSTALLDIRS"; then - MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" - fi - AC_SUBST(MKINSTALLDIRS) -]) - -# lib-prefix.m4 serial 1 (gettext-0.11) -dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed -dnl to access previously installed libraries. The basic assumption is that -dnl a user will want packages to use other packages he previously installed -dnl with the same --prefix option. -dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate -dnl libraries, but is otherwise very convenient. -AC_DEFUN([AC_LIB_PREFIX], -[ - AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) - AC_REQUIRE([AC_PROG_CC]) - AC_REQUIRE([AC_CANONICAL_HOST]) - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - dnl By default, look in $includedir and $libdir. - use_additional=yes - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - AC_ARG_WITH([lib-prefix], -[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib - --without-lib-prefix don't search for libraries in includedir and libdir], -[ - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi -]) - if test $use_additional = yes; then - dnl Potentially add $additional_includedir to $CPPFLAGS. - dnl But don't add it - dnl 1. if it's the standard /usr/include, - dnl 2. if it's already present in $CPPFLAGS, - dnl 3. if it's /usr/local/include and we are using GCC on Linux, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - for x in $CPPFLAGS; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - dnl Really add $additional_includedir to $CPPFLAGS. - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" - fi - fi - fi - fi - dnl Potentially add $additional_libdir to $LDFLAGS. - dnl But don't add it - dnl 1. if it's the standard /usr/lib, - dnl 2. if it's already present in $LDFLAGS, - dnl 3. if it's /usr/local/lib and we are using GCC on Linux, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - for x in $LDFLAGS; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LDFLAGS. - LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" - fi - fi - fi - fi - fi -]) - -dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, -dnl acl_final_exec_prefix, containing the values to which $prefix and -dnl $exec_prefix will expand at the end of the configure script. -AC_DEFUN([AC_LIB_PREPARE_PREFIX], -[ - dnl Unfortunately, prefix and exec_prefix get only finally determined - dnl at the end of configure. - if test "X$prefix" = "XNONE"; then - acl_final_prefix="$ac_default_prefix" - else - acl_final_prefix="$prefix" - fi - if test "X$exec_prefix" = "XNONE"; then - acl_final_exec_prefix='${prefix}' - else - acl_final_exec_prefix="$exec_prefix" - fi - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" - prefix="$acl_save_prefix" -]) - -dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the -dnl variables prefix and exec_prefix bound to the values they will have -dnl at the end of the configure script. -AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], -[ - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - $1 - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" -]) - -# lib-link.m4 serial 1 (gettext-0.11) -dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and -dnl the libraries corresponding to explicit and implicit dependencies. -dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and -dnl augments the CPPFLAGS variable. -AC_DEFUN([AC_LIB_LINKFLAGS], -[ - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - define([Name],[translit([$1],[./-], [___])]) - define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ - AC_LIB_LINKFLAGS_BODY([$1], [$2]) - ac_cv_lib[]Name[]_libs="$LIB[]NAME" - ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" - ac_cv_lib[]Name[]_cppflags="$INC[]NAME" - ]) - LIB[]NAME="$ac_cv_lib[]Name[]_libs" - LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" - INC[]NAME="$ac_cv_lib[]Name[]_cppflags" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) - AC_SUBST([LIB]NAME) - AC_SUBST([LTLIB]NAME) - dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the - dnl results of this search when this library appears as a dependency. - HAVE_LIB[]NAME=yes - undefine([Name]) - undefine([NAME]) -]) - -dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) -dnl searches for libname and the libraries corresponding to explicit and -dnl implicit dependencies, together with the specified include files and -dnl the ability to compile and link the specified testcode. If found, it -dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and -dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and -dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs -dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. -AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], -[ - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - define([Name],[translit([$1],[./-], [___])]) - define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - - dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME - dnl accordingly. - AC_LIB_LINKFLAGS_BODY([$1], [$2]) - - dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, - dnl because if the user has installed lib[]Name and not disabled its use - dnl via --without-lib[]Name-prefix, he wants to use it. - ac_save_CPPFLAGS="$CPPFLAGS" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) - - AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ - ac_save_LIBS="$LIBS" - LIBS="$LIBS $LIB[]NAME" - AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) - LIBS="$ac_save_LIBS" - ]) - if test "$ac_cv_lib[]Name" = yes; then - HAVE_LIB[]NAME=yes - AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) - AC_MSG_CHECKING([how to link with lib[]$1]) - AC_MSG_RESULT([$LIB[]NAME]) - else - HAVE_LIB[]NAME=no - dnl If $LIB[]NAME didn't lead to a usable library, we don't need - dnl $INC[]NAME either. - CPPFLAGS="$ac_save_CPPFLAGS" - LIB[]NAME= - LTLIB[]NAME= - fi - AC_SUBST([HAVE_LIB]NAME) - AC_SUBST([LIB]NAME) - AC_SUBST([LTLIB]NAME) - undefine([Name]) - undefine([NAME]) -]) - -dnl Determine the platform dependent parameters needed to use rpath: -dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, -dnl hardcode_direct, hardcode_minus_L, -dnl sys_lib_search_path_spec, sys_lib_dlsearch_path_spec. -AC_DEFUN([AC_LIB_RPATH], -[ - AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS - AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld - AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host - AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir - AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ - CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ - ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh - . ./conftest.sh - rm -f ./conftest.sh - acl_cv_rpath=done - ]) - wl="$acl_cv_wl" - libext="$acl_cv_libext" - shlibext="$acl_cv_shlibext" - hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" - hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" - hardcode_direct="$acl_cv_hardcode_direct" - hardcode_minus_L="$acl_cv_hardcode_minus_L" - sys_lib_search_path_spec="$acl_cv_sys_lib_search_path_spec" - sys_lib_dlsearch_path_spec="$acl_cv_sys_lib_dlsearch_path_spec" -]) - -dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and -dnl the libraries corresponding to explicit and implicit dependencies. -dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. -AC_DEFUN([AC_LIB_LINKFLAGS_BODY], -[ - define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - dnl By default, look in $includedir and $libdir. - use_additional=yes - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - AC_ARG_WITH([lib$1-prefix], -[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib - --without-lib$1-prefix don't search for lib$1 in includedir and libdir], -[ - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi -]) - dnl Search the library and its dependencies in $additional_libdir and - dnl $LDFLAGS. Using breadth-first-seach. - LIB[]NAME= - LTLIB[]NAME= - INC[]NAME= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='$1 $2' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - dnl See if it was already located by an earlier AC_LIB_LINKFLAGS - dnl or AC_LIB_HAVE_LINKFLAGS call. - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" - else - dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined - dnl that this library doesn't exist. So just drop it. - : - fi - else - dnl Search the library lib$name in $additional_libdir and $LDFLAGS - dnl and the already constructed $LIBNAME/$LTLIBNAME. - found_dir= - found_la= - found_so= - found_a= - if test $use_additional = yes; then - if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then - found_dir="$additional_libdir" - found_so="$additional_libdir/lib$name.$shlibext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - else - if test -f "$additional_libdir/lib$name.$libext"; then - found_dir="$additional_libdir" - found_a="$additional_libdir/lib$name.$libext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then - found_dir="$dir" - found_so="$dir/lib$name.$shlibext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - else - if test -f "$dir/lib$name.$libext"; then - found_dir="$dir" - found_a="$dir/lib$name.$libext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - dnl Found the library. - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - dnl Linking with a shared library. We attempt to hardcode its - dnl directory into the executable's runpath, unless it's the - dnl standard /usr/lib. - if test "X$found_dir" = "X/usr/lib"; then - dnl No hardcoding is needed. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - dnl Use an explicit option to hardcode DIR into the resulting - dnl binary. - dnl Potentially add DIR to ltrpathdirs. - dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - dnl The hardcoding into $LIBNAME is system dependent. - if test "$hardcode_direct" = yes; then - dnl Using DIR/libNAME.so during linking hardcodes DIR into the - dnl resulting binary. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then - dnl Use an explicit option to hardcode DIR into the resulting - dnl binary. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - dnl Potentially add DIR to rpathdirs. - dnl The rpathdirs will be appended to $LIBNAME at the end. - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - dnl Rely on "-L$found_dir". - dnl But don't add it if it's already contained in the LDFLAGS - dnl or the already constructed $LIBNAME - haveit= - for x in $LDFLAGS $LIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" - fi - if test "$hardcode_minus_L" != no; then - dnl FIXME: Not sure whether we should use - dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" - dnl here. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH - dnl here, because this doesn't fit in flags passed to the - dnl compiler. So give up. No hardcoding. This affects only - dnl very old systems. - dnl FIXME: Not sure whether we should use - dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" - dnl here. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - dnl Linking with a static library. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" - else - dnl We shouldn't come here, but anyway it's good to have a - dnl fallback. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" - fi - fi - dnl Assume the include files are nearby. - additional_includedir= - case "$found_dir" in - */lib | */lib/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - dnl Potentially add $additional_includedir to $INCNAME. - dnl But don't add it - dnl 1. if it's the standard /usr/include, - dnl 2. if it's /usr/local/include and we are using GCC on Linux, - dnl 3. if it's already present in $CPPFLAGS or the already - dnl constructed $INCNAME, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INC[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - dnl Really add $additional_includedir to $INCNAME. - INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - dnl Look for dependencies. - if test -n "$found_la"; then - dnl Read the .la file. It defines the variables - dnl dlname, library_names, old_library, dependency_libs, current, - dnl age, revision, installed, dlopen, dlpreopen, libdir. - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - dnl We use only dependency_libs. - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. - dnl But don't add it - dnl 1. if it's the standard /usr/lib, - dnl 2. if it's /usr/local/lib and we are using GCC on Linux, - dnl 3. if it's already present in $LDFLAGS or the already - dnl constructed $LIBNAME, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LIBNAME. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LTLIBNAME. - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -l*) - dnl Handle this in the next round. - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - dnl Handle this in the next round. Throw away the .la's - dnl directory; it is already contained in a preceding -L - dnl option. - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - dnl Most likely an immediate library name. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" - ;; - esac - done - fi - else - dnl Didn't find the library; assume it is in the system directories - dnl known to the linker and runtime loader. (All the system - dnl directories known to the linker should also be known to the - dnl runtime loader, otherwise the system is severely misconfigured.) - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$hardcode_libdir_separator"; then - dnl Weird platform: only the last -rpath option counts, the user must - dnl pass all path elements in one option. We can arrange that for a - dnl single library, but not when more than one $LIBNAMEs are used. - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" - done - dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" - else - dnl The -rpath options are cumulative. - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - dnl When using libtool, the option that works for both libraries and - dnl executables is -R. The -R options are cumulative. - for found_dir in $ltrpathdirs; do - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" - done - fi -]) - -dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, -dnl unless already present in VAR. -dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes -dnl contains two or three consecutive elements that belong together. -AC_DEFUN([AC_LIB_APPENDTOVAR], -[ - for element in [$2]; do - haveit= - for x in $[$1]; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - [$1]="${[$1]}${[$1]:+ }$element" - fi - done -]) - -# lib-ld.m4 serial 1 (gettext-0.11) -dnl Copyright (C) 1996-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl Subroutines of libtool.m4, -dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision -dnl with libtool.m4. - -dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. -AC_DEFUN([AC_LIB_PROG_LD_GNU], -[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, -[# I'd rather use --version here, but apparently some GNU ld's only accept -v. -if $LD -v 2>&1 &5; then - acl_cv_prog_gnu_ld=yes -else - acl_cv_prog_gnu_ld=no -fi]) -with_gnu_ld=$acl_cv_prog_gnu_ld -]) - -dnl From libtool-1.4. Sets the variable LD. -AC_DEFUN([AC_LIB_PROG_LD], -[AC_ARG_WITH(gnu-ld, -[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], -test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by GCC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]* | [A-Za-z]:[\\/]*)] - [re_direlt='/[^/][^/]*/\.\./'] - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(acl_cv_path_LD, -[if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - acl_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then - test "$with_gnu_ld" != no && break - else - test "$with_gnu_ld" != yes && break - fi - fi - done - IFS="$ac_save_ifs" -else - acl_cv_path_LD="$LD" # Let the user override the test with a path. -fi]) -LD="$acl_cv_path_LD" -if test -n "$LD"; then - AC_MSG_RESULT($LD) -else - AC_MSG_RESULT(no) -fi -test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) -AC_LIB_PROG_LD_GNU -]) - -# iconv.m4 serial AM3 (gettext-0.11) -dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -AC_DEFUN([AM_ICONV_LINK], -[ - dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and - dnl those with the standalone portable GNU libiconv installed). - - dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - - dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV - dnl accordingly. - AC_LIB_LINKFLAGS_BODY([iconv]) - - dnl Add $INCICONV to CPPFLAGS before performing the following checks, - dnl because if the user has installed libiconv and not disabled its use - dnl via --without-libiconv-prefix, he wants to use it. The first - dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. - am_save_CPPFLAGS="$CPPFLAGS" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) - - AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ - am_cv_func_iconv="no, consider installing GNU libiconv" - am_cv_lib_iconv=no - AC_TRY_LINK([#include -#include ], - [iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd);], - am_cv_func_iconv=yes) - if test "$am_cv_func_iconv" != yes; then - am_save_LIBS="$LIBS" - LIBS="$LIBS $LIBICONV" - AC_TRY_LINK([#include -#include ], - [iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd);], - am_cv_lib_iconv=yes - am_cv_func_iconv=yes) - LIBS="$am_save_LIBS" - fi - ]) - if test "$am_cv_func_iconv" = yes; then - AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) - fi - if test "$am_cv_lib_iconv" = yes; then - AC_MSG_CHECKING([how to link with libiconv]) - AC_MSG_RESULT([$LIBICONV]) - else - dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV - dnl either. - CPPFLAGS="$am_save_CPPFLAGS" - LIBICONV= - LTLIBICONV= - fi - AC_SUBST(LIBICONV) - AC_SUBST(LTLIBICONV) -]) - -AC_DEFUN([AM_ICONV], -[ - AC_REQUIRE([AM_ICONV_LINK]) - if test "$am_cv_func_iconv" = yes; then - AC_MSG_CHECKING([for iconv declaration]) - AC_CACHE_VAL(am_cv_proto_iconv, [ - AC_TRY_COMPILE([ -#include -#include -extern -#ifdef __cplusplus -"C" -#endif -#if defined(__STDC__) || defined(__cplusplus) -size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); -#else -size_t iconv(); -#endif -], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") - am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) - am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` - AC_MSG_RESULT([$]{ac_t:- - }[$]am_cv_proto_iconv) - AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, - [Define as const if the declaration of iconv() needs const.]) - fi -]) - -# progtest.m4 serial 2 (gettext-0.10.40) -dnl Copyright (C) 1996-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper , 1996. - -# Search path for a program which passes the given test. - -dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, -dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) -AC_DEFUN([AM_PATH_PROG_WITH_TEST], -[# Extract the first word of "$2", so it can be a program name with args. -set dummy $2; ac_word=[$]2 -AC_MSG_CHECKING([for $ac_word]) -AC_CACHE_VAL(ac_cv_path_$1, -[case "[$]$1" in - /*) - ac_cv_path_$1="[$]$1" # Let the user override the test with a path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in ifelse([$5], , $PATH, [$5]); do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if [$3]; then - ac_cv_path_$1="$ac_dir/$ac_word" - break - fi - fi - done - IFS="$ac_save_ifs" -dnl If no 4th arg is given, leave the cache variable unset, -dnl so AC_PATH_PROGS will keep looking. -ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" -])dnl - ;; -esac])dnl -$1="$ac_cv_path_$1" -if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then - AC_MSG_RESULT([$]$1) -else - AC_MSG_RESULT(no) -fi -AC_SUBST($1)dnl -]) - -# glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40) -dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -# Test for the GNU C Library, version 2.1 or newer. -# From Bruno Haible. - -AC_DEFUN([jm_GLIBC21], - [ - AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, - ac_cv_gnu_library_2_1, - [AC_EGREP_CPP([Lucky GNU user], - [ -#include -#ifdef __GNU_LIBRARY__ - #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) - Lucky GNU user - #endif -#endif - ], - ac_cv_gnu_library_2_1=yes, - ac_cv_gnu_library_2_1=no) - ] - ) - AC_SUBST(GLIBC21) - GLIBC21="$ac_cv_gnu_library_2_1" - ] -) - -# codeset.m4 serial AM1 (gettext-0.10.40) -dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -AC_DEFUN([AM_LANGINFO_CODESET], -[ - AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, - [AC_TRY_LINK([#include ], - [char* cs = nl_langinfo(CODESET);], - am_cv_langinfo_codeset=yes, - am_cv_langinfo_codeset=no) - ]) - if test $am_cv_langinfo_codeset = yes; then - AC_DEFINE(HAVE_LANGINFO_CODESET, 1, - [Define if you have and nl_langinfo(CODESET).]) - fi -]) - -# lcmessage.m4 serial 2 (gettext-0.10.40) -dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper , 1995. - -# Check whether LC_MESSAGES is available in . - -AC_DEFUN([AM_LC_MESSAGES], - [if test $ac_cv_header_locale_h = yes; then - AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, - [AC_TRY_LINK([#include ], [return LC_MESSAGES], - am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) - if test $am_cv_val_LC_MESSAGES = yes; then - AC_DEFINE(HAVE_LC_MESSAGES, 1, - [Define if your file defines LC_MESSAGES.]) - fi - fi]) - -#serial 5 - -dnl From Paul Eggert. - -# Define ST_MTIM_NSEC to be the nanoseconds member of struct stat's st_mtim, -# if it exists. - -AC_DEFUN([AC_STRUCT_ST_MTIM_NSEC], - [AC_CACHE_CHECK([for nanoseconds member of struct stat.st_mtim], - ac_cv_struct_st_mtim_nsec, - [ac_save_CPPFLAGS="$CPPFLAGS" - ac_cv_struct_st_mtim_nsec=no - # tv_nsec -- the usual case - # _tv_nsec -- Solaris 2.6, if - # (defined _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED == 1 - # && !defined __EXTENSIONS__) - # st__tim.tv_nsec -- UnixWare 2.1.2 - for ac_val in tv_nsec _tv_nsec st__tim.tv_nsec; do - CPPFLAGS="$ac_save_CPPFLAGS -DST_MTIM_NSEC=$ac_val" - AC_TRY_COMPILE([#include -#include ], [struct stat s; s.st_mtim.ST_MTIM_NSEC;], - [ac_cv_struct_st_mtim_nsec=$ac_val; break]) - done - CPPFLAGS="$ac_save_CPPFLAGS"]) - - if test $ac_cv_struct_st_mtim_nsec != no; then - AC_DEFINE_UNQUOTED(ST_MTIM_NSEC, $ac_cv_struct_st_mtim_nsec, - [Define to be the nanoseconds member of struct stat's st_mtim, - if it exists.]) - fi - ] -) - -#serial 7 -*- autoconf -*- - -dnl From Jim Meyering. -dnl -dnl See if the glibc *_unlocked I/O macros are available. -dnl Use only those *_unlocked macros that are declared. -dnl - -AC_DEFUN([jm_FUNC_GLIBC_UNLOCKED_IO], - [AC_CHECK_DECLS( - [clearerr_unlocked, feof_unlocked, ferror_unlocked, - fflush_unlocked, fgets_unlocked, fputc_unlocked, fputs_unlocked, - fread_unlocked, fwrite_unlocked, getc_unlocked, - getchar_unlocked, putc_unlocked, putchar_unlocked])]) - -#serial 17 - -dnl This macro is intended to be used solely in this file. -dnl These are the prerequisite macros for GNU's strftime.c replacement. -AC_DEFUN([_jm_STRFTIME_PREREQS], -[ - dnl strftime.c uses localtime_r and the underyling system strftime - dnl if they exist. - AC_CHECK_FUNCS(localtime_r strftime) - - AC_CHECK_HEADERS(limits.h) - AC_CHECK_FUNCS(bcopy tzset mempcpy memcpy memset) - - # This defines (or not) HAVE_TZNAME and HAVE_TM_ZONE. - AC_STRUCT_TIMEZONE - - AC_CHECK_FUNCS(mblen mbrlen) - - AC_CHECK_MEMBER([struct tm.tm_gmtoff], - [AC_DEFINE(HAVE_TM_GMTOFF, 1, - [Define if struct tm has the tm_gmtoff member.])], - , - [#include ]) -]) - -dnl From Jim Meyering. -dnl -AC_DEFUN([jm_FUNC_GNU_STRFTIME], -[AC_REQUIRE([AC_HEADER_TIME])dnl - - _jm_STRFTIME_PREREQS - - AC_REQUIRE([AC_C_CONST])dnl - AC_REQUIRE([AC_HEADER_STDC])dnl - AC_CHECK_HEADERS(sys/time.h) - AC_DEFINE([my_strftime], [nstrftime], - [Define to the name of the strftime replacement function.]) -]) - -AC_DEFUN([jm_FUNC_STRFTIME], -[ - _jm_STRFTIME_PREREQS -]) - -#serial 5 - -dnl From Jim Meyering. -dnl Determine whether malloc accepts 0 as its argument. -dnl If it doesn't, arrange to use the replacement function. -dnl - -AC_DEFUN([jm_FUNC_MALLOC], -[ - dnl xmalloc.c requires that this symbol be defined so it doesn't - dnl mistakenly use a broken malloc -- as it might if this test were omitted. - AC_DEFINE(HAVE_DONE_WORKING_MALLOC_CHECK, 1, - [Define if the malloc check has been performed. ]) - - AC_CACHE_CHECK([for working malloc], jm_cv_func_working_malloc, - [AC_TRY_RUN([ - char *malloc (); - int - main () - { - exit (malloc (0) ? 0 : 1); - } - ], - jm_cv_func_working_malloc=yes, - jm_cv_func_working_malloc=no, - dnl When crosscompiling, assume malloc is broken. - jm_cv_func_working_malloc=no) - ]) - if test $jm_cv_func_working_malloc = no; then - AC_LIBOBJ(malloc) - AC_DEFINE(malloc, rpl_malloc, - [Define to rpl_malloc if the replacement function should be used.]) - fi -]) - -#serial 5 - -dnl From Jim Meyering. -dnl Determine whether realloc works when both arguments are 0. -dnl If it doesn't, arrange to use the replacement function. -dnl - -AC_DEFUN([jm_FUNC_REALLOC], -[ - dnl xmalloc.c requires that this symbol be defined so it doesn't - dnl mistakenly use a broken realloc -- as it might if this test were omitted. - AC_DEFINE(HAVE_DONE_WORKING_REALLOC_CHECK, 1, - [Define if the realloc check has been performed. ]) - - AC_CACHE_CHECK([for working realloc], jm_cv_func_working_realloc, - [AC_TRY_RUN([ - char *realloc (); - int - main () - { - exit (realloc (0, 0) ? 0 : 1); - } - ], - jm_cv_func_working_realloc=yes, - jm_cv_func_working_realloc=no, - dnl When crosscompiling, assume realloc is broken. - jm_cv_func_working_realloc=no) - ]) - if test $jm_cv_func_working_realloc = no; then - AC_LIBOBJ(realloc) - AC_DEFINE(realloc, rpl_realloc, - [Define to rpl_realloc if the replacement function should be used.]) - fi -]) - -# Check prerequisites for compiling lib/c-stack.c. - -# Copyright (C) 2002 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -AC_DEFUN([AC_SYS_XSI_STACK_OVERFLOW_HEURISTIC], - [# for STACK_DIRECTION - AC_REQUIRE([AC_FUNC_ALLOCA]) - - AC_CACHE_CHECK([for working C stack overflow detection], - ac_cv_sys_xsi_stack_overflow_heuristic, - [AC_TRY_RUN( - [ - #include - #include - - static union - { - char buffer[SIGSTKSZ]; - long double ld; - uintmax_t u; - void *p; - } alternate_signal_stack; - - #if STACK_DIRECTION - # define find_stack_direction(ptr) STACK_DIRECTION - #else - static int - find_stack_direction (char const *addr) - { - char dummy; - return (! addr ? find_stack_direction (&dummy) - : addr < &dummy ? 1 : -1); - } - #endif - - static void - segv_handler (int signo, siginfo_t *info, void *context) - { - if (0 < info->si_code) - { - ucontext_t const *user_context = context; - char const *stack_min = user_context->uc_stack.ss_sp; - size_t stack_size = user_context->uc_stack.ss_size; - char const *faulting_address = info->si_addr; - size_t s = faulting_address - stack_min; - size_t page_size = sysconf (_SC_PAGESIZE); - if (find_stack_direction (0) < 0) - s += page_size; - if (s < stack_size + page_size) - _exit (0); - } - - _exit (1); - } - - static int - c_stack_action (void) - { - stack_t st; - struct sigaction act; - int r; - - st.ss_flags = 0; - st.ss_sp = alternate_signal_stack.buffer; - st.ss_size = sizeof alternate_signal_stack.buffer; - r = sigaltstack (&st, 0); - if (r != 0) - return r; - - sigemptyset (&act.sa_mask); - act.sa_flags = SA_NODEFER | SA_ONSTACK | SA_RESETHAND | SA_SIGINFO; - act.sa_sigaction = segv_handler; - return sigaction (SIGSEGV, &act, 0); - } - - static int - recurse (char *p) - { - char array[500]; - array[0] = 1; - return *p + recurse (array); - } - - int - main (void) - { - c_stack_action (); - return recurse ("\1"); - } - ], - [ac_cv_sys_xsi_stack_overflow_heuristic=yes], - [ac_cv_sys_xsi_stack_overflow_heuristic=no], - [ac_cv_sys_xsi_stack_overflow_heuristic=cross-compiling])]) - - if test $ac_cv_sys_xsi_stack_overflow_heuristic = yes; then - AC_DEFINE(HAVE_XSI_STACK_OVERFLOW_HEURISTIC, 1, - [Define to 1 if extending the stack slightly past the limit causes - a SIGSEGV, and an alternate stack can be established with sigaltstack, - and the signal handler is passed a context that specifies the - run time stack. This behavior is defined by POSIX 1003.1-2001 - with the X/Open System Interface (XSI) option - and is a standardized way to implement a SEGV-based stack - overflow detection heuristic.]) - fi]) - - -AC_DEFUN([jm_PREREQ_C_STACK], - [AC_REQUIRE([jm_AC_TYPE_UINTMAX_T]) - AC_REQUIRE([AC_SYS_XSI_STACK_OVERFLOW_HEURISTIC]) - - # for STACK_DIRECTION - AC_REQUIRE([AC_FUNC_ALLOCA]) - - AC_CHECK_HEADERS(unistd.h) - - AC_CHECK_TYPES([siginfo_t, stack_t], , , [#include ])]) - -#serial 4 - -dnl FIXME: put these prerequisite-only *.m4 files in a separate -dnl directory -- otherwise, they'll conflict with existing files. - -dnl These are the prerequisite macros for GNU's error.c file. -AC_DEFUN([jm_PREREQ_ERROR], -[ - AC_CHECK_FUNCS(strerror vprintf doprnt) - AC_CHECK_DECLS([strerror]) - AC_FUNC_STRERROR_R - AC_HEADER_STDC -]) - -#serial 22 - -dnl These are the prerequisite macros for files in the lib/ -dnl directories of the fileutils, sh-utils, and textutils packages. - -AC_DEFUN([jm_PREREQ], -[ - jm_PREREQ_ADDEXT - jm_PREREQ_CANON_HOST - jm_PREREQ_DIRNAME - jm_PREREQ_ERROR - jm_PREREQ_EXCLUDE - jm_PREREQ_GETPAGESIZE - jm_PREREQ_HARD_LOCALE - jm_PREREQ_HASH - jm_PREREQ_HUMAN - jm_PREREQ_MBSWIDTH - jm_PREREQ_MEMCHR - jm_PREREQ_PHYSMEM - jm_PREREQ_POSIXVER - jm_PREREQ_QUOTEARG - jm_PREREQ_READUTMP - jm_PREREQ_REGEX - jm_PREREQ_TEMPNAME # called by mkstemp - jm_PREREQ_XGETCWD - jm_PREREQ_XREADLINK -]) - -AC_DEFUN([jm_PREREQ_ADDEXT], -[ - dnl For addext.c. - AC_SYS_LONG_FILE_NAMES - AC_CHECK_FUNCS(pathconf) - AC_CHECK_HEADERS(limits.h string.h unistd.h) -]) - -AC_DEFUN([jm_PREREQ_CANON_HOST], -[ - dnl Add any libraries as early as possible. - dnl In particular, inet_ntoa needs -lnsl at least on Solaris5.5.1, - dnl so we have to add -lnsl to LIBS before checking for that function. - AC_SEARCH_LIBS(gethostbyname, [inet nsl]) - - dnl These come from -lnsl on Solaris5.5.1. - AC_CHECK_FUNCS(gethostbyname gethostbyaddr inet_ntoa) - - AC_CHECK_FUNCS(gethostbyname gethostbyaddr inet_ntoa) - AC_CHECK_HEADERS(unistd.h string.h netdb.h sys/socket.h \ - netinet/in.h arpa/inet.h) -]) - -AC_DEFUN([jm_PREREQ_DIRNAME], -[ - AC_HEADER_STDC - AC_CHECK_HEADERS(string.h) -]) - -AC_DEFUN([jm_PREREQ_EXCLUDE], -[ - jm_FUNC_FNMATCH - AC_HEADER_STDBOOL -]) - -AC_DEFUN([jm_PREREQ_GETPAGESIZE], -[ - AC_CHECK_FUNCS(getpagesize) - AC_CHECK_HEADERS(OS.h unistd.h) -]) - -AC_DEFUN([jm_PREREQ_HARD_LOCALE], -[ - AC_C_PROTOTYPES - AC_CHECK_FUNCS(setlocale) - AC_CHECK_HEADERS(locale.h stdlib.h string.h) -]) - -AC_DEFUN([jm_PREREQ_HASH], -[ - AC_CHECK_HEADERS(stdlib.h) - AC_HEADER_STDBOOL - AC_REQUIRE([jm_CHECK_DECLS]) -]) - -# If you use human.c, you need the following files: -# inttypes.m4 ulonglong.m4 -AC_DEFUN([jm_PREREQ_HUMAN], -[ - AC_CHECK_HEADERS(limits.h stdlib.h string.h) - AC_CHECK_DECLS([getenv]) - AC_REQUIRE([jm_AC_TYPE_UINTMAX_T]) -]) - -AC_DEFUN([jm_PREREQ_MEMCHR], -[ - AC_CHECK_HEADERS(limits.h stdlib.h bp-sym.h) -]) - -AC_DEFUN([jm_PREREQ_PHYSMEM], -[ - AC_CHECK_HEADERS(sys/pstat.h unistd.h) - AC_CHECK_FUNCS(pstat_getstatic pstat_getdynamic) -]) - -AC_DEFUN([jm_PREREQ_POSIXVER], -[ - AC_CHECK_HEADERS(unistd.h) - AC_CHECK_DECLS([getenv]) -]) - -AC_DEFUN([jm_PREREQ_QUOTEARG], -[ - AC_CHECK_FUNCS(isascii iswprint) - jm_FUNC_MBRTOWC - AC_CHECK_HEADERS(limits.h stddef.h stdlib.h string.h wchar.h wctype.h) - AC_HEADER_STDC - AC_C_BACKSLASH_A - AC_MBSTATE_T - AM_C_PROTOTYPES -]) - -AC_DEFUN([jm_PREREQ_REGEX], -[ - dnl FIXME: Maybe provide a btowc replacement someday: solaris-2.5.1 lacks it. - dnl FIXME: Check for wctype and iswctype, and and add -lw if necessary - dnl to get them. - AC_CHECK_FUNCS(bzero bcopy isascii btowc) - AC_CHECK_HEADERS(alloca.h libintl.h wctype.h wchar.h) - AC_HEADER_STDC - AC_FUNC_ALLOCA -]) - -AC_DEFUN([jm_PREREQ_TEMPNAME], -[ - AC_HEADER_STDC - AC_HEADER_STAT - AC_CHECK_HEADERS(fcntl.h sys/time.h stdint.h unistd.h) - AC_CHECK_FUNCS(__secure_getenv gettimeofday) - AC_CHECK_DECLS([getenv]) -]) - -AC_DEFUN([jm_PREREQ_XGETCWD], -[ - AC_C_PROTOTYPES - AC_CHECK_HEADERS(limits.h stdlib.h sys/param.h unistd.h) - AC_CHECK_FUNCS(getcwd) - AC_FUNC_GETCWD_NULL -]) - -AC_DEFUN([jm_PREREQ_XREADLINK], -[ - AC_C_PROTOTYPES - AC_CHECK_HEADERS(limits.h stdlib.h sys/types.h unistd.h) -]) - -#serial 18 - -dnl This is just a wrapper function to encapsulate this kludge. -dnl Putting it in a separate file like this helps share it between -dnl different packages. -AC_DEFUN([jm_CHECK_DECLS], -[ - AC_REQUIRE([_jm_DECL_HEADERS]) - AC_REQUIRE([AC_HEADER_TIME]) - headers=' -#include -#if HAVE_STRING_H -# if !STDC_HEADERS && HAVE_MEMORY_H -# include -# endif -# include -#else -# if HAVE_STRINGS_H -# include -# endif -#endif -#if HAVE_STDLIB_H -# include -#endif -#if HAVE_UNISTD_H -# include -#endif - -#include -#if TIME_WITH_SYS_TIME -# include -# include -#else -# if HAVE_SYS_TIME_H -# include -# else -# include -# endif -#endif - -#if HAVE_UTMP_H -# include -#endif - -#if HAVE_GRP_H -# include -#endif - -#if HAVE_PWD_H -# include -#endif -' - - AC_CHECK_DECLS([ - free, - getenv, - geteuid, - getgrgid, - getlogin, - getpwuid, - getuid, - getutent, - lseek, - malloc, - memchr, - memrchr, - nanosleep, - realloc, - stpcpy, - strndup, - strnlen, - strstr, - strtoul, - strtoull, - ttyname], , , $headers) -]) - -dnl FIXME: when autoconf has support for it. -dnl This is a little helper so we can require these header checks. -AC_DEFUN([_jm_DECL_HEADERS], -[ - AC_REQUIRE([AC_HEADER_STDC]) - AC_CHECK_HEADERS(grp.h memory.h pwd.h string.h strings.h stdlib.h \ - unistd.h sys/time.h utmp.h utmpx.h) -]) - -#serial 4 - -dnl From Paul Eggert - -AC_DEFUN([jm_FUNC_MBRTOWC], -[ - AC_CACHE_CHECK([whether mbrtowc and mbstate_t are properly declared], - jm_cv_func_mbrtowc, - [AC_TRY_LINK( - [#include ], - [mbstate_t state; return ! (sizeof state && mbrtowc);], - jm_cv_func_mbrtowc=yes, - jm_cv_func_mbrtowc=no)]) - if test $jm_cv_func_mbrtowc = yes; then - AC_DEFINE(HAVE_MBRTOWC, 1, - [Define to 1 if mbrtowc and mbstate_t are properly declared.]) - fi -]) - -#serial 4 - -dnl From Paul Eggert. - -AC_DEFUN([AC_C_BACKSLASH_A], -[ - AC_CACHE_CHECK([whether backslash-a works in strings], ac_cv_c_backslash_a, - [AC_TRY_COMPILE([], - [ -#if '\a' == 'a' - syntax error; -#endif - char buf['\a' == 'a' ? -1 : 1]; - buf[0] = '\a'; - return buf[0] != "\a"[0]; - ], - ac_cv_c_backslash_a=yes, - ac_cv_c_backslash_a=no)]) - if test $ac_cv_c_backslash_a = yes; then - AC_DEFINE(HAVE_C_BACKSLASH_A, 1, - [Define if backslash-a works in C strings.]) - fi -]) - -# serial 9 - -# From Paul Eggert. - -# BeOS 5 has but does not define mbstate_t, -# so you can't declare an object of that type. -# Check for this incompatibility with Standard C. - -# Include stdlib.h first, because otherwise this test would fail on Linux -# (at least glibc-2.1.3) because the "_XOPEN_SOURCE 500" definition elicits -# a syntax error in wchar.h due to the use of undefined __int32_t. - -AC_DEFUN([AC_MBSTATE_T], - [ - AC_CHECK_HEADERS(stdlib.h) - - AC_CACHE_CHECK([for mbstate_t], ac_cv_type_mbstate_t, - [AC_TRY_COMPILE([ -#if HAVE_STDLIB_H -# include -#endif -#include ], - [mbstate_t x; return sizeof x;], - ac_cv_type_mbstate_t=yes, - ac_cv_type_mbstate_t=no)]) - if test $ac_cv_type_mbstate_t = no; then - AC_DEFINE(mbstate_t, int, - [Define to a type if does not define.]) - fi]) - - -# Copyright 1996, 1997, 1998, 2000, 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 1 - -AC_DEFUN([AM_C_PROTOTYPES], -[AC_REQUIRE([AM_PROG_CC_STDC]) -AC_REQUIRE([AC_PROG_CPP]) -AC_MSG_CHECKING([for function prototypes]) -if test "$am_cv_prog_cc_stdc" != no; then - AC_MSG_RESULT(yes) - AC_DEFINE(PROTOTYPES,1,[Define if compiler has function prototypes]) - U= ANSI2KNR= -else - AC_MSG_RESULT(no) - U=_ ANSI2KNR=./ansi2knr -fi -# Ensure some checks needed by ansi2knr itself. -AC_HEADER_STDC -AC_CHECK_HEADERS(string.h) -AC_SUBST(U)dnl -AC_SUBST(ANSI2KNR)dnl -]) - -#serial 4 - -# autoconf tests required for use of xstrtoumax.c - -AC_DEFUN([jm_AC_PREREQ_XSTRTOUMAX], -[ - AC_REQUIRE([jm_AC_TYPE_INTMAX_T]) - AC_REQUIRE([jm_AC_TYPE_UINTMAX_T]) - AC_REQUIRE([jm_AC_TYPE_LONG_LONG]) - AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG]) - AC_CHECK_DECLS([strtol, strtoul, strtoull, strtoimax, strtoumax]) - AC_CHECK_HEADERS(limits.h stdlib.h inttypes.h) - - AC_CACHE_CHECK([whether defines strtoumax as a macro], - jm_cv_func_strtoumax_macro, - AC_EGREP_CPP([inttypes_h_defines_strtoumax], [#include -#ifdef strtoumax - inttypes_h_defines_strtoumax -#endif], - jm_cv_func_strtoumax_macro=yes, - jm_cv_func_strtoumax_macro=no)) - - if test "$jm_cv_func_strtoumax_macro" != yes; then - AC_REPLACE_FUNCS(strtoumax) - fi - - dnl Only the replacement strtoumax invokes strtoul and strtoull, - dnl so we need the replacements only if strtoumax does not exist. - case "$jm_cv_func_strtoumax_macro,$ac_cv_func_strtoumax" in - no,no) - AC_REPLACE_FUNCS(strtoul) - - dnl We don't need (and can't compile) the replacement strtoull - dnl unless the type `unsigned long long' exists. - if test "$ac_cv_type_unsigned_long_long" = yes; then - AC_REPLACE_FUNCS(strtoull) - fi - ;; - esac -]) - -# Check for fnmatch. - -# This is a modified version of autoconf's AC_FUNC_FNMATCH; -# it also checks for FNM_CASEFOLD or FNM_IGNORECASE. - -# Copyright (C) 2000, 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# AC_FUNC_FNMATCH -# --------------- -# We look for fnmatch.h to avoid that the test fails in C++. -AC_DEFUN([AC_FUNC_FNMATCH], -[AC_CACHE_CHECK([for working GNU-style fnmatch], - [ac_cv_func_fnmatch_works], -# Some versions of Solaris, SCO, and the GNU C Library -# have a broken or incompatible fnmatch. -# So we run a test program. If we are cross-compiling, take no chance. -# Thanks to John Oleynick, Franc,ois Pinard, and Paul Eggert for this test. -[AC_RUN_IFELSE([AC_LANG_PROGRAM([@%:@include ], - [exit (fnmatch ("a*", "abc", 0) != 0 - || fnmatch ("xxXX", "xXxX", FNM_CASEFOLD) != 0 - || fnmatch ("d*/*1", "d/s/1", FNM_FILE_NAME) != FNM_NOMATCH - || fnmatch ("*", "x", FNM_FILE_NAME | FNM_LEADING_DIR) != 0 - || fnmatch ("x*", "x/y/z", FNM_FILE_NAME | FNM_LEADING_DIR) != 0 - || fnmatch ("*c*", "c/x", FNM_FILE_NAME | FNM_LEADING_DIR) != 0);])], - [ac_cv_func_fnmatch_works=yes], - [ac_cv_func_fnmatch_works=no], - [ac_cv_func_fnmatch_works=no])]) -if test $ac_cv_func_fnmatch_works = yes; then - AC_DEFINE(HAVE_FNMATCH, 1, - [Define to 1 if your system has a working `fnmatch' function.]) -fi -])# AC_FUNC_FNMATCH - -#serial 12 - -dnl Initially derived from code in GNU grep. -dnl Mostly written by Jim Meyering. - -dnl Usage: jm_INCLUDED_REGEX([lib/regex.c]) -dnl -AC_DEFUN([jm_INCLUDED_REGEX], - [ - dnl Even packages that don't use regex.c can use this macro. - dnl Of course, for them it doesn't do anything. - - # Assume we'll default to using the included regex.c. - ac_use_included_regex=yes - - # However, if the system regex support is good enough that it passes the - # the following run test, then default to *not* using the included regex.c. - # If cross compiling, assume the test would fail and use the included - # regex.c. The first failing regular expression is from `Spencer ere - # test #75' in grep-2.3. - AC_CACHE_CHECK([for working re_compile_pattern], - jm_cv_func_working_re_compile_pattern, - AC_TRY_RUN( -[#include -#include - int - main () - { - static struct re_pattern_buffer regex; - const char *s; - struct re_registers regs; - re_set_syntax (RE_SYNTAX_POSIX_EGREP); - [s = re_compile_pattern ("a[[:@:>@:]]b\n", 9, ®ex);] - /* This should fail with _Invalid character class name_ error. */ - if (!s) - exit (1); - - /* This should succeed, but doesn't for e.g. glibc-2.1.3. */ - s = re_compile_pattern ("{1", 2, ®ex); - - if (s) - exit (1); - - /* The following example is derived from a problem report - against gawk from Jorge Stolfi . */ - s = re_compile_pattern ("[[an]]*n", 7, ®ex); - if (s) - exit (1); - - /* This should match, but doesn't for e.g. glibc-2.2.1. */ - if (re_match (®ex, "an", 2, 0, ®s) != 2) - exit (1); - - exit (0); - } - ], - jm_cv_func_working_re_compile_pattern=yes, - jm_cv_func_working_re_compile_pattern=no, - dnl When crosscompiling, assume it's broken. - jm_cv_func_working_re_compile_pattern=no)) - if test $jm_cv_func_working_re_compile_pattern = yes; then - ac_use_included_regex=no - fi - - test -n "$1" || AC_MSG_ERROR([missing argument]) - m4_syscmd([test -f $1]) - ifelse(m4_sysval, 0, - [ - AC_ARG_WITH(included-regex, - [ --without-included-regex don't compile regex; this is the default on - systems with version 2 of the GNU C library - (use with caution on other system)], - jm_with_regex=$withval, - jm_with_regex=$ac_use_included_regex) - if test "$jm_with_regex" = yes; then - AC_LIBOBJ(regex) - fi - ], - ) - ] -) - -#serial 5 - -# Define some macros required for proper operation of code in lib/*.c -# on MSDOS/Windows systems. - -# From Jim Meyering. - -AC_DEFUN([jm_AC_DOS], - [ - AC_CACHE_CHECK([whether system is Windows or MSDOS], [ac_cv_win_or_dos], - [ - AC_TRY_COMPILE([], - [#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ -neither MSDOS nor Windows -#endif], - [ac_cv_win_or_dos=yes], - [ac_cv_win_or_dos=no]) - ]) - - if test x"$ac_cv_win_or_dos" = xyes; then - ac_fs_accepts_drive_letter_prefix=1 - ac_fs_backslash_is_file_name_separator=1 - else - ac_fs_accepts_drive_letter_prefix=0 - ac_fs_backslash_is_file_name_separator=0 - fi - - AH_VERBATIM(FILESYSTEM_PREFIX_LEN, - [#if FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX -# define FILESYSTEM_PREFIX_LEN(Filename) \ - ((Filename)[0] && (Filename)[1] == ':' ? 2 : 0) -#else -# define FILESYSTEM_PREFIX_LEN(Filename) 0 -#endif]) - - AC_DEFINE_UNQUOTED([FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX], - $ac_fs_accepts_drive_letter_prefix, - [Define on systems for which file names may have a so-called - `drive letter' prefix, define this to compute the length of that - prefix, including the colon.]) - - AH_VERBATIM(ISSLASH, - [#if FILESYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR -# define ISSLASH(C) ((C) == '/' || (C) == '\\') -#else -# define ISSLASH(C) ((C) == '/') -#endif]) - - AC_DEFINE_UNQUOTED([FILESYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR], - $ac_fs_backslash_is_file_name_separator, - [Define if the backslash character may also serve as a file name - component separator.]) - ]) - -# Check for setmode, DOS style. - -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -AC_DEFUN([AC_FUNC_SETMODE_DOS], - [AC_CHECK_HEADERS(fcntl.h unistd.h) - AC_CACHE_CHECK([for DOS-style setmode], - [ac_cv_func_setmode_dos], - [AC_TRY_LINK( - [#include - #if HAVE_FCNTL_H - # include - #endif - #if HAVE_UNISTD_H - # include - #endif], - [int ret = setmode && setmode (1, O_BINARY);], - [ac_cv_func_setmode_dos=yes], - [ac_cv_func_setmode_dos=no])]) - if test $ac_cv_func_setmode_dos = yes; then - AC_DEFINE(HAVE_SETMODE_DOS, 1, - [Define to 1 if you have the DOS-style `setmode' function.]) - fi]) - diff --git a/src/bin/diffutils/config.h b/src/bin/diffutils/config.h deleted file mode 100644 index d8185840c4..0000000000 --- a/src/bin/diffutils/config.h +++ /dev/null @@ -1,515 +0,0 @@ -/* config.h. Generated by configure. */ -/* config.hin. Generated from configure.ac by autoheader. */ - -/* Define to 1 if the `closedir' function returns void instead of `int'. */ -/* #undef CLOSEDIR_VOID */ - -/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP - systems. This function is required for `alloca.c' support on those systems. - */ -/* #undef CRAY_STACKSEG_END */ - -/* Define to 1 if using `alloca.c'. */ -/* #undef C_ALLOCA */ - -/* Name of "diff" program, unless overridden. */ -#define DEFAULT_DIFF_PROGRAM "diff" - -/* Name of editor program, unless overridden. */ -#define DEFAULT_EDITOR_PROGRAM "ed" - -/* Define to 1 if translation of program messages to the user's native - language is requested. */ -/* #undef ENABLE_NLS */ - -/* Define on systems for which file names may have a so-called `drive letter' - prefix, define this to compute the length of that prefix, including the - colon. */ -#define FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX 0 - -/* Define if the backslash character may also serve as a file name component - separator. */ -#define FILESYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR 0 - -#if FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX -# define FILESYSTEM_PREFIX_LEN(Filename) \ - ((Filename)[0] && (Filename)[1] == ':' ? 2 : 0) -#else -# define FILESYSTEM_PREFIX_LEN(Filename) 0 -#endif - -/* Define to 1 if you have `alloca', as a function or macro. */ -#define HAVE_ALLOCA 1 - -/* Define to 1 if you have and it should be used (not on Ultrix). - */ -#define HAVE_ALLOCA_H 1 - -/* Define to 1 if you have the `bcopy' function. */ -#define HAVE_BCOPY 1 - -/* Define to 1 if you have the `btowc' function. */ -#define HAVE_BTOWC 1 - -/* Define to 1 if you have the `bzero' function. */ -#define HAVE_BZERO 1 - -/* Define to 1 if you have the `clock_gettime' function. */ -/* #undef HAVE_CLOCK_GETTIME */ - -/* Define if backslash-a works in C strings. */ -#define HAVE_C_BACKSLASH_A 1 - -/* Define to 1 if C supports variable-length arrays. */ -#define HAVE_C_VARARRAYS 1 - -/* Define if the GNU dcgettext() function is already present or preinstalled. - */ -/* #undef HAVE_DCGETTEXT */ - -/* Define to 1 if you have the declaration of `clearerr_unlocked', and to 0 if - you don't. */ -#define HAVE_DECL_CLEARERR_UNLOCKED 1 - -/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you - don't. */ -#define HAVE_DECL_FEOF_UNLOCKED 1 - -/* Define to 1 if you have the declaration of `ferror_unlocked', and to 0 if - you don't. */ -#define HAVE_DECL_FERROR_UNLOCKED 1 - -/* Define to 1 if you have the declaration of `fflush_unlocked', and to 0 if - you don't. */ -#define HAVE_DECL_FFLUSH_UNLOCKED 1 - -/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if - you don't. */ -#define HAVE_DECL_FGETS_UNLOCKED 0 - -/* Define to 1 if you have the declaration of `fputc_unlocked', and to 0 if - you don't. */ -#define HAVE_DECL_FPUTC_UNLOCKED 1 - -/* Define to 1 if you have the declaration of `fputs_unlocked', and to 0 if - you don't. */ -#define HAVE_DECL_FPUTS_UNLOCKED 0 - -/* Define to 1 if you have the declaration of `fread_unlocked', and to 0 if - you don't. */ -#define HAVE_DECL_FREAD_UNLOCKED 0 - -/* Define to 1 if you have the declaration of `fwrite_unlocked', and to 0 if - you don't. */ -#define HAVE_DECL_FWRITE_UNLOCKED 0 - -/* Define to 1 if you have the declaration of `getchar_unlocked', and to 0 if - you don't. */ -#define HAVE_DECL_GETCHAR_UNLOCKED 1 - -/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you - don't. */ -#define HAVE_DECL_GETC_UNLOCKED 1 - -/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't. - */ -#define HAVE_DECL_GETENV 1 - -/* Define to 1 if you have the declaration of `putchar_unlocked', and to 0 if - you don't. */ -#define HAVE_DECL_PUTCHAR_UNLOCKED 1 - -/* Define to 1 if you have the declaration of `putc_unlocked', and to 0 if you - don't. */ -#define HAVE_DECL_PUTC_UNLOCKED 1 - -/* Define to 1 if you have the declaration of `strerror', and to 0 if you - don't. */ -#define HAVE_DECL_STRERROR 1 - -/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you - don't. */ -#define HAVE_DECL_STRERROR_R 1 - -/* Define to 1 if you have the declaration of `strtoimax', and to 0 if you - don't. */ -#define HAVE_DECL_STRTOIMAX 1 - -/* Define to 1 if you have the declaration of `strtol', and to 0 if you don't. - */ -#define HAVE_DECL_STRTOL 1 - -/* Define to 1 if you have the declaration of `strtoul', and to 0 if you - don't. */ -#define HAVE_DECL_STRTOUL 1 - -/* Define to 1 if you have the declaration of `strtoull', and to 0 if you - don't. */ -#define HAVE_DECL_STRTOULL 1 - -/* Define to 1 if you have the declaration of `strtoumax', and to 0 if you - don't. */ -#define HAVE_DECL_STRTOUMAX 1 - -/* Define to 1 if you have the `diraccess' function. */ -/* #undef HAVE_DIRACCESS */ - -/* Define to 1 if you have the header file, and it defines `DIR'. - */ -#define HAVE_DIRENT_H 1 - -/* Define if the malloc check has been performed. */ -#define HAVE_DONE_WORKING_MALLOC_CHECK 1 - -/* Define if the realloc check has been performed. */ -#define HAVE_DONE_WORKING_REALLOC_CHECK 1 - -/* Define to 1 if you have the `doprnt' function. */ -/* #undef HAVE_DOPRNT */ - -/* Define to 1 if you have the `dup2' function. */ -#define HAVE_DUP2 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_FCNTL_H 1 - -/* Define to 1 if your system has a working `fnmatch' function. */ -#define HAVE_FNMATCH 1 - -/* Define to 1 if you have the `fork' function. */ -#define HAVE_FORK 1 - -/* Define if the GNU gettext() function is already present or preinstalled. */ -/* #undef HAVE_GETTEXT */ - -/* Define to 1 if you have the `gettimeofday' function. */ -#define HAVE_GETTIMEOFDAY 1 - -/* Define if you have the iconv() function. */ -#define HAVE_ICONV 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_INTTYPES_H 1 - -/* Define to 1 if you have the `isascii' function. */ -#define HAVE_ISASCII 1 - -/* Define to 1 if you have the `iswprint' function. */ -#define HAVE_ISWPRINT 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_LIBINTL_H */ - -/* Define to 1 if you have the header file. */ -#define HAVE_LIMITS_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_LOCALE_H 1 - -/* Define to 1 if you have the `localtime_r' function. */ -#define HAVE_LOCALTIME_R 1 - -/* Define if you have the long long type. */ -#define HAVE_LONG_LONG 1 - -/* Define to 1 if you have the `mblen' function. */ -#define HAVE_MBLEN 1 - -/* Define to 1 if you have the `mbrlen' function. */ -#define HAVE_MBRLEN 1 - -/* Define to 1 if mbrtowc and mbstate_t are properly declared. */ -#define HAVE_MBRTOWC 1 - -/* Define to 1 if you have the `memchr' function. */ -#define HAVE_MEMCHR 1 - -/* Define to 1 if you have the `memcpy' function. */ -#define HAVE_MEMCPY 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_MEMORY_H 1 - -/* Define to 1 if you have the `mempcpy' function. */ -/* #undef HAVE_MEMPCPY */ - -/* Define to 1 if you have the `memset' function. */ -#define HAVE_MEMSET 1 - -/* Define to 1 if you have the `mkstemp' function. */ -#define HAVE_MKSTEMP 1 - -/* Define to 1 if you have the header file, and it defines `DIR'. */ -/* #undef HAVE_NDIR_H */ - -/* Define to 1 if you have the `setlocale' function. */ -#define HAVE_SETLOCALE 1 - -/* Define to 1 if you have the DOS-style `setmode' function. */ -/* #undef HAVE_SETMODE_DOS */ - -/* Define to 1 if you have the `sigaction' function. */ -#define HAVE_SIGACTION 1 - -/* Define to 1 if the system has the type `siginfo_t'. */ -/* #undef HAVE_SIGINFO_T */ - -/* Define to 1 if you have the `sigprocmask' function. */ -#define HAVE_SIGPROCMASK 1 - -/* Define to 1 if the system has the type `stack_t'. */ -#define HAVE_STACK_T 1 - -/* Define to 1 if stdbool.h conforms to C99. */ -/* #undef HAVE_STDBOOL_H */ - -/* Define to 1 if you have the header file. */ -#define HAVE_STDDEF_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDLIB_H 1 - -/* Define to 1 if you have the `strcasecmp' function. */ -#define HAVE_STRCASECMP 1 - -/* Define to 1 if you have the `strchr' function. */ -#define HAVE_STRCHR 1 - -/* Define to 1 if you have the `strerror' function. */ -#define HAVE_STRERROR 1 - -/* Define to 1 if you have the `strerror_r' function. */ -#define HAVE_STRERROR_R 1 - -/* Define to 1 if you have the `strftime' function. */ -#define HAVE_STRFTIME 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRINGS_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRING_H 1 - -/* Define to 1 if you have the `strtoul' function. */ -/* #undef HAVE_STRTOUL */ - -/* Define to 1 if you have the `strtoull' function. */ -/* #undef HAVE_STRTOULL */ - -/* Define to 1 if you have the `strtoumax' function. */ -#define HAVE_STRTOUMAX 1 - -/* Define to 1 if `st_blksize' is member of `struct stat'. */ -#define HAVE_STRUCT_STAT_ST_BLKSIZE 1 - -/* Define to 1 if `st_rdev' is member of `struct stat'. */ -#define HAVE_STRUCT_STAT_ST_RDEV 1 - -/* Define to 1 if `tm_zone' is member of `struct tm'. */ -#define HAVE_STRUCT_TM_TM_ZONE 1 - -/* Define to 1 if you have the header file, and it defines `DIR'. - */ -/* #undef HAVE_SYS_DIR_H */ - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_FILE_H 1 - -/* Define to 1 if you have the header file, and it defines `DIR'. - */ -/* #undef HAVE_SYS_NDIR_H */ - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_TIME_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have that is POSIX.1 compatible. */ -#define HAVE_SYS_WAIT_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_TIME_H */ - -/* Define to 1 if you have the `tmpnam' function. */ -#define HAVE_TMPNAM 1 - -/* Define if struct tm has the tm_gmtoff member. */ -#define HAVE_TM_GMTOFF 1 - -/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use - `HAVE_STRUCT_TM_TM_ZONE' instead. */ -#define HAVE_TM_ZONE 1 - -/* Define to 1 if you don't have `tm_zone' but do have the external array - `tzname'. */ -/* #undef HAVE_TZNAME */ - -/* Define to 1 if you have the `tzset' function. */ -#define HAVE_TZSET 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_UNISTD_H 1 - -/* Define if you have the unsigned long long type. */ -#define HAVE_UNSIGNED_LONG_LONG 1 - -/* Define to 1 if you have the `vfork' function. */ -#define HAVE_VFORK 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_VFORK_H */ - -/* Define to 1 if you have the `vprintf' function. */ -#define HAVE_VPRINTF 1 - -/* Define to 1 if you have the `waitpid' function. */ -#define HAVE_WAITPID 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_WCHAR_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_WCTYPE_H 1 - -/* Define to 1 if `fork' works. */ -#define HAVE_WORKING_FORK 1 - -/* Define to 1 if `vfork' works. */ -#define HAVE_WORKING_VFORK 1 - -/* Define to 1 if extending the stack slightly past the limit causes a - SIGSEGV, and an alternate stack can be established with sigaltstack, and - the signal handler is passed a context that specifies the run time stack. - This behavior is defined by POSIX 1003.1-2001 with the X/Open System - Interface (XSI) option and is a standardized way to implement a SEGV-based - stack overflow detection heuristic. */ -/* #undef HAVE_XSI_STACK_OVERFLOW_HEURISTIC */ - -/* Define to 1 if you have the `__secure_getenv' function. */ -/* #undef HAVE___SECURE_GETENV */ - -#if FILESYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR -# define ISSLASH(C) ((C) == '/' || (C) == '\\') -#else -# define ISSLASH(C) ((C) == '/') -#endif - -/* Name of package */ -#define PACKAGE "diffutils" - -/* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "bug-gnu-utils@gnu.org" - -/* Define to the full name of this package. */ -#define PACKAGE_NAME "GNU diffutils" - -/* Define to the full name and version of this package. */ -#define PACKAGE_STRING "GNU diffutils 2.8.1" - -/* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "diffutils" - -/* Define to the version of this package. */ -#define PACKAGE_VERSION "2.8.1" - -/* Define if compiler has function prototypes */ -#define PROTOTYPES 1 - -/* Name of "pr" program. */ -#define PR_PROGRAM "/bin/pr" - -/* Define to 1 to avoid alloca in the regular-expression implementation. */ -#define REGEX_MALLOC 1 - -/* Define as the return type of signal handlers (`int' or `void'). */ -#define RETSIGTYPE void - -/* If using the C implementation of alloca, define if you know the - direction of stack growth for your system; otherwise it will be - automatically deduced at run-time. - STACK_DIRECTION > 0 => grows toward higher addresses - STACK_DIRECTION < 0 => grows toward lower addresses - STACK_DIRECTION = 0 => direction of growth unknown */ -/* #undef STACK_DIRECTION */ - -/* Define to 1 if the `S_IS*' macros in do not work properly. */ -/* #undef STAT_MACROS_BROKEN */ - -/* Define to 1 if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - -/* Define to 1 if strerror_r returns char *. */ -/* #undef STRERROR_R_CHAR_P */ - -/* Define to be the nanoseconds member of struct stat's st_mtim, if it exists. - */ -#define ST_MTIM_NSEC tv_nsec - -/* Define to 1 if you can safely include both and . */ -#define TIME_WITH_SYS_TIME 1 - -/* Define to 1 if your declares `struct tm'. */ -/* #undef TM_IN_SYS_TIME */ - -/* Version number of package */ -#define VERSION "2.8.1" - -/* Number of bits in a file offset, on hosts where this is settable. */ -/* #undef _FILE_OFFSET_BITS */ - -#ifndef _GNU_SOURCE -# define _GNU_SOURCE -#endif - -/* Define for large files, on AIX-style hosts. */ -/* #undef _LARGE_FILES */ - -/* Enable Solaris extensions. */ -#define __EXTENSIONS__ 1 - -/* Define like PROTOTYPES; this can be used by system headers. */ -#define __PROTOTYPES 1 - -/* Define to empty if `const' does not conform to ANSI C. */ -/* #undef const */ - -/* Define as `__inline' if that's what the C compiler calls it, or to nothing - if it is not supported. */ -/* #undef inline */ - -/* Define to widest signed type if doesn't define. */ -/* #undef intmax_t */ - -/* Define to rpl_malloc if the replacement function should be used. */ -/* #undef malloc */ - -/* Define to a type if does not define. */ -/* #undef mbstate_t */ - -/* Define to the name of the strftime replacement function. */ -#define my_strftime nstrftime - -/* Define to `int' if does not define. */ -/* #undef pid_t */ - -/* Define to `int' if does not define. */ -/* #undef ptrdiff_t */ - -/* Define to rpl_realloc if the replacement function should be used. */ -/* #undef realloc */ - -/* Define to `int' if does not define. */ -/* #undef ssize_t */ - -/* Define to widest unsigned type if doesn't define. */ -/* #undef uintmax_t */ - -/* Define as `fork' if `vfork' does not work. */ -/* #undef vfork */ diff --git a/src/bin/diffutils/config.hin b/src/bin/diffutils/config.hin deleted file mode 100644 index 0b2e261af5..0000000000 --- a/src/bin/diffutils/config.hin +++ /dev/null @@ -1,514 +0,0 @@ -/* config.hin. Generated from configure.ac by autoheader. */ - -/* Define to 1 if the `closedir' function returns void instead of `int'. */ -#undef CLOSEDIR_VOID - -/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP - systems. This function is required for `alloca.c' support on those systems. - */ -#undef CRAY_STACKSEG_END - -/* Define to 1 if using `alloca.c'. */ -#undef C_ALLOCA - -/* Name of "diff" program, unless overridden. */ -#undef DEFAULT_DIFF_PROGRAM - -/* Name of editor program, unless overridden. */ -#undef DEFAULT_EDITOR_PROGRAM - -/* Define to 1 if translation of program messages to the user's native - language is requested. */ -#undef ENABLE_NLS - -/* Define on systems for which file names may have a so-called `drive letter' - prefix, define this to compute the length of that prefix, including the - colon. */ -#undef FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX - -/* Define if the backslash character may also serve as a file name component - separator. */ -#undef FILESYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR - -#if FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX -# define FILESYSTEM_PREFIX_LEN(Filename) \ - ((Filename)[0] && (Filename)[1] == ':' ? 2 : 0) -#else -# define FILESYSTEM_PREFIX_LEN(Filename) 0 -#endif - -/* Define to 1 if you have `alloca', as a function or macro. */ -#undef HAVE_ALLOCA - -/* Define to 1 if you have and it should be used (not on Ultrix). - */ -#undef HAVE_ALLOCA_H - -/* Define to 1 if you have the `bcopy' function. */ -#undef HAVE_BCOPY - -/* Define to 1 if you have the `btowc' function. */ -#undef HAVE_BTOWC - -/* Define to 1 if you have the `bzero' function. */ -#undef HAVE_BZERO - -/* Define to 1 if you have the `clock_gettime' function. */ -#undef HAVE_CLOCK_GETTIME - -/* Define if backslash-a works in C strings. */ -#undef HAVE_C_BACKSLASH_A - -/* Define to 1 if C supports variable-length arrays. */ -#undef HAVE_C_VARARRAYS - -/* Define if the GNU dcgettext() function is already present or preinstalled. - */ -#undef HAVE_DCGETTEXT - -/* Define to 1 if you have the declaration of `clearerr_unlocked', and to 0 if - you don't. */ -#undef HAVE_DECL_CLEARERR_UNLOCKED - -/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you - don't. */ -#undef HAVE_DECL_FEOF_UNLOCKED - -/* Define to 1 if you have the declaration of `ferror_unlocked', and to 0 if - you don't. */ -#undef HAVE_DECL_FERROR_UNLOCKED - -/* Define to 1 if you have the declaration of `fflush_unlocked', and to 0 if - you don't. */ -#undef HAVE_DECL_FFLUSH_UNLOCKED - -/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if - you don't. */ -#undef HAVE_DECL_FGETS_UNLOCKED - -/* Define to 1 if you have the declaration of `fputc_unlocked', and to 0 if - you don't. */ -#undef HAVE_DECL_FPUTC_UNLOCKED - -/* Define to 1 if you have the declaration of `fputs_unlocked', and to 0 if - you don't. */ -#undef HAVE_DECL_FPUTS_UNLOCKED - -/* Define to 1 if you have the declaration of `fread_unlocked', and to 0 if - you don't. */ -#undef HAVE_DECL_FREAD_UNLOCKED - -/* Define to 1 if you have the declaration of `fwrite_unlocked', and to 0 if - you don't. */ -#undef HAVE_DECL_FWRITE_UNLOCKED - -/* Define to 1 if you have the declaration of `getchar_unlocked', and to 0 if - you don't. */ -#undef HAVE_DECL_GETCHAR_UNLOCKED - -/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you - don't. */ -#undef HAVE_DECL_GETC_UNLOCKED - -/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't. - */ -#undef HAVE_DECL_GETENV - -/* Define to 1 if you have the declaration of `putchar_unlocked', and to 0 if - you don't. */ -#undef HAVE_DECL_PUTCHAR_UNLOCKED - -/* Define to 1 if you have the declaration of `putc_unlocked', and to 0 if you - don't. */ -#undef HAVE_DECL_PUTC_UNLOCKED - -/* Define to 1 if you have the declaration of `strerror', and to 0 if you - don't. */ -#undef HAVE_DECL_STRERROR - -/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you - don't. */ -#undef HAVE_DECL_STRERROR_R - -/* Define to 1 if you have the declaration of `strtoimax', and to 0 if you - don't. */ -#undef HAVE_DECL_STRTOIMAX - -/* Define to 1 if you have the declaration of `strtol', and to 0 if you don't. - */ -#undef HAVE_DECL_STRTOL - -/* Define to 1 if you have the declaration of `strtoul', and to 0 if you - don't. */ -#undef HAVE_DECL_STRTOUL - -/* Define to 1 if you have the declaration of `strtoull', and to 0 if you - don't. */ -#undef HAVE_DECL_STRTOULL - -/* Define to 1 if you have the declaration of `strtoumax', and to 0 if you - don't. */ -#undef HAVE_DECL_STRTOUMAX - -/* Define to 1 if you have the `diraccess' function. */ -#undef HAVE_DIRACCESS - -/* Define to 1 if you have the header file, and it defines `DIR'. - */ -#undef HAVE_DIRENT_H - -/* Define if the malloc check has been performed. */ -#undef HAVE_DONE_WORKING_MALLOC_CHECK - -/* Define if the realloc check has been performed. */ -#undef HAVE_DONE_WORKING_REALLOC_CHECK - -/* Define to 1 if you have the `doprnt' function. */ -#undef HAVE_DOPRNT - -/* Define to 1 if you have the `dup2' function. */ -#undef HAVE_DUP2 - -/* Define to 1 if you have the header file. */ -#undef HAVE_FCNTL_H - -/* Define to 1 if your system has a working `fnmatch' function. */ -#undef HAVE_FNMATCH - -/* Define to 1 if you have the `fork' function. */ -#undef HAVE_FORK - -/* Define if the GNU gettext() function is already present or preinstalled. */ -#undef HAVE_GETTEXT - -/* Define to 1 if you have the `gettimeofday' function. */ -#undef HAVE_GETTIMEOFDAY - -/* Define if you have the iconv() function. */ -#undef HAVE_ICONV - -/* Define to 1 if you have the header file. */ -#undef HAVE_INTTYPES_H - -/* Define to 1 if you have the `isascii' function. */ -#undef HAVE_ISASCII - -/* Define to 1 if you have the `iswprint' function. */ -#undef HAVE_ISWPRINT - -/* Define to 1 if you have the header file. */ -#undef HAVE_LIBINTL_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_LIMITS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_LOCALE_H - -/* Define to 1 if you have the `localtime_r' function. */ -#undef HAVE_LOCALTIME_R - -/* Define if you have the long long type. */ -#undef HAVE_LONG_LONG - -/* Define to 1 if you have the `mblen' function. */ -#undef HAVE_MBLEN - -/* Define to 1 if you have the `mbrlen' function. */ -#undef HAVE_MBRLEN - -/* Define to 1 if mbrtowc and mbstate_t are properly declared. */ -#undef HAVE_MBRTOWC - -/* Define to 1 if you have the `memchr' function. */ -#undef HAVE_MEMCHR - -/* Define to 1 if you have the `memcpy' function. */ -#undef HAVE_MEMCPY - -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define to 1 if you have the `mempcpy' function. */ -#undef HAVE_MEMPCPY - -/* Define to 1 if you have the `memset' function. */ -#undef HAVE_MEMSET - -/* Define to 1 if you have the `mkstemp' function. */ -#undef HAVE_MKSTEMP - -/* Define to 1 if you have the header file, and it defines `DIR'. */ -#undef HAVE_NDIR_H - -/* Define to 1 if you have the `setlocale' function. */ -#undef HAVE_SETLOCALE - -/* Define to 1 if you have the DOS-style `setmode' function. */ -#undef HAVE_SETMODE_DOS - -/* Define to 1 if you have the `sigaction' function. */ -#undef HAVE_SIGACTION - -/* Define to 1 if the system has the type `siginfo_t'. */ -#undef HAVE_SIGINFO_T - -/* Define to 1 if you have the `sigprocmask' function. */ -#undef HAVE_SIGPROCMASK - -/* Define to 1 if the system has the type `stack_t'. */ -#undef HAVE_STACK_T - -/* Define to 1 if stdbool.h conforms to C99. */ -#undef HAVE_STDBOOL_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDDEF_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the `strcasecmp' function. */ -#undef HAVE_STRCASECMP - -/* Define to 1 if you have the `strchr' function. */ -#undef HAVE_STRCHR - -/* Define to 1 if you have the `strerror' function. */ -#undef HAVE_STRERROR - -/* Define to 1 if you have the `strerror_r' function. */ -#undef HAVE_STRERROR_R - -/* Define to 1 if you have the `strftime' function. */ -#undef HAVE_STRFTIME - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if you have the `strtoul' function. */ -#undef HAVE_STRTOUL - -/* Define to 1 if you have the `strtoull' function. */ -#undef HAVE_STRTOULL - -/* Define to 1 if you have the `strtoumax' function. */ -#undef HAVE_STRTOUMAX - -/* Define to 1 if `st_blksize' is member of `struct stat'. */ -#undef HAVE_STRUCT_STAT_ST_BLKSIZE - -/* Define to 1 if `st_rdev' is member of `struct stat'. */ -#undef HAVE_STRUCT_STAT_ST_RDEV - -/* Define to 1 if `tm_zone' is member of `struct tm'. */ -#undef HAVE_STRUCT_TM_TM_ZONE - -/* Define to 1 if you have the header file, and it defines `DIR'. - */ -#undef HAVE_SYS_DIR_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_FILE_H - -/* Define to 1 if you have the header file, and it defines `DIR'. - */ -#undef HAVE_SYS_NDIR_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TIME_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define to 1 if you have that is POSIX.1 compatible. */ -#undef HAVE_SYS_WAIT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_TIME_H - -/* Define to 1 if you have the `tmpnam' function. */ -#undef HAVE_TMPNAM - -/* Define if struct tm has the tm_gmtoff member. */ -#undef HAVE_TM_GMTOFF - -/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use - `HAVE_STRUCT_TM_TM_ZONE' instead. */ -#undef HAVE_TM_ZONE - -/* Define to 1 if you don't have `tm_zone' but do have the external array - `tzname'. */ -#undef HAVE_TZNAME - -/* Define to 1 if you have the `tzset' function. */ -#undef HAVE_TZSET - -/* Define to 1 if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Define if you have the unsigned long long type. */ -#undef HAVE_UNSIGNED_LONG_LONG - -/* Define to 1 if you have the `vfork' function. */ -#undef HAVE_VFORK - -/* Define to 1 if you have the header file. */ -#undef HAVE_VFORK_H - -/* Define to 1 if you have the `vprintf' function. */ -#undef HAVE_VPRINTF - -/* Define to 1 if you have the `waitpid' function. */ -#undef HAVE_WAITPID - -/* Define to 1 if you have the header file. */ -#undef HAVE_WCHAR_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_WCTYPE_H - -/* Define to 1 if `fork' works. */ -#undef HAVE_WORKING_FORK - -/* Define to 1 if `vfork' works. */ -#undef HAVE_WORKING_VFORK - -/* Define to 1 if extending the stack slightly past the limit causes a - SIGSEGV, and an alternate stack can be established with sigaltstack, and - the signal handler is passed a context that specifies the run time stack. - This behavior is defined by POSIX 1003.1-2001 with the X/Open System - Interface (XSI) option and is a standardized way to implement a SEGV-based - stack overflow detection heuristic. */ -#undef HAVE_XSI_STACK_OVERFLOW_HEURISTIC - -/* Define to 1 if you have the `__secure_getenv' function. */ -#undef HAVE___SECURE_GETENV - -#if FILESYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR -# define ISSLASH(C) ((C) == '/' || (C) == '\\') -#else -# define ISSLASH(C) ((C) == '/') -#endif - -/* Name of package */ -#undef PACKAGE - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* Define if compiler has function prototypes */ -#undef PROTOTYPES - -/* Name of "pr" program. */ -#undef PR_PROGRAM - -/* Define to 1 to avoid alloca in the regular-expression implementation. */ -#undef REGEX_MALLOC - -/* Define as the return type of signal handlers (`int' or `void'). */ -#undef RETSIGTYPE - -/* If using the C implementation of alloca, define if you know the - direction of stack growth for your system; otherwise it will be - automatically deduced at run-time. - STACK_DIRECTION > 0 => grows toward higher addresses - STACK_DIRECTION < 0 => grows toward lower addresses - STACK_DIRECTION = 0 => direction of growth unknown */ -#undef STACK_DIRECTION - -/* Define to 1 if the `S_IS*' macros in do not work properly. */ -#undef STAT_MACROS_BROKEN - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Define to 1 if strerror_r returns char *. */ -#undef STRERROR_R_CHAR_P - -/* Define to be the nanoseconds member of struct stat's st_mtim, if it exists. - */ -#undef ST_MTIM_NSEC - -/* Define to 1 if you can safely include both and . */ -#undef TIME_WITH_SYS_TIME - -/* Define to 1 if your declares `struct tm'. */ -#undef TM_IN_SYS_TIME - -/* Version number of package */ -#undef VERSION - -/* Number of bits in a file offset, on hosts where this is settable. */ -#undef _FILE_OFFSET_BITS - -#ifndef _GNU_SOURCE -# define _GNU_SOURCE -#endif - -/* Define for large files, on AIX-style hosts. */ -#undef _LARGE_FILES - -/* Enable Solaris extensions. */ -#undef __EXTENSIONS__ - -/* Define like PROTOTYPES; this can be used by system headers. */ -#undef __PROTOTYPES - -/* Define to empty if `const' does not conform to ANSI C. */ -#undef const - -/* Define as `__inline' if that's what the C compiler calls it, or to nothing - if it is not supported. */ -#undef inline - -/* Define to widest signed type if doesn't define. */ -#undef intmax_t - -/* Define to rpl_malloc if the replacement function should be used. */ -#undef malloc - -/* Define to a type if does not define. */ -#undef mbstate_t - -/* Define to the name of the strftime replacement function. */ -#undef my_strftime - -/* Define to `int' if does not define. */ -#undef pid_t - -/* Define to `int' if does not define. */ -#undef ptrdiff_t - -/* Define to rpl_realloc if the replacement function should be used. */ -#undef realloc - -/* Define to `int' if does not define. */ -#undef ssize_t - -/* Define to widest unsigned type if doesn't define. */ -#undef uintmax_t - -/* Define as `fork' if `vfork' does not work. */ -#undef vfork diff --git a/src/bin/diffutils/config.status b/src/bin/diffutils/config.status deleted file mode 100755 index bee3cff518..0000000000 --- a/src/bin/diffutils/config.status +++ /dev/null @@ -1,1568 +0,0 @@ -#! /bin/sh -# Generated by configure. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -SHELL=${CONFIG_SHELL-/bin/sh} - -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi - -# NLS nuisances. -# Support unset when possible. -if (FOO=FOO; unset FOO) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - -(set +x; test -n "`(LANG=C; export LANG) 2>&1`") && - { $as_unset LANG || test "${LANG+set}" != set; } || - { LANG=C; export LANG; } -(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && - { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || - { LC_ALL=C; export LC_ALL; } -(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && - { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || - { LC_TIME=C; export LC_TIME; } -(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && - { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || - { LC_CTYPE=C; export LC_CTYPE; } -(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && - { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || - { LANGUAGE=C; export LANGUAGE; } -(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && - { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || - { LC_COLLATE=C; export LC_COLLATE; } -(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && - { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || - { LC_NUMERIC=C; export LC_NUMERIC; } -(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && - { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || - { LC_MESSAGES=C; export LC_MESSAGES; } - - -# Name of the executable. -as_me=`(basename "$0") 2>/dev/null || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conftest.sh - echo "exit 0" >>conftest.sh - chmod +x conftest.sh - if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conftest.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 -echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | - sed ' - N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, - t loop - s,-$,, - s,^['$as_cr_digits']*\n,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 -echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } - -exec 6>&1 - -# Open the log real soon, to keep \$[0] and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. Logging --version etc. is OK. -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX -} >&5 -cat >&5 <<_CSEOF - -This file was extended by GNU diffutils $as_me 2.8.1, which was -generated by GNU Autoconf 2.53. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -_CSEOF -echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 -echo >&5 -config_files=" Makefile doc/Makefile lib/Makefile lib/posix/Makefile man/Makefile m4/Makefile ms/Makefile po/Makefile.in src/Makefile" -config_headers=" config.h:config.hin" -config_links=" lib/fnmatch.h:lib/fnmatch.hin lib/regex.h:lib/regex.hin" -config_commands=" depfiles default-1 default" - -ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. - -Usage: $0 [OPTIONS] [FILE]... - - -h, --help print this help, then exit - -V, --version print version number, then exit - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration links: -$config_links - -Configuration commands: -$config_commands - -Report bugs to ." -ac_cs_version="\ -GNU diffutils config.status 2.8.1 -configured by ./configure, generated by GNU Autoconf 2.53, - with options \"\" - -Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." -srcdir=. -INSTALL="/bin/install -c" -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` - shift - set dummy "$ac_option" "$ac_optarg" ${1+"$@"} - shift - ;; - -*);; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_need_defaults=false;; - esac - - case $1 in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running /bin/sh ./configure " " --no-create --no-recursion" - exec /bin/sh ./configure --no-create --no-recursion ;; - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:$LINENO: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - shift - CONFIG_FILES="$CONFIG_FILES $1" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - shift - CONFIG_HEADERS="$CONFIG_HEADERS $1" - ac_need_defaults=false;; - - # This is an error. - -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; } ;; - - *) ac_config_targets="$ac_config_targets $1" ;; - - esac - shift -done - -# -# INIT-COMMANDS section. -# - -AMDEP_TRUE="" ac_aux_dir="config" -# Capture the value of obsolete because we need it to compute - # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it - # from automake. - eval 'ALL_LINGUAS''=""' - # Capture the value of LINGUAS because we need it to compute CATALOGS. - LINGUAS="%UNSET%" - - -for ac_config_target in $ac_config_targets -do - case "$ac_config_target" in - # Handling of arguments. - "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; - "lib/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; - "lib/posix/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/posix/Makefile" ;; - "man/Makefile" ) CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; - "m4/Makefile" ) CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;; - "ms/Makefile" ) CONFIG_FILES="$CONFIG_FILES ms/Makefile" ;; - "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; - "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; - "lib/fnmatch.h" ) CONFIG_LINKS="$CONFIG_LINKS lib/fnmatch.h:lib/fnmatch.hin" ;; - "lib/regex.h" ) CONFIG_LINKS="$CONFIG_LINKS lib/regex.h:lib/regex.hin" ;; - "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; - "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; - "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.hin" ;; - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; - esac -done - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_LINKS+set}" = set || CONFIG_LINKS=$config_links - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Create a temporary directory, and hook for its removal unless debugging. -$debug || -{ - trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} - -# Create a (secure) tmp directory for tmp files. -: ${TMPDIR=/tmp} -{ - tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=$TMPDIR/cs$$-$RANDOM - (umask 077 && mkdir $tmp) -} || -{ - echo "$me: cannot create a temporary directory in $TMPDIR" >&2 - { (exit 1); exit 1; } -} - - -# -# CONFIG_FILES section. -# - -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h -if test -n "$CONFIG_FILES"; then - # Protect against being on the right side of a sed subst in config.status. - sed 's/,@/@@/; s/@,/@@/; s/,;t t$/@;t t/; /@;t t$/s/[\\&,]/\\&/g; - s/@@/,@/; s/@@/@,/; s/@;t t$/,;t t/' >$tmp/subs.sed <<\CEOF -s,@SHELL@,/bin/sh,;t t -s,@PATH_SEPARATOR@,:,;t t -s,@PACKAGE_NAME@,GNU diffutils,;t t -s,@PACKAGE_TARNAME@,diffutils,;t t -s,@PACKAGE_VERSION@,2.8.1,;t t -s,@PACKAGE_STRING@,GNU diffutils 2.8.1,;t t -s,@PACKAGE_BUGREPORT@,bug-gnu-utils@gnu.org,;t t -s,@exec_prefix@,${prefix},;t t -s,@prefix@,/usr/local,;t t -s,@program_transform_name@,s,x,x,,;t t -s,@bindir@,${exec_prefix}/bin,;t t -s,@sbindir@,${exec_prefix}/sbin,;t t -s,@libexecdir@,${exec_prefix}/libexec,;t t -s,@datadir@,${prefix}/share,;t t -s,@sysconfdir@,${prefix}/etc,;t t -s,@sharedstatedir@,${prefix}/com,;t t -s,@localstatedir@,${prefix}/var,;t t -s,@libdir@,${exec_prefix}/lib,;t t -s,@includedir@,${prefix}/include,;t t -s,@oldincludedir@,/usr/include,;t t -s,@infodir@,${prefix}/info,;t t -s,@mandir@,${prefix}/man,;t t -s,@build_alias@,,;t t -s,@host_alias@,,;t t -s,@target_alias@,,;t t -s,@DEFS@,-DHAVE_CONFIG_H,;t t -s,@ECHO_C@,,;t t -s,@ECHO_N@,-n,;t t -s,@ECHO_T@,,;t t -s,@LIBS@,,;t t -s,@INSTALL_PROGRAM@,${INSTALL},;t t -s,@INSTALL_SCRIPT@,${INSTALL},;t t -s,@INSTALL_DATA@,${INSTALL} -m 644,;t t -s,@PACKAGE@,diffutils,;t t -s,@VERSION@,2.8.1,;t t -s,@ACLOCAL@,${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run aclocal-1.6,;t t -s,@AUTOCONF@,${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoconf,;t t -s,@AUTOMAKE@,${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run automake-1.6,;t t -s,@AUTOHEADER@,${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoheader,;t t -s,@MAKEINFO@,${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run makeinfo,;t t -s,@AMTAR@,${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run tar,;t t -s,@install_sh@,/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/install-sh,;t t -s,@STRIP@,,;t t -s,@ac_ct_STRIP@,,;t t -s,@INSTALL_STRIP_PROGRAM@,${SHELL} $(install_sh) -c -s,;t t -s,@AWK@,gawk,;t t -s,@SET_MAKE@,,;t t -s,@CC@,gcc,;t t -s,@CFLAGS@,-g -O2,;t t -s,@LDFLAGS@,,;t t -s,@CPPFLAGS@,,;t t -s,@ac_ct_CC@,gcc,;t t -s,@EXEEXT@,,;t t -s,@OBJEXT@,o,;t t -s,@DEPDIR@,.deps,;t t -s,@am__include@,include,;t t -s,@am__quote@,,;t t -s,@AMDEP_TRUE@,,;t t -s,@AMDEP_FALSE@,#,;t t -s,@AMDEPBACKSLASH@,\,;t t -s,@CCDEPMODE@,depmode=gcc,;t t -s,@CPP@,gcc -E,;t t -s,@HELP2MAN@,${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run help2man,;t t -s,@RANLIB@,ranlib,;t t -s,@ac_ct_RANLIB@,ranlib,;t t -s,@PR_PROGRAM@,/bin/pr,;t t -s,@MKINSTALLDIRS@,config/mkinstalldirs,;t t -s,@MSGFMT@,:,;t t -s,@GMSGFMT@,:,;t t -s,@XGETTEXT@,AWK='gawk' $(SHELL) $(top_srcdir)/exgettext :,;t t -s,@MSGMERGE@,:,;t t -s,@build@,i586-pc-beos,;t t -s,@build_cpu@,i586,;t t -s,@build_vendor@,pc,;t t -s,@build_os@,beos,;t t -s,@host@,i586-pc-beos,;t t -s,@host_cpu@,i586,;t t -s,@host_vendor@,pc,;t t -s,@host_os@,beos,;t t -s,@USE_NLS@,no,;t t -s,@LIBICONV@,,;t t -s,@LTLIBICONV@,,;t t -s,@INTLLIBS@,,;t t -s,@LIBINTL@,,;t t -s,@LTLIBINTL@,,;t t -s,@POSUB@,,;t t -s,@LIBOBJS@, fnmatch.o regex.o,;t t -s,@ALLOCA@,,;t t -s,@U@,,;t t -s,@ANSI2KNR@,,;t t -s,@LIB_CLOCK_GETTIME@,,;t t -CEOF - - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # is no need to browse any of the substitutions). - # These are the two extra sed commands mentioned above. - (echo ':t - /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat - fi -fi # test -n "$CONFIG_FILES" - -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac -# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be -# absolute. -ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` -ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` -ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` -ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` - - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_builddir$INSTALL ;; - esac - - if test x"$ac_file" != x-; then - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - configure_input= - else - configure_input="$ac_file. " - fi - configure_input=$configure_input"Generated from `echo $ac_file_in | - sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo $f;; - *) # Relative - if test -f "$f"; then - # Build tree - echo $f - elif test -f "$srcdir/$f"; then - # Source tree - echo $srcdir/$f - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - sed "/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -} - -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s,@configure_input@,$configure_input,;t t -s,@srcdir@,$ac_srcdir,;t t -s,@abs_srcdir@,$ac_abs_srcdir,;t t -s,@top_srcdir@,$ac_top_srcdir,;t t -s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t -s,@builddir@,$ac_builddir,;t t -s,@abs_builddir@,$ac_abs_builddir,;t t -s,@top_builddir@,$ac_top_builddir,;t t -s,@abs_top_builddir@,$ac_abs_top_builddir,;t t -s,@INSTALL@,$ac_INSTALL,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi - -done - -# -# CONFIG_HEADER section. -# - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='[ ].*$,\1#\2' -ac_dC=' ' -ac_dD=',;t' -# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='$,\1#\2define\3' -ac_uC=' ' -ac_uD=',;t' - -for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo $f;; - *) # Relative - if test -f "$f"; then - # Build tree - echo $f - elif test -f "$srcdir/$f"; then - # Source tree - echo $srcdir/$f - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - # Remove the trailing spaces. - sed 's/[ ]*$//' $ac_file_inputs >$tmp/in - - # Handle all the #define templates only if necessary. - if egrep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then - # If there are no defines, we may have an empty if/fi - : - cat >$tmp/defines.sed <$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in - - cat >$tmp/defines.sed <$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in - - cat >$tmp/defines.sed <$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in - - cat >$tmp/defines.sed <$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in - - fi # egrep - - # Handle all the #undef templates - cat >$tmp/undefs.sed <$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in - - cat >$tmp/undefs.sed <$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in - - cat >$tmp/undefs.sed <$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in - - cat >$tmp/undefs.sed <$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - echo "/* Generated by configure. */" >$tmp/config.h - else - echo "/* $ac_file. Generated by configure. */" >$tmp/config.h - fi - cat $tmp/in >>$tmp/config.h - rm -f $tmp/in - if test x"$ac_file" != x-; then - if cmp -s $ac_file $tmp/config.h 2>/dev/null; then - { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 -echo "$as_me: $ac_file is unchanged" >&6;} - else - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - rm -f $ac_file - mv $tmp/config.h $ac_file - fi - else - cat $tmp/config.h - rm -f $tmp/config.h - fi - # Run the commands associated with the file. - case $ac_file in - config.h ) # update the timestamp -echo 'timestamp for config.h:config.hin' >"./stamp-h1" - ;; - esac -done - -# -# CONFIG_LINKS section. -# - -for ac_file in : $CONFIG_LINKS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` - - { echo "$as_me:$LINENO: linking $srcdir/$ac_source to $ac_dest" >&5 -echo "$as_me: linking $srcdir/$ac_source to $ac_dest" >&6;} - - if test ! -r $srcdir/$ac_source; then - { { echo "$as_me:$LINENO: error: $srcdir/$ac_source: file not found" >&5 -echo "$as_me: error: $srcdir/$ac_source: file not found" >&2;} - { (exit 1); exit 1; }; } - fi - rm -f $ac_dest - - # Make relative symlinks. - ac_dest_dir=`(dirname "$ac_dest") 2>/dev/null || -$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_dest" : 'X\(//\)[^/]' \| \ - X"$ac_dest" : 'X\(//\)$' \| \ - X"$ac_dest" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_dest" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dest_dir" - else - as_dir="$ac_dest_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dest_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dest_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dest_dir" != .; then - ac_dir_suffix=/`echo "$ac_dest_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac -# Don't blindly perform a `cd "$ac_dest_dir"/$ac_foo && pwd` since $ac_foo can be -# absolute. -ac_abs_builddir=`cd "$ac_dest_dir" && cd $ac_builddir && pwd` -ac_abs_top_builddir=`cd "$ac_dest_dir" && cd $ac_top_builddir && pwd` -ac_abs_srcdir=`cd "$ac_dest_dir" && cd $ac_srcdir && pwd` -ac_abs_top_srcdir=`cd "$ac_dest_dir" && cd $ac_top_srcdir && pwd` - - - case $srcdir in - [\\/$]* | ?:[\\/]* ) ac_rel_source=$srcdir/$ac_source ;; - *) ac_rel_source=$ac_top_builddir$srcdir/$ac_source ;; - esac - - # Make a symlink if possible; otherwise try a hard link. - ln -s $ac_rel_source $ac_dest 2>/dev/null || - ln $srcdir/$ac_source $ac_dest || - { { echo "$as_me:$LINENO: error: cannot link $ac_dest to $srcdir/$ac_source" >&5 -echo "$as_me: error: cannot link $ac_dest to $srcdir/$ac_source" >&2;} - { (exit 1); exit 1; }; } -done - -# -# CONFIG_COMMANDS section. -# -for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_dir=`(dirname "$ac_dest") 2>/dev/null || -$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_dest" : 'X\(//\)[^/]' \| \ - X"$ac_dest" : 'X\(//\)$' \| \ - X"$ac_dest" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_dest" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac -# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be -# absolute. -ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` -ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` -ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` -ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` - - - { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 -echo "$as_me: executing $ac_dest commands" >&6;} - case $ac_dest in - depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - if (sed 1q $mf | fgrep 'generated by automake') > /dev/null 2>&1; then - dirpart=`(dirname "$mf") 2>/dev/null || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - else - continue - fi - grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue - # Extract the definition of DEP_FILES from the Makefile without - # running `make'. - DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` - test -z "$DEPDIR" && continue - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n -e '/^U = / s///p' < "$mf"` - test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" - # We invoke sed twice because it is the simplest approach to - # changing $(DEPDIR) to its actual value in the expansion. - for file in `sed -n -e ' - /^DEP_FILES = .*\\\\$/ { - s/^DEP_FILES = // - :loop - s/\\\\$// - p - n - /\\\\$/ b loop - p - } - /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`(dirname "$file") 2>/dev/null || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p $dirpart/$fdir - else - as_dir=$dirpart/$fdir - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 -echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} - { (exit 1); exit 1; }; }; } - - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done -done - ;; - default-1 ) - for ac_file in $CONFIG_FILES; do - # Support "outfile[:infile[:infile...]]" - case "$ac_file" in - *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - esac - # PO directories have a Makefile.in generated from Makefile.in.in. - case "$ac_file" in */Makefile.in) - # Adjust a relative srcdir. - ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" - ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - # In autoconf-2.13 it is called $ac_given_srcdir. - # In autoconf-2.50 it is called $srcdir. - test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" - case "$ac_given_srcdir" in - .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then - rm -f "$ac_dir/POTFILES" - test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" - cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" - # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend - # on $ac_dir but don't depend on user-specified configuration - # parameters. - if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then - # The LINGUAS file contains the set of available languages. - if test -n "$ALL_LINGUAS"; then - test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" - fi - ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` - # Hide the ALL_LINGUAS assigment from automake. - eval 'ALL_LINGUAS''=$ALL_LINGUAS_' - fi - case "$ac_given_srcdir" in - .) srcdirpre= ;; - *) srcdirpre='$(srcdir)/' ;; - esac - POFILES= - GMOFILES= - UPDATEPOFILES= - DUMMYPOFILES= - for lang in $ALL_LINGUAS; do - POFILES="$POFILES $srcdirpre$lang.po" - GMOFILES="$GMOFILES $srcdirpre$lang.gmo" - UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" - DUMMYPOFILES="$DUMMYPOFILES $lang.nop" - done - # CATALOGS depends on both $ac_dir and the user's LINGUAS - # environment variable. - INST_LINGUAS= - if test -n "$ALL_LINGUAS"; then - for presentlang in $ALL_LINGUAS; do - useit=no - if test "%UNSET%" != "$LINGUAS"; then - desiredlanguages="$LINGUAS" - else - desiredlanguages="$ALL_LINGUAS" - fi - for desiredlang in $desiredlanguages; do - # Use the presentlang catalog if desiredlang is - # a. equal to presentlang, or - # b. a variant of presentlang (because in this case, - # presentlang can be used as a fallback for messages - # which are not translated in the desiredlang catalog). - case "$desiredlang" in - "$presentlang"*) useit=yes;; - esac - done - if test $useit = yes; then - INST_LINGUAS="$INST_LINGUAS $presentlang" - fi - done - fi - CATALOGS= - if test -n "$INST_LINGUAS"; then - for lang in $INST_LINGUAS; do - CATALOGS="$CATALOGS $lang.gmo" - done - fi - test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" - sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" - for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do - if test -f "$f"; then - case "$f" in - *.orig | *.bak | *~) ;; - *) cat "$f" >> "$ac_dir/Makefile" ;; - esac - fi - done - fi - ;; - esac - done ;; - default ) date > stamp-h ;; - esac -done - -{ (exit 0); exit 0; } diff --git a/src/bin/diffutils/config/config.guess b/src/bin/diffutils/config/config.guess deleted file mode 100644 index ed2e03b7f2..0000000000 --- a/src/bin/diffutils/config/config.guess +++ /dev/null @@ -1,1321 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002 Free Software Foundation, Inc. - -timestamp='2002-03-20' - -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Originally written by Per Bothner . -# Please send patches to . Submit a context -# diff and a properly formatted ChangeLog entry. -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. -# -# The plan is that this can be called by configure scripts if you -# don't specify an explicit build system type. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; - --version | -v ) - echo "$version" ; exit 0 ;; - --help | --h* | -h ) - echo "$usage"; exit 0 ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - - -dummy=dummy-$$ -trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15 - -# CC_FOR_BUILD -- compiler used by this script. -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int dummy(){}" > $dummy.c ; - for c in cc gcc c89 c99 ; do - ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; - if test $? = 0 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - rm -f $dummy.c $dummy.o $dummy.rel ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac' - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # - # Note: NetBSD doesn't particularly care about the vendor - # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` - case "${UNAME_MACHINE_ARCH}" in - arm*) machine=arm-unknown ;; - sh3el) machine=shl-unknown ;; - sh3eb) machine=sh-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; - esac - # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep __ELF__ >/dev/null - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - ;; - *) - os=netbsd - ;; - esac - # The OS release - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit 0 ;; - amiga:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - arc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - hp300:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mac68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - macppc:OpenBSD:*:*) - echo powerpc-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme88k:OpenBSD:*:*) - echo m88k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvmeppc:OpenBSD:*:*) - echo powerpc-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - pmax:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sgi:OpenBSD:*:*) - echo mipseb-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sun3:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - wgrisc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - *:OpenBSD:*:*) - echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - alpha:OSF1:*:*) - if test $UNAME_RELEASE = "V4.0"; then - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - fi - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - cat <$dummy.s - .data -\$Lformat: - .byte 37,100,45,37,120,10,0 # "%d-%x\n" - - .text - .globl main - .align 4 - .ent main -main: - .frame \$30,16,\$26,0 - ldgp \$29,0(\$27) - .prologue 1 - .long 0x47e03d80 # implver \$0 - lda \$2,-1 - .long 0x47e20c21 # amask \$2,\$1 - lda \$16,\$Lformat - mov \$0,\$17 - not \$1,\$18 - jsr \$26,printf - ldgp \$29,0(\$26) - mov 0,\$16 - jsr \$26,exit - .end main -EOF - eval $set_cc_for_build - $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null - if test "$?" = 0 ; then - case `./$dummy` in - 0-0) - UNAME_MACHINE="alpha" - ;; - 1-0) - UNAME_MACHINE="alphaev5" - ;; - 1-1) - UNAME_MACHINE="alphaev56" - ;; - 1-101) - UNAME_MACHINE="alphapca56" - ;; - 2-303) - UNAME_MACHINE="alphaev6" - ;; - 2-307) - UNAME_MACHINE="alphaev67" - ;; - 2-1307) - UNAME_MACHINE="alphaev68" - ;; - esac - fi - rm -f $dummy.s $dummy - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit 0 ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit 0 ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit 0 ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit 0;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit 0 ;; - *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos - exit 0 ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit 0 ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit 0;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit 0;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit 0 ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit 0 ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - i86pc:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit 0 ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit 0 ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit 0 ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit 0 ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit 0 ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit 0 ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit 0 ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit 0 ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit 0 ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit 0 ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD $dummy.c -o $dummy \ - && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ - && rm -f $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - echo mips-mips-riscos${UNAME_RELEASE} - exit 0 ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit 0 ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit 0 ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit 0 ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit 0 ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit 0 ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi - exit 0 ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit 0 ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit 0 ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit 0 ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit 0 ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit 0 ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix - exit 0 ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit 0 ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - echo rs6000-ibm-aix3.2.5 - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit 0 ;; - *:AIX:*:[45]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit 0 ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit 0 ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit 0 ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit 0 ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit 0 ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit 0 ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit 0 ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit 0 ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include - #include - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`./$dummy` - if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi - rm -f $dummy.c $dummy - fi ;; - esac - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit 0 ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit 0 ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - echo unknown-hitachi-hiuxwe2 - exit 0 ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit 0 ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit 0 ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit 0 ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit 0 ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit 0 ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit 0 ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit 0 ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit 0 ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit 0 ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit 0 ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit 0 ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*T3D:*:*:*) - echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit 0 ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit 0 ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; - *:FreeBSD:*:*) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit 0 ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit 0 ;; - i*:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit 0 ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit 0 ;; - x86:Interix*:3*) - echo i386-pc-interix3 - exit 0 ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i386-pc-interix - exit 0 ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit 0 ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit 0 ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - *:GNU:*:*) - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit 0 ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit 0 ;; - arm*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - mips:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef mips - #undef mipsel - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mipsel - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips - #else - CPU= - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` - rm -f $dummy.c - test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0 - ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu - exit 0 ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu - exit 0 ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} - exit 0 ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; - esac - exit 0 ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu - exit 0 ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux - exit 0 ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - x86_64:Linux:*:*) - echo x86_64-unknown-linux-gnu - exit 0 ;; - i*86:Linux:*:*) - # The BFD linker knows what the default object file format is, so - # first see if it will tell us. cd to the root directory to prevent - # problems with other programs or directories called `ld' in the path. - # Set LC_ALL=C to ensure ld outputs messages in English. - ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ - | sed -ne '/supported targets:/!d - s/[ ][ ]*/ /g - s/.*supported targets: *// - s/ .*// - p'` - case "$ld_supported_targets" in - elf32-i386) - TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" - ;; - a.out-i386-linux) - echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit 0 ;; - coff-i386) - echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit 0 ;; - "") - # Either a pre-BFD a.out linker (linux-gnuoldld) or - # one that does not give us useful --help. - echo "${UNAME_MACHINE}-pc-linux-gnuoldld" - exit 0 ;; - esac - # Determine whether the default compiler is a.out or elf - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - #ifdef __ELF__ - # ifdef __GLIBC__ - # if __GLIBC__ >= 2 - LIBC=gnu - # else - LIBC=gnulibc1 - # endif - # else - LIBC=gnulibc1 - # endif - #else - #ifdef __INTEL_COMPILER - LIBC=gnu - #else - LIBC=gnuaout - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` - rm -f $dummy.c - test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 - test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 - ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 - exit 0 ;; - i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit 0 ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit 0 ;; - i*86:*:5:[78]*) - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit 0 ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` - (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit 0 ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit 0 ;; - pc:*:*:*) - # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i386. - echo i386-pc-msdosdjgpp - exit 0 ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit 0 ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit 0 ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit 0 ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit 0 ;; - M68*:*:R3V[567]*:*) - test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; - 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4.3${OS_REL} && exit 0 - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4 && exit 0 ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit 0 ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit 0 ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit 0 ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit 0 ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit 0 ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit 0 ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit 0 ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit 0 ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit 0 ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit 0 ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit 0 ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit 0 ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit 0 ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit 0 ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit 0 ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit 0 ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit 0 ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; - *:Darwin:*:*) - echo `uname -p`-apple-darwin${UNAME_RELEASE} - exit 0 ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then - UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit 0 ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit 0 ;; - NSR-[GKLNPTVW]:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit 0 ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit 0 ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit 0 ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit 0 ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 - # operating systems. - if test "$cputype" = "386"; then - UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit 0 ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit 0 ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit 0 ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex - exit 0 ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit 0 ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit 0 ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit 0 ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit 0 ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit 0 ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit 0 ;; -esac - -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -eval $set_cc_for_build -cat >$dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0 -rm -f $dummy.c $dummy - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit 0 ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - c34*) - echo c34-convex-bsd - exit 0 ;; - c38*) - echo c38-convex-bsd - exit 0 ;; - c4*) - echo c4-convex-bsd - exit 0 ;; - esac -fi - -cat >&2 < in order to provide the needed -information to handle your system. - -config.guess timestamp = $timestamp - -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/src/bin/diffutils/config/config.rpath b/src/bin/diffutils/config/config.rpath deleted file mode 100755 index 5ead7586a7..0000000000 --- a/src/bin/diffutils/config/config.rpath +++ /dev/null @@ -1,513 +0,0 @@ -#! /bin/sh -# Output a system dependent set of variables, describing how to set the -# run time search path of shared libraries in an executable. -# -# Copyright 1996-2002 Free Software Foundation, Inc. -# Taken from GNU libtool, 2001 -# Originally by Gordon Matzigkeit , 1996 -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. -# -# The first argument passed to this file is the canonical host specification, -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld -# should be set by the caller. -# -# The set of defined variables is at the end of this script. - -# All known linkers require a `.a' archive for static linking (except M$VC, -# which needs '.lib'). -libext=a -shlibext= - -host="$1" -host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - -wl= -if test "$GCC" = yes; then - wl='-Wl,' -else - case "$host_os" in - aix3* | aix4* | aix5*) - wl='-Wl,' - ;; - hpux9* | hpux10* | hpux11*) - wl='-Wl,' - ;; - irix5* | irix6*) - wl='-Wl,' - ;; - linux*) - echo '__INTEL_COMPILER' > conftest.$ac_ext - if $CC -E conftest.$ac_ext >/dev/null | grep __INTEL_COMPILER >/dev/null - then - : - else - # Intel icc - wl='-Qoption,ld,' - fi - ;; - osf3* | osf4* | osf5*) - wl='-Wl,' - ;; - solaris*) - wl='-Wl,' - ;; - sunos4*) - wl='-Qoption ld ' - ;; - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - if test "x$host_vendor" = xsni; then - wl='-LD' - else - wl='-Wl,' - fi - ;; - esac -fi - -hardcode_libdir_flag_spec= -hardcode_libdir_separator= -hardcode_direct=no -hardcode_minus_L=no - -case "$host_os" in - cygwin* | mingw* | pw32*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - openbsd*) - with_gnu_ld=no - ;; -esac - -ld_shlibs=yes -if test "$with_gnu_ld" = yes; then - case "$host_os" in - aix3* | aix4* | aix5*) - # On AIX, the GNU linker is very broken - ld_shlibs=no - ;; - amigaos*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - # Samuel A. Falvo II reports - # that the semantics of dynamic libraries on AmigaOS, at least up - # to version 4, is to share data among multiple programs linked - # with the same dynamic library. Since this doesn't match the - # behavior of shared libraries on other platforms, we can use - # them. - ld_shlibs=no - ;; - beos*) - if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - : - else - ld_shlibs=no - fi - ;; - cygwin* | mingw* | pw32*) - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - ;; - solaris* | sysv5*) - if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - : - else - ld_shlibs=no - fi - ;; - sunos4*) - hardcode_direct=yes - ;; - *) - if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - : - else - ld_shlibs=no - fi - ;; - esac - if test "$ld_shlibs" = yes; then - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - fi -else - case "$host_os" in - aix3*) - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$GCC" = yes; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - aix4* | aix5*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - else - aix_use_runtimelinking=no - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix5*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - esac - fi - hardcode_direct=yes - hardcode_libdir_separator=':' - if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && \ - strings "$collect2name" | grep resolve_lib_name >/dev/null - then - # We have reworked collect2 - hardcode_direct=yes - else - # We have old collect2 - hardcode_direct=unsupported - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - esac - fi - if test "$aix_use_runtimelinking" = yes; then - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' - else - hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' - fi - fi - ;; - amigaos*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - # see comment about different semantics on the GNU ld section - ld_shlibs=no - ;; - cygwin* | mingw* | pw32*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec=' ' - libext=lib - ;; - darwin* | rhapsody*) - hardcode_direct=yes - ;; - freebsd1*) - ld_shlibs=no - ;; - freebsd2.2*) - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - ;; - freebsd2*) - hardcode_direct=yes - hardcode_minus_L=yes - ;; - freebsd*) - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - ;; - hpux9* | hpux10* | hpux11*) - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_minus_L=yes # Not in the search PATH, but as the default - # location of the library. - ;; - irix5* | irix6*) - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - netbsd*) - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - ;; - newsos6) - hardcode_direct=yes - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - openbsd*) - hardcode_direct=yes - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - else - case "$host_os" in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac - fi - ;; - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - osf3*) - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - osf4* | osf5*) - if test "$GCC" = yes; then - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - else - # Both cc and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - hardcode_libdir_separator=: - ;; - sco3.2v5*) - ;; - solaris*) - hardcode_libdir_flag_spec='-R$libdir' - ;; - sunos4*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - ;; - sysv4) - if test "x$host_vendor" = xsno; then - hardcode_direct=yes # is this really true??? - else - hardcode_direct=no # Motorola manual says yes, but my tests say they lie - fi - ;; - sysv4.3*) - ;; - sysv5*) - hardcode_libdir_flag_spec= - ;; - uts4*) - hardcode_libdir_flag_spec='-L$libdir' - ;; - dgux*) - hardcode_libdir_flag_spec='-L$libdir' - ;; - sysv4*MP*) - if test -d /usr/nec; then - ld_shlibs=yes - fi - ;; - sysv4.2uw2*) - hardcode_direct=yes - hardcode_minus_L=no - ;; - sysv5uw7* | unixware7*) - ;; - *) - ld_shlibs=no - ;; - esac -fi - -# Check dynamic linker characteristics -libname_spec='lib$name' -sys_lib_dlsearch_path_spec="/lib /usr/lib" -sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -case "$host_os" in - aix3*) - shlibext=so - ;; - aix4* | aix5*) - shlibext=so - ;; - amigaos*) - shlibext=ixlibrary - ;; - beos*) - shlibext=so - ;; - bsdi4*) - shlibext=so - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - ;; - cygwin* | mingw* | pw32*) - case $GCC,$host_os in - yes,cygwin*) - shlibext=dll.a - ;; - yes,mingw*) - shlibext=dll - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"` - ;; - yes,pw32*) - shlibext=dll - ;; - *) - shlibext=dll - ;; - esac - ;; - darwin* | rhapsody*) - shlibext=dylib - ;; - freebsd1*) - ;; - freebsd*) - shlibext=so - ;; - gnu*) - shlibext=so - ;; - hpux9* | hpux10* | hpux11*) - shlibext=sl - ;; - irix5* | irix6*) - shlibext=so - case "$host_os" in - irix5*) - libsuff= shlibsuff= - ;; - *) - case $LD in - *-32|*"-32 ") libsuff= shlibsuff= ;; - *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 ;; - *-64|*"-64 ") libsuff=64 shlibsuff=64 ;; - *) libsuff= shlibsuff= ;; - esac - ;; - esac - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - ;; - linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) - ;; - linux-gnu*) - shlibext=so - ;; - netbsd*) - shlibext=so - ;; - newsos6) - shlibext=so - ;; - openbsd*) - shlibext=so - ;; - os2*) - libname_spec='$name' - shlibext=dll - ;; - osf3* | osf4* | osf5*) - shlibext=so - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - sco3.2v5*) - shlibext=so - ;; - solaris*) - shlibext=so - ;; - sunos4*) - shlibext=so - ;; - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - shlibext=so - case "$host_vendor" in - motorola) - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - uts4*) - shlibext=so - ;; - dgux*) - shlibext=so - ;; - sysv4*MP*) - if test -d /usr/nec; then - shlibext=so - fi - ;; -esac - -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' -escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` -escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` -escaped_sys_lib_search_path_spec=`echo "X$sys_lib_search_path_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` -escaped_sys_lib_dlsearch_path_spec=`echo "X$sys_lib_dlsearch_path_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` - -sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <. Submit a context -# diff and a properly formatted ChangeLog entry. -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.sub ($timestamp) - -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; - --version | -v ) - echo "$version" ; exit 0 ;; - --help | --h* | -h ) - echo "$usage"; exit 0 ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit 0;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis) - os= - basic_machine=$1 - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ - | c4x | clipper \ - | d10v | d30v | dsp16xx \ - | fr30 \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | i370 | i860 | i960 | ia64 \ - | m32r | m68000 | m68k | m88k | mcore \ - | mips | mips16 | mips64 | mips64el | mips64orion | mips64orionel \ - | mips64vr4100 | mips64vr4100el | mips64vr4300 \ - | mips64vr4300el | mips64vr5000 | mips64vr5000el \ - | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \ - | mipsisa32 | mipsisa64 \ - | mn10200 | mn10300 \ - | ns16k | ns32k \ - | openrisc | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ - | pyramid \ - | sh | sh[34] | sh[34]eb | shbe | shle | sh64 \ - | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ - | strongarm \ - | tahoe | thumb | tic80 | tron \ - | v850 | v850e \ - | we32k \ - | x86 | xscale | xstormy16 | xtensa \ - | z8k) - basic_machine=$basic_machine-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12) - # Motorola 68HC11/12. - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armv*-* \ - | avr-* \ - | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c54x-* \ - | clipper-* | cydra-* \ - | d10v-* | d30v-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fr30-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | m32r-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | mcore-* \ - | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \ - | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \ - | mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ - | pyramid-* \ - | romp-* | rs6000-* \ - | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* | sh64-* \ - | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ - | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ - | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \ - | v850-* | v850e-* | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ - | xtensa-* \ - | ymp-* \ - | z8k-*) - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - crds | unos) - basic_machine=m68k-crds - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - mingw32) - basic_machine=i386-pc - os=-mingw32 - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - mmix*) - basic_machine=mmix-knuth - os=-mmixware - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - or32 | or32-*) - basic_machine=or32-unknown - os=-coff - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon) - basic_machine=i686-pc - ;; - pentiumii | pentium2) - basic_machine=i686-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc) basic_machine=powerpc-unknown - ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3d) - basic_machine=alpha-cray - os=-unicos - ;; - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; - tic54x | c54x*) - basic_machine=tic54x-unknown - os=-coff - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - windows32) - basic_machine=i386-pc - os=-windows32-msvcrt - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - romp) - basic_machine=romp-ibm - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh3 | sh4 | sh3eb | sh4eb) - basic_machine=sh-unknown - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparc | sparcv9 | sparcv9b) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - c4x*) - basic_machine=c4x-none - os=-coff - ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ - | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto*) - os=-nto-qnx - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -atheos*) - os=-atheos - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -nova*) - os=-rtmk-nova - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 - ;; - m68*-cisco) - os=-aout - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - or32-*) - os=-coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-ibm) - os=-aix - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -vxsim* | -vxworks*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit 0 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/src/bin/diffutils/config/depcomp b/src/bin/diffutils/config/depcomp deleted file mode 100755 index 368e3be93e..0000000000 --- a/src/bin/diffutils/config/depcomp +++ /dev/null @@ -1,436 +0,0 @@ -#! /bin/sh - -# depcomp - compile a program generating dependencies as side-effects -# Copyright 1999, 2000 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Originally written by Alexandre Oliva . - -if test -z "$depmode" || test -z "$source" || test -z "$object"; then - echo "depcomp: Variables source, object and depmode must be set" 1>&2 - exit 1 -fi -# `libtool' can also be set to `yes' or `no'. - -if test -z "$depfile"; then - base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` - dir=`echo "$object" | sed 's,/.*$,/,'` - if test "$dir" = "$object"; then - dir= - fi - # FIXME: should be _deps on DOS. - depfile="$dir.deps/$base" -fi - -tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} - -rm -f "$tmpdepfile" - -# Some modes work just like other modes, but use different flags. We -# parameterize here, but still list the modes in the big case below, -# to make depend.m4 easier to write. Note that we *cannot* use a case -# here, because this file can only contain one case statement. -if test "$depmode" = hp; then - # HP compiler uses -M and no extra arg. - gccflag=-M - depmode=gcc -fi - -if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout -fi - -case "$depmode" in -gcc3) -## gcc 3 implements dependency tracking that does exactly what -## we want. Yay! Note: for some reason libtool 1.4 doesn't like -## it if -MD -MP comes after the -MF stuff. Hmm. - "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - mv "$tmpdepfile" "$depfile" - ;; - -gcc) -## There are various ways to get dependency output from gcc. Here's -## why we pick this rather obscure method: -## - Don't want to use -MD because we'd like the dependencies to end -## up in a subdir. Having to rename by hand is ugly. -## (We might end up doing this anyway to support other compilers.) -## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). -## - Using -M directly means running the compiler twice (even worse -## than renaming). - if test -z "$gccflag"; then - gccflag=-MD, - fi - "$@" -Wp,"$gccflag$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -## The second -e expression handles DOS-style file names with drive letters. - sed -e 's/^[^:]*: / /' \ - -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the `deleted header file' problem. -## The problem is that when a header file which appears in a .P file -## is deleted, the dependency causes make to die (because there is -## typically no way to rebuild the header). We avoid this by adding -## dummy dependencies for each header file. Too bad gcc doesn't do -## this for us directly. - tr ' ' ' -' < "$tmpdepfile" | -## Some versions of gcc put a space before the `:'. On the theory -## that the space means something, we add a space to the output as -## well. -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -sgi) - if test "$libtool" = yes; then - "$@" "-Wp,-MDupdate,$tmpdepfile" - else - "$@" -MDupdate "$tmpdepfile" - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - - if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files - echo "$object : \\" > "$depfile" - - # Clip off the initial element (the dependent). Don't try to be - # clever and replace this with sed code, as IRIX sed won't handle - # lines with more than a fixed number of characters (4096 in - # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like `#:fec' to the end of the - # dependency line. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr ' -' ' ' >> $depfile - echo >> $depfile - - # The second pass generates a dummy entry for each header file. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> $depfile - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -aix) - # The C for AIX Compiler uses -M and outputs the dependencies - # in a .u file. This file always lives in the current directory. - # Also, the AIX compiler puts `$object:' at the start of each line; - # $object doesn't have directory information. - stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'` - tmpdepfile="$stripped.u" - outname="$stripped.o" - if test "$libtool" = yes; then - "$@" -Wc,-M - else - "$@" -M - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - - if test -f "$tmpdepfile"; then - # Each line is of the form `foo.o: dependent.h'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" - sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -tru64) - # The Tru64 AIX compiler uses -MD to generate dependencies as a side - # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in `foo.d' instead, so we check for that too. - # Subdirectories are respected. - - base=`echo "$object" | sed -e 's/\.o$/.d/' -e 's/\.lo$/.d/'` - tmpdepfile1="$base.o.d" - tmpdepfile2="$base.d" - if test "$libtool" = yes; then - "$@" -Wc,-MD - else - "$@" -MD - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" - exit $stat - fi - - if test -f "$tmpdepfile1"; then - tmpdepfile="$tmpdepfile1" - else - tmpdepfile="$tmpdepfile2" - fi - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a space and a tab in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -#nosideeffect) - # This comment above is used by automake to tell side-effect - # dependency tracking mechanisms from slower ones. - -dashmstdout) - # Important note: in order to support this mode, a compiler *must* - # always write the proprocessed file to stdout, regardless of -o, - # because we must use -o when running libtool. - test -z "$dashmflag" && dashmflag=-M - ( IFS=" " - case " $* " in - *" --mode=compile "*) # this is libtool, let us make it quiet - for arg - do # cycle over the arguments - case "$arg" in - "--mode=compile") - # insert --quiet before "--mode=compile" - set fnord "$@" --quiet - shift # fnord - ;; - esac - set fnord "$@" "$arg" - shift # fnord - shift # "$arg" - done - ;; - esac - "$@" $dashmflag | sed 's:^[^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" - ) & - proc=$! - "$@" - stat=$? - wait "$proc" - if test "$stat" != 0; then exit $stat; fi - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - tr ' ' ' -' < "$tmpdepfile" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -dashXmstdout) - # This case only exists to satisfy depend.m4. It is never actually - # run, as this mode is specially recognized in the preamble. - exit 1 - ;; - -makedepend) - # X makedepend - ( - shift - cleared=no - for arg in "$@"; do - case $cleared in no) - set ""; shift - cleared=yes - esac - case "$arg" in - -D*|-I*) - set fnord "$@" "$arg"; shift;; - -*) - ;; - *) - set fnord "$@" "$arg"; shift;; - esac - done - obj_suffix="`echo $object | sed 's/^.*\././'`" - touch "$tmpdepfile" - ${MAKEDEPEND-makedepend} 2>/dev/null -o"$obj_suffix" -f"$tmpdepfile" "$@" - ) & - proc=$! - "$@" - stat=$? - wait "$proc" - if test "$stat" != 0; then exit $stat; fi - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' ' -' | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" "$tmpdepfile".bak - ;; - -cpp) - # Important note: in order to support this mode, a compiler *must* - # always write the proprocessed file to stdout, regardless of -o, - # because we must use -o when running libtool. - ( IFS=" " - case " $* " in - *" --mode=compile "*) - for arg - do # cycle over the arguments - case $arg in - "--mode=compile") - # insert --quiet before "--mode=compile" - set fnord "$@" --quiet - shift # fnord - ;; - esac - set fnord "$@" "$arg" - shift # fnord - shift # "$arg" - done - ;; - esac - "$@" -E | - sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | - sed '$ s: \\$::' > "$tmpdepfile" - ) & - proc=$! - "$@" - stat=$? - wait "$proc" - if test "$stat" != 0; then exit $stat; fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - cat < "$tmpdepfile" >> "$depfile" - sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvisualcpp) - # Important note: in order to support this mode, a compiler *must* - # always write the proprocessed file to stdout, regardless of -o, - # because we must use -o when running libtool. - ( IFS=" " - case " $* " in - *" --mode=compile "*) - for arg - do # cycle over the arguments - case $arg in - "--mode=compile") - # insert --quiet before "--mode=compile" - set fnord "$@" --quiet - shift # fnord - ;; - esac - set fnord "$@" "$arg" - shift # fnord - shift # "$arg" - done - ;; - esac - for arg - do - case "$arg" in - "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; - *) - set fnord "$@" "$arg" - shift - shift - ;; - esac - done - "$@" -E | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" - ) & - proc=$! - "$@" - stat=$? - wait "$proc" - if test "$stat" != 0; then exit $stat; fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" - echo " " >> "$depfile" - . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -none) - exec "$@" - ;; - -*) - echo "Unknown depmode $depmode" 1>&2 - exit 1 - ;; -esac - -exit 0 diff --git a/src/bin/diffutils/config/install-sh b/src/bin/diffutils/config/install-sh deleted file mode 100755 index 398a88e142..0000000000 --- a/src/bin/diffutils/config/install-sh +++ /dev/null @@ -1,251 +0,0 @@ -#!/bin/sh -# -# install - install a program, script, or datafile -# This comes from X11R5 (mit/util/scripts/install.sh). -# -# Copyright 1991 by the Massachusetts Institute of Technology -# -# Permission to use, copy, modify, distribute, and sell this software and its -# documentation for any purpose is hereby granted without fee, provided that -# the above copyright notice appear in all copies and that both that -# copyright notice and this permission notice appear in supporting -# documentation, and that the name of M.I.T. not be used in advertising or -# publicity pertaining to distribution of the software without specific, -# written prior permission. M.I.T. makes no representations about the -# suitability of this software for any purpose. It is provided "as is" -# without express or implied warranty. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. It can only install one file at a time, a restriction -# shared with many OS's install programs. - - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -transformbasename="" -transform_arg="" -instcmd="$mvprog" -chmodcmd="$chmodprog 0755" -chowncmd="" -chgrpcmd="" -stripcmd="" -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src="" -dst="" -dir_arg="" - -while [ x"$1" != x ]; do - case $1 in - -c) instcmd="$cpprog" - shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - -s) stripcmd="$stripprog" - shift - continue;; - - -t=*) transformarg=`echo $1 | sed 's/-t=//'` - shift - continue;; - - -b=*) transformbasename=`echo $1 | sed 's/-b=//'` - shift - continue;; - - *) if [ x"$src" = x ] - then - src=$1 - else - # this colon is to work around a 386BSD /bin/sh bug - : - dst=$1 - fi - shift - continue;; - esac -done - -if [ x"$src" = x ] -then - echo "install: no input file specified" - exit 1 -else - : -fi - -if [ x"$dir_arg" != x ]; then - dst=$src - src="" - - if [ -d $dst ]; then - instcmd=: - chmodcmd="" - else - instcmd=$mkdirprog - fi -else - -# Waiting for this to be detected by the "$instcmd $src $dsttmp" command -# might cause directories to be created, which would be especially bad -# if $src (and thus $dsttmp) contains '*'. - - if [ -f $src -o -d $src ] - then - : - else - echo "install: $src does not exist" - exit 1 - fi - - if [ x"$dst" = x ] - then - echo "install: no destination specified" - exit 1 - else - : - fi - -# If destination is a directory, append the input filename; if your system -# does not like double slashes in filenames, you may need to add some logic - - if [ -d $dst ] - then - dst="$dst"/`basename $src` - else - : - fi -fi - -## this sed command emulates the dirname command -dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` - -# Make sure that the destination directory exists. -# this part is taken from Noah Friedman's mkinstalldirs script - -# Skip lots of stat calls in the usual case. -if [ ! -d "$dstdir" ]; then -defaultIFS=' - ' -IFS="${IFS-${defaultIFS}}" - -oIFS="${IFS}" -# Some sh's can't handle IFS=/ for some reason. -IFS='%' -set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` -IFS="${oIFS}" - -pathcomp='' - -while [ $# -ne 0 ] ; do - pathcomp="${pathcomp}${1}" - shift - - if [ ! -d "${pathcomp}" ] ; - then - $mkdirprog "${pathcomp}" - else - : - fi - - pathcomp="${pathcomp}/" -done -fi - -if [ x"$dir_arg" != x ] -then - $doit $instcmd $dst && - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else : ; fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else : ; fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else : ; fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else : ; fi -else - -# If we're going to rename the final executable, determine the name now. - - if [ x"$transformarg" = x ] - then - dstfile=`basename $dst` - else - dstfile=`basename $dst $transformbasename | - sed $transformarg`$transformbasename - fi - -# don't allow the sed command to completely eliminate the filename - - if [ x"$dstfile" = x ] - then - dstfile=`basename $dst` - else - : - fi - -# Make a temp file name in the proper directory. - - dsttmp=$dstdir/#inst.$$# - -# Move or copy the file name to the temp name - - $doit $instcmd $src $dsttmp && - - trap "rm -f ${dsttmp}" 0 && - -# and set any options; do chmod last to preserve setuid bits - -# If any of these fail, we abort the whole thing. If we want to -# ignore errors from any of these, just make sure not to ignore -# errors from the above "$doit $instcmd $src $dsttmp" command. - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else :;fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else :;fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else :;fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else :;fi && - -# Now rename the file to the real destination. - - $doit $rmcmd -f $dstdir/$dstfile && - $doit $mvcmd $dsttmp $dstdir/$dstfile - -fi && - - -exit 0 diff --git a/src/bin/diffutils/config/mdate-sh b/src/bin/diffutils/config/mdate-sh deleted file mode 100755 index c079aed3e2..0000000000 --- a/src/bin/diffutils/config/mdate-sh +++ /dev/null @@ -1,97 +0,0 @@ -#!/bin/sh -# Get modification time of a file or directory and pretty-print it. -# Copyright 1995, 1996, 1997 Free Software Foundation, Inc. -# written by Ulrich Drepper , June 1995 -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, -# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Prevent date giving response in another language. -LANG=C -export LANG -LC_ALL=C -export LC_ALL -LC_TIME=C -export LC_TIME - -# Get the extended ls output of the file or directory. -# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below. -if ls -L /dev/null 1>/dev/null 2>&1; then - set - x`ls -L -l -d $1` -else - set - x`ls -l -d $1` -fi -# The month is at least the fourth argument -# (3 shifts here, the next inside the loop). -shift -shift -shift - -# Find the month. Next argument is day, followed by the year or time. -month= -until test $month -do - shift - case $1 in - Jan) month=January; nummonth=1;; - Feb) month=February; nummonth=2;; - Mar) month=March; nummonth=3;; - Apr) month=April; nummonth=4;; - May) month=May; nummonth=5;; - Jun) month=June; nummonth=6;; - Jul) month=July; nummonth=7;; - Aug) month=August; nummonth=8;; - Sep) month=September; nummonth=9;; - Oct) month=October; nummonth=10;; - Nov) month=November; nummonth=11;; - Dec) month=December; nummonth=12;; - esac -done - -day=$2 - -# Here we have to deal with the problem that the ls output gives either -# the time of day or the year. -case $3 in - *:*) set `date`; eval year=\$$# - case $2 in - Jan) nummonthtod=1;; - Feb) nummonthtod=2;; - Mar) nummonthtod=3;; - Apr) nummonthtod=4;; - May) nummonthtod=5;; - Jun) nummonthtod=6;; - Jul) nummonthtod=7;; - Aug) nummonthtod=8;; - Sep) nummonthtod=9;; - Oct) nummonthtod=10;; - Nov) nummonthtod=11;; - Dec) nummonthtod=12;; - esac - # For the first six month of the year the time notation can also - # be used for files modified in the last year. - if (expr $nummonth \> $nummonthtod) > /dev/null; - then - year=`expr $year - 1` - fi;; - *) year=$3;; -esac - -# The result. -echo $day $month $year diff --git a/src/bin/diffutils/config/missing b/src/bin/diffutils/config/missing deleted file mode 100755 index dd583709f5..0000000000 --- a/src/bin/diffutils/config/missing +++ /dev/null @@ -1,336 +0,0 @@ -#! /bin/sh -# Common stub for a few missing GNU programs while installing. -# Copyright 1996, 1997, 1999, 2000 Free Software Foundation, Inc. -# Originally by Fran,cois Pinard , 1996. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -if test $# -eq 0; then - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 -fi - -run=: - -# In the cases where this matters, `missing' is being run in the -# srcdir already. -if test -f configure.ac; then - configure_ac=configure.ac -else - configure_ac=configure.in -fi - -case "$1" in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case "$1" in - - -h|--h|--he|--hel|--help) - echo "\ -$0 [OPTION]... PROGRAM [ARGUMENT]... - -Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -error status if there is no known handling for PROGRAM. - -Options: - -h, --help display this help and exit - -v, --version output version information and exit - --run try to run the given command, and emulate it if it fails - -Supported PROGRAM values: - aclocal touch file \`aclocal.m4' - autoconf touch file \`configure' - autoheader touch file \`config.h.in' - automake touch all \`Makefile.in' files - bison create \`y.tab.[ch]', if possible, from existing .[ch] - flex create \`lex.yy.c', if possible, from existing .c - help2man touch the output file - lex create \`lex.yy.c', if possible, from existing .c - makeinfo touch the output file - tar try tar, gnutar, gtar, then tar without non-portable flags - yacc create \`y.tab.[ch]', if possible, from existing .[ch]" - ;; - - -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing 0.4 - GNU automake" - ;; - - -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 - ;; - - aclocal*) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`acinclude.m4' or \`${configure_ac}'. You might want - to install the \`Automake' and \`Perl' packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`${configure_ac}'. You might want to install the - \`Autoconf' and \`GNU m4' packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`acconfig.h' or \`${configure_ac}'. You might want - to install the \`Autoconf' and \`GNU m4' packages. Grab them - from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` - test -z "$files" && files="config.h" - touch_files= - for f in $files; do - case "$f" in - *:*) touch_files="$touch_files "`echo "$f" | - sed -e 's/^[^:]*://' -e 's/:.*//'`;; - *) touch_files="$touch_files $f.in";; - esac - done - touch $touch_files - ;; - - automake*) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. - You might want to install the \`Automake' and \`Perl' packages. - Grab them from any GNU archive site." - find . -type f -name Makefile.am -print | - sed 's/\.am$/.in/' | - while read f; do touch "$f"; done - ;; - - autom4te) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is needed, and you do not seem to have it handy on your - system. You might have modified some files without having the - proper tools for further handling them. - You can get \`$1Help2man' as part of \`Autoconf' from any GNU - archive site." - - file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` - test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo "#! /bin/sh" - echo "# Created by GNU Automake missing as a replacement of" - echo "# $ $@" - echo "exit 0" - chmod +x $file - exit 1 - fi - ;; - - bison|yacc) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified a \`.y' file. You may need the \`Bison' package - in order for those modifications to take effect. You can get - \`Bison' from any GNU archive site." - rm -f y.tab.c y.tab.h - if [ $# -ne 1 ]; then - eval LASTARG="\${$#}" - case "$LASTARG" in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if [ ! -f y.tab.h ]; then - echo >y.tab.h - fi - if [ ! -f y.tab.c ]; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex|flex) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified a \`.l' file. You may need the \`Flex' package - in order for those modifications to take effect. You can get - \`Flex' from any GNU archive site." - rm -f lex.yy.c - if [ $# -ne 1 ]; then - eval LASTARG="\${$#}" - case "$LASTARG" in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if [ ! -f lex.yy.c ]; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - help2man) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified a dependency of a manual page. You may need the - \`Help2man' package in order for those modifications to take - effect. You can get \`Help2man' from any GNU archive site." - - file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` - if test -z "$file"; then - file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` - fi - if [ -f "$file" ]; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit 1 - fi - ;; - - makeinfo) - if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then - # We have makeinfo, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified a \`.texi' or \`.texinfo' file, or any other file - indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy \`make' (AIX, - DU, IRIX). You might want to install the \`Texinfo' package or - the \`GNU make' package. Grab either from any GNU archive site." - file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` - if test -z "$file"; then - file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` - fi - touch $file - ;; - - tar) - shift - if test -n "$run"; then - echo 1>&2 "ERROR: \`tar' requires --run" - exit 1 - fi - - # We have already tried tar in the generic part. - # Look for gnutar/gtar before invocation to avoid ugly error - # messages. - if (gnutar --version > /dev/null 2>&1); then - gnutar ${1+"$@"} && exit 0 - fi - if (gtar --version > /dev/null 2>&1); then - gtar ${1+"$@"} && exit 0 - fi - firstarg="$1" - if shift; then - case "$firstarg" in - *o*) - firstarg=`echo "$firstarg" | sed s/o//` - tar "$firstarg" ${1+"$@"} && exit 0 - ;; - esac - case "$firstarg" in - *h*) - firstarg=`echo "$firstarg" | sed s/h//` - tar "$firstarg" ${1+"$@"} && exit 0 - ;; - esac - fi - - echo 1>&2 "\ -WARNING: I can't seem to be able to run \`tar' with the given arguments. - You may want to install GNU tar or Free paxutils, or check the - command line arguments." - exit 1 - ;; - - *) - echo 1>&2 "\ -WARNING: \`$1' is needed, and you do not seem to have it handy on your - system. You might have modified some files without having the - proper tools for further handling them. Check the \`README' file, - it often tells you about the needed prerequirements for installing - this package. You may also peek at any GNU archive site, in case - some other package would contain this missing \`$1' program." - exit 1 - ;; -esac - -exit 0 diff --git a/src/bin/diffutils/config/mkinstalldirs b/src/bin/diffutils/config/mkinstalldirs deleted file mode 100755 index f1bfec2397..0000000000 --- a/src/bin/diffutils/config/mkinstalldirs +++ /dev/null @@ -1,101 +0,0 @@ -#! /bin/sh -# mkinstalldirs --- make directory hierarchy -# Author: Noah Friedman -# Created: 1993-05-16 -# Public domain - -# $Id: mkinstalldirs 6847 2004-03-02 00:45:50Z michaelphipps $ - -errstatus=0 -dirmode="" - -usage="\ -Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." - -# process command line arguments -while test $# -gt 0 ; do - case "${1}" in - -h | --help | --h* ) # -h for help - echo "${usage}" 1>&2; exit 0 ;; - -m ) # -m PERM arg - shift - test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; } - dirmode="${1}" - shift ;; - -- ) shift; break ;; # stop option processing - -* ) echo "${usage}" 1>&2; exit 1 ;; # unknown option - * ) break ;; # first non-opt arg - esac -done - -for file -do - if test -d "$file"; then - shift - else - break - fi -done - -case $# in -0) exit 0 ;; -esac - -case $dirmode in -'') - if mkdir -p -- . 2>/dev/null; then - echo "mkdir -p -- $*" - exec mkdir -p -- "$@" - fi ;; -*) - if mkdir -m "$dirmode" -p -- . 2>/dev/null; then - echo "mkdir -m $dirmode -p -- $*" - exec mkdir -m "$dirmode" -p -- "$@" - fi ;; -esac - -for file -do - set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` - shift - - pathcomp= - for d - do - pathcomp="$pathcomp$d" - case "$pathcomp" in - -* ) pathcomp=./$pathcomp ;; - esac - - if test ! -d "$pathcomp"; then - echo "mkdir $pathcomp" - - mkdir "$pathcomp" || lasterr=$? - - if test ! -d "$pathcomp"; then - errstatus=$lasterr - else - if test ! -z "$dirmode"; then - echo "chmod $dirmode $pathcomp" - - lasterr="" - chmod "$dirmode" "$pathcomp" || lasterr=$? - - if test ! -z "$lasterr"; then - errstatus=$lasterr - fi - fi - fi - fi - - pathcomp="$pathcomp/" - done -done - -exit $errstatus - -# Local Variables: -# mode: shell-script -# sh-indentation: 3 -# End: -# mkinstalldirs ends here diff --git a/src/bin/diffutils/config/texinfo.tex b/src/bin/diffutils/config/texinfo.tex deleted file mode 100644 index df62a127bb..0000000000 --- a/src/bin/diffutils/config/texinfo.tex +++ /dev/null @@ -1,6364 +0,0 @@ -% texinfo.tex -- TeX macros to handle Texinfo files. -% -% Load plain if necessary, i.e., if running under initex. -\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi -% -\def\texinfoversion{2002-03-26.08} -% -% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, -% 2000, 01, 02 Free Software Foundation, Inc. -% -% This texinfo.tex file is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License as -% published by the Free Software Foundation; either version 2, or (at -% your option) any later version. -% -% This texinfo.tex file is distributed in the hope that it will be -% useful, but WITHOUT ANY WARRANTY; without even the implied warranty -% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -% General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this texinfo.tex file; see the file COPYING. If not, write -% to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -% Boston, MA 02111-1307, USA. -% -% In other words, you are welcome to use, share and improve this program. -% You are forbidden to forbid anyone else to use, share and improve -% what you give them. Help stamp out software-hoarding! -% -% Please try the latest version of texinfo.tex before submitting bug -% reports; you can get the latest version from: -% ftp://ftp.gnu.org/gnu/texinfo.tex -% (and all GNU mirrors, see http://www.gnu.org/order/ftp.html) -% ftp://texinfo.org/texinfo/texinfo.tex -% ftp://tug.org/tex/texinfo.tex -% (and all CTAN mirrors, see http://www.ctan.org), -% and /home/gd/gnu/doc/texinfo.tex on the GNU machines. -% -% The texinfo.tex in any given Texinfo distribution could well be out -% of date, so if that's what you're using, please check. -% -% Texinfo has a small home page at http://texinfo.org/ and also -% http://www.gnu.org/software/texinfo. -% -% Send bug reports to bug-texinfo@gnu.org. Please include including a -% complete document in each bug report with which we can reproduce the -% problem. Patches are, of course, greatly appreciated. -% -% To process a Texinfo manual with TeX, it's most reliable to use the -% texi2dvi shell script that comes with the distribution. For a simple -% manual foo.texi, however, you can get away with this: -% tex foo.texi -% texindex foo.?? -% tex foo.texi -% tex foo.texi -% dvips foo.dvi -o # or whatever; this makes foo.ps. -% The extra TeX runs get the cross-reference information correct. -% Sometimes one run after texindex suffices, and sometimes you need more -% than two; texi2dvi does it as many times as necessary. -% -% It is possible to adapt texinfo.tex for other languages. You can get -% the existing language-specific files from the full Texinfo distribution. - -\message{Loading texinfo [version \texinfoversion]:} - -% If in a .fmt file, print the version number -% and turn on active characters that we couldn't do earlier because -% they might have appeared in the input file name. -\everyjob{\message{[Texinfo version \texinfoversion]}% - \catcode`+=\active \catcode`\_=\active} - -% Save some parts of plain tex whose names we will redefine. -\let\ptexb=\b -\let\ptexbullet=\bullet -\let\ptexc=\c -\let\ptexcomma=\, -\let\ptexdot=\. -\let\ptexdots=\dots -\let\ptexend=\end -\let\ptexequiv=\equiv -\let\ptexexclam=\! -\let\ptexi=\i -\let\ptexlbrace=\{ -\let\ptexrbrace=\} -\let\ptexstar=\* -\let\ptext=\t - -% We never want plain's outer \+ definition in Texinfo. -% For @tex, we can use \tabalign. -\let\+ = \relax - -\message{Basics,} -\chardef\other=12 - -% If this character appears in an error message or help string, it -% starts a new line in the output. -\newlinechar = `^^J - -% Set up fixed words for English if not already set. -\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi -\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi -\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi -\ifx\putwordin\undefined \gdef\putwordin{in}\fi -\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi -\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi -\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi -\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi -\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi -\ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi -\ifx\putwordof\undefined \gdef\putwordof{of}\fi -\ifx\putwordon\undefined \gdef\putwordon{on}\fi -\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi -\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi -\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi -\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi -\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi -\ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi -\ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi -% -\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi -\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi -\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi -\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi -\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi -\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi -\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi -\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi -\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi -\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi -\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi -\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi -% -\ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi -\ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi -\ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi -\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi -\ifx\putwordDeftypevar\undefined\gdef\putwordDeftypevar{Variable}\fi -\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi -\ifx\putwordDeftypefun\undefined\gdef\putwordDeftypefun{Function}\fi - -% Ignore a token. -% -\def\gobble#1{} - -\hyphenation{ap-pen-dix} -\hyphenation{mini-buf-fer mini-buf-fers} -\hyphenation{eshell} -\hyphenation{white-space} - -% Margin to add to right of even pages, to left of odd pages. -\newdimen \bindingoffset -\newdimen \normaloffset -\newdimen\pagewidth \newdimen\pageheight - -% Sometimes it is convenient to have everything in the transcript file -% and nothing on the terminal. We don't just call \tracingall here, -% since that produces some useless output on the terminal. -% -\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% -\ifx\eTeXversion\undefined -\def\loggingall{\tracingcommands2 \tracingstats2 - \tracingpages1 \tracingoutput1 \tracinglostchars1 - \tracingmacros2 \tracingparagraphs1 \tracingrestores1 - \showboxbreadth\maxdimen\showboxdepth\maxdimen -}% -\else -\def\loggingall{\tracingcommands3 \tracingstats2 - \tracingpages1 \tracingoutput1 \tracinglostchars1 - \tracingmacros2 \tracingparagraphs1 \tracingrestores1 - \tracingscantokens1 \tracingassigns1 \tracingifs1 - \tracinggroups1 \tracingnesting2 - \showboxbreadth\maxdimen\showboxdepth\maxdimen -}% -\fi - -% add check for \lastpenalty to plain's definitions. If the last thing -% we did was a \nobreak, we don't want to insert more space. -% -\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount - \removelastskip\penalty-50\smallskip\fi\fi} -\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount - \removelastskip\penalty-100\medskip\fi\fi} -\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount - \removelastskip\penalty-200\bigskip\fi\fi} - -% For @cropmarks command. -% Do @cropmarks to get crop marks. -% -\newif\ifcropmarks -\let\cropmarks = \cropmarkstrue -% -% Dimensions to add cropmarks at corners. -% Added by P. A. MacKay, 12 Nov. 1986 -% -\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines -\newdimen\cornerlong \cornerlong=1pc -\newdimen\cornerthick \cornerthick=.3pt -\newdimen\topandbottommargin \topandbottommargin=.75in - -% Main output routine. -\chardef\PAGE = 255 -\output = {\onepageout{\pagecontents\PAGE}} - -\newbox\headlinebox -\newbox\footlinebox - -% \onepageout takes a vbox as an argument. Note that \pagecontents -% does insertions, but you have to call it yourself. -\def\onepageout#1{% - \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi - % - \ifodd\pageno \advance\hoffset by \bindingoffset - \else \advance\hoffset by -\bindingoffset\fi - % - % Do this outside of the \shipout so @code etc. will be expanded in - % the headline as they should be, not taken literally (outputting ''code). - \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}% - \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}% - % - {% - % Have to do this stuff outside the \shipout because we want it to - % take effect in \write's, yet the group defined by the \vbox ends - % before the \shipout runs. - % - \escapechar = `\\ % use backslash in output files. - \indexdummies % don't expand commands in the output. - \normalturnoffactive % \ in index entries must not stay \, e.g., if - % the page break happens to be in the middle of an example. - \shipout\vbox{% - % Do this early so pdf references go to the beginning of the page. - \ifpdfmakepagedest \pdfmkdest{\the\pageno} \fi - % - \ifcropmarks \vbox to \outervsize\bgroup - \hsize = \outerhsize - \vskip-\topandbottommargin - \vtop to0pt{% - \line{\ewtop\hfil\ewtop}% - \nointerlineskip - \line{% - \vbox{\moveleft\cornerthick\nstop}% - \hfill - \vbox{\moveright\cornerthick\nstop}% - }% - \vss}% - \vskip\topandbottommargin - \line\bgroup - \hfil % center the page within the outer (page) hsize. - \ifodd\pageno\hskip\bindingoffset\fi - \vbox\bgroup - \fi - % - \unvbox\headlinebox - \pagebody{#1}% - \ifdim\ht\footlinebox > 0pt - % Only leave this space if the footline is nonempty. - % (We lessened \vsize for it in \oddfootingxxx.) - % The \baselineskip=24pt in plain's \makefootline has no effect. - \vskip 2\baselineskip - \unvbox\footlinebox - \fi - % - \ifcropmarks - \egroup % end of \vbox\bgroup - \hfil\egroup % end of (centering) \line\bgroup - \vskip\topandbottommargin plus1fill minus1fill - \boxmaxdepth = \cornerthick - \vbox to0pt{\vss - \line{% - \vbox{\moveleft\cornerthick\nsbot}% - \hfill - \vbox{\moveright\cornerthick\nsbot}% - }% - \nointerlineskip - \line{\ewbot\hfil\ewbot}% - }% - \egroup % \vbox from first cropmarks clause - \fi - }% end of \shipout\vbox - }% end of group with \turnoffactive - \advancepageno - \ifnum\outputpenalty>-20000 \else\dosupereject\fi -} - -\newinsert\margin \dimen\margin=\maxdimen - -\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}} -{\catcode`\@ =11 -\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi -% marginal hacks, juha@viisa.uucp (Juha Takala) -\ifvoid\margin\else % marginal info is present - \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi -\dimen@=\dp#1 \unvbox#1 -\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi -\ifr@ggedbottom \kern-\dimen@ \vfil \fi} -} - -% Here are the rules for the cropmarks. Note that they are -% offset so that the space between them is truly \outerhsize or \outervsize -% (P. A. MacKay, 12 November, 1986) -% -\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong} -\def\nstop{\vbox - {\hrule height\cornerthick depth\cornerlong width\cornerthick}} -\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong} -\def\nsbot{\vbox - {\hrule height\cornerlong depth\cornerthick width\cornerthick}} - -% Parse an argument, then pass it to #1. The argument is the rest of -% the input line (except we remove a trailing comment). #1 should be a -% macro which expects an ordinary undelimited TeX argument. -% -\def\parsearg#1{% - \let\next = #1% - \begingroup - \obeylines - \futurelet\temp\parseargx -} - -% If the next token is an obeyed space (from an @example environment or -% the like), remove it and recurse. Otherwise, we're done. -\def\parseargx{% - % \obeyedspace is defined far below, after the definition of \sepspaces. - \ifx\obeyedspace\temp - \expandafter\parseargdiscardspace - \else - \expandafter\parseargline - \fi -} - -% Remove a single space (as the delimiter token to the macro call). -{\obeyspaces % - \gdef\parseargdiscardspace {\futurelet\temp\parseargx}} - -{\obeylines % - \gdef\parseargline#1^^M{% - \endgroup % End of the group started in \parsearg. - % - % First remove any @c comment, then any @comment. - % Result of each macro is put in \toks0. - \argremovec #1\c\relax % - \expandafter\argremovecomment \the\toks0 \comment\relax % - % - % Call the caller's macro, saved as \next in \parsearg. - \expandafter\next\expandafter{\the\toks0}% - }% -} - -% Since all \c{,omment} does is throw away the argument, we can let TeX -% do that for us. The \relax here is matched by the \relax in the call -% in \parseargline; it could be more or less anything, its purpose is -% just to delimit the argument to the \c. -\def\argremovec#1\c#2\relax{\toks0 = {#1}} -\def\argremovecomment#1\comment#2\relax{\toks0 = {#1}} - -% \argremovec{,omment} might leave us with trailing spaces, though; e.g., -% @end itemize @c foo -% will have two active spaces as part of the argument with the -% `itemize'. Here we remove all active spaces from #1, and assign the -% result to \toks0. -% -% This loses if there are any *other* active characters besides spaces -% in the argument -- _ ^ +, for example -- since they get expanded. -% Fortunately, Texinfo does not define any such commands. (If it ever -% does, the catcode of the characters in questionwill have to be changed -% here.) But this means we cannot call \removeactivespaces as part of -% \argremovec{,omment}, since @c uses \parsearg, and thus the argument -% that \parsearg gets might well have any character at all in it. -% -\def\removeactivespaces#1{% - \begingroup - \ignoreactivespaces - \edef\temp{#1}% - \global\toks0 = \expandafter{\temp}% - \endgroup -} - -% Change the active space to expand to nothing. -% -\begingroup - \obeyspaces - \gdef\ignoreactivespaces{\obeyspaces\let =\empty} -\endgroup - - -\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} - -%% These are used to keep @begin/@end levels from running away -%% Call \inENV within environments (after a \begingroup) -\newif\ifENV \ENVfalse \def\inENV{\ifENV\relax\else\ENVtrue\fi} -\def\ENVcheck{% -\ifENV\errmessage{Still within an environment; press RETURN to continue} -\endgroup\fi} % This is not perfect, but it should reduce lossage - -% @begin foo is the same as @foo, for now. -\newhelp\EMsimple{Press RETURN to continue.} - -\outer\def\begin{\parsearg\beginxxx} - -\def\beginxxx #1{% -\expandafter\ifx\csname #1\endcsname\relax -{\errhelp=\EMsimple \errmessage{Undefined command @begin #1}}\else -\csname #1\endcsname\fi} - -% @end foo executes the definition of \Efoo. -% -\def\end{\parsearg\endxxx} -\def\endxxx #1{% - \removeactivespaces{#1}% - \edef\endthing{\the\toks0}% - % - \expandafter\ifx\csname E\endthing\endcsname\relax - \expandafter\ifx\csname \endthing\endcsname\relax - % There's no \foo, i.e., no ``environment'' foo. - \errhelp = \EMsimple - \errmessage{Undefined command `@end \endthing'}% - \else - \unmatchedenderror\endthing - \fi - \else - % Everything's ok; the right environment has been started. - \csname E\endthing\endcsname - \fi -} - -% There is an environment #1, but it hasn't been started. Give an error. -% -\def\unmatchedenderror#1{% - \errhelp = \EMsimple - \errmessage{This `@end #1' doesn't have a matching `@#1'}% -} - -% Define the control sequence \E#1 to give an unmatched @end error. -% -\def\defineunmatchedend#1{% - \expandafter\def\csname E#1\endcsname{\unmatchedenderror{#1}}% -} - - -% Single-spacing is done by various environments (specifically, in -% \nonfillstart and \quotations). -\newskip\singlespaceskip \singlespaceskip = 12.5pt -\def\singlespace{% - % Why was this kern here? It messes up equalizing space above and below - % environments. --karl, 6may93 - %{\advance \baselineskip by -\singlespaceskip - %\kern \baselineskip}% - \setleading\singlespaceskip -} - -%% Simple single-character @ commands - -% @@ prints an @ -% Kludge this until the fonts are right (grr). -\def\@{{\tt\char64}} - -% This is turned off because it was never documented -% and you can use @w{...} around a quote to suppress ligatures. -%% Define @` and @' to be the same as ` and ' -%% but suppressing ligatures. -%\def\`{{`}} -%\def\'{{'}} - -% Used to generate quoted braces. -\def\mylbrace {{\tt\char123}} -\def\myrbrace {{\tt\char125}} -\let\{=\mylbrace -\let\}=\myrbrace -\begingroup - % Definitions to produce actual \{ & \} command in an index. - \catcode`\{ = 12 \catcode`\} = 12 - \catcode`\[ = 1 \catcode`\] = 2 - \catcode`\@ = 0 \catcode`\\ = 12 - @gdef@lbracecmd[\{]% - @gdef@rbracecmd[\}]% -@endgroup - -% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent -% Others are defined by plain TeX: @` @' @" @^ @~ @= @v @H. -\let\, = \c -\let\dotaccent = \. -\def\ringaccent#1{{\accent23 #1}} -\let\tieaccent = \t -\let\ubaraccent = \b -\let\udotaccent = \d - -% Other special characters: @questiondown @exclamdown -% Plain TeX defines: @AA @AE @O @OE @L (and lowercase versions) @ss. -\def\questiondown{?`} -\def\exclamdown{!`} - -% Dotless i and dotless j, used for accents. -\def\imacro{i} -\def\jmacro{j} -\def\dotless#1{% - \def\temp{#1}% - \ifx\temp\imacro \ptexi - \else\ifx\temp\jmacro \j - \else \errmessage{@dotless can be used only with i or j}% - \fi\fi -} - -% Be sure we're in horizontal mode when doing a tie, since we make space -% equivalent to this in @example-like environments. Otherwise, a space -% at the beginning of a line will start with \penalty -- and -% since \penalty is valid in vertical mode, we'd end up putting the -% penalty on the vertical list instead of in the new paragraph. -{\catcode`@ = 11 - % Avoid using \@M directly, because that causes trouble - % if the definition is written into an index file. - \global\let\tiepenalty = \@M - \gdef\tie{\leavevmode\penalty\tiepenalty\ } -} - -% @: forces normal size whitespace following. -\def\:{\spacefactor=1000 } - -% @* forces a line break. -\def\*{\hfil\break\hbox{}\ignorespaces} - -% @. is an end-of-sentence period. -\def\.{.\spacefactor=3000 } - -% @! is an end-of-sentence bang. -\def\!{!\spacefactor=3000 } - -% @? is an end-of-sentence query. -\def\?{?\spacefactor=3000 } - -% @w prevents a word break. Without the \leavevmode, @w at the -% beginning of a paragraph, when TeX is still in vertical mode, would -% produce a whole line of output instead of starting the paragraph. -\def\w#1{\leavevmode\hbox{#1}} - -% @group ... @end group forces ... to be all on one page, by enclosing -% it in a TeX vbox. We use \vtop instead of \vbox to construct the box -% to keep its height that of a normal line. According to the rules for -% \topskip (p.114 of the TeXbook), the glue inserted is -% max (\topskip - \ht (first item), 0). If that height is large, -% therefore, no glue is inserted, and the space between the headline and -% the text is small, which looks bad. -% -\def\group{\begingroup - \ifnum\catcode13=\active \else - \errhelp = \groupinvalidhelp - \errmessage{@group invalid in context where filling is enabled}% - \fi - % - % The \vtop we start below produces a box with normal height and large - % depth; thus, TeX puts \baselineskip glue before it, and (when the - % next line of text is done) \lineskip glue after it. (See p.82 of - % the TeXbook.) Thus, space below is not quite equal to space - % above. But it's pretty close. - \def\Egroup{% - \egroup % End the \vtop. - \endgroup % End the \group. - }% - % - \vtop\bgroup - % We have to put a strut on the last line in case the @group is in - % the midst of an example, rather than completely enclosing it. - % Otherwise, the interline space between the last line of the group - % and the first line afterwards is too small. But we can't put the - % strut in \Egroup, since there it would be on a line by itself. - % Hence this just inserts a strut at the beginning of each line. - \everypar = {\strut}% - % - % Since we have a strut on every line, we don't need any of TeX's - % normal interline spacing. - \offinterlineskip - % - % OK, but now we have to do something about blank - % lines in the input in @example-like environments, which normally - % just turn into \lisppar, which will insert no space now that we've - % turned off the interline space. Simplest is to make them be an - % empty paragraph. - \ifx\par\lisppar - \edef\par{\leavevmode \par}% - % - % Reset ^^M's definition to new definition of \par. - \obeylines - \fi - % - % Do @comment since we are called inside an environment such as - % @example, where each end-of-line in the input causes an - % end-of-line in the output. We don't want the end-of-line after - % the `@group' to put extra space in the output. Since @group - % should appear on a line by itself (according to the Texinfo - % manual), we don't worry about eating any user text. - \comment -} -% -% TeX puts in an \escapechar (i.e., `@') at the beginning of the help -% message, so this ends up printing `@group can only ...'. -% -\newhelp\groupinvalidhelp{% -group can only be used in environments such as @example,^^J% -where each line of input produces a line of output.} - -% @need space-in-mils -% forces a page break if there is not space-in-mils remaining. - -\newdimen\mil \mil=0.001in - -\def\need{\parsearg\needx} - -% Old definition--didn't work. -%\def\needx #1{\par % -%% This method tries to make TeX break the page naturally -%% if the depth of the box does not fit. -%{\baselineskip=0pt% -%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak -%\prevdepth=-1000pt -%}} - -\def\needx#1{% - % Ensure vertical mode, so we don't make a big box in the middle of a - % paragraph. - \par - % - % If the @need value is less than one line space, it's useless. - \dimen0 = #1\mil - \dimen2 = \ht\strutbox - \advance\dimen2 by \dp\strutbox - \ifdim\dimen0 > \dimen2 - % - % Do a \strut just to make the height of this box be normal, so the - % normal leading is inserted relative to the preceding line. - % And a page break here is fine. - \vtop to #1\mil{\strut\vfil}% - % - % TeX does not even consider page breaks if a penalty added to the - % main vertical list is 10000 or more. But in order to see if the - % empty box we just added fits on the page, we must make it consider - % page breaks. On the other hand, we don't want to actually break the - % page after the empty box. So we use a penalty of 9999. - % - % There is an extremely small chance that TeX will actually break the - % page at this \penalty, if there are no other feasible breakpoints in - % sight. (If the user is using lots of big @group commands, which - % almost-but-not-quite fill up a page, TeX will have a hard time doing - % good page breaking, for example.) However, I could not construct an - % example where a page broke at this \penalty; if it happens in a real - % document, then we can reconsider our strategy. - \penalty9999 - % - % Back up by the size of the box, whether we did a page break or not. - \kern -#1\mil - % - % Do not allow a page break right after this kern. - \nobreak - \fi -} - -% @br forces paragraph break - -\let\br = \par - -% @dots{} output an ellipsis using the current font. -% We do .5em per period so that it has the same spacing in a typewriter -% font as three actual period characters. -% -\def\dots{% - \leavevmode - \hbox to 1.5em{% - \hskip 0pt plus 0.25fil minus 0.25fil - .\hss.\hss.% - \hskip 0pt plus 0.5fil minus 0.5fil - }% -} - -% @enddots{} is an end-of-sentence ellipsis. -% -\def\enddots{% - \leavevmode - \hbox to 2em{% - \hskip 0pt plus 0.25fil minus 0.25fil - .\hss.\hss.\hss.% - \hskip 0pt plus 0.5fil minus 0.5fil - }% - \spacefactor=3000 -} - - -% @page forces the start of a new page -% -\def\page{\par\vfill\supereject} - -% @exdent text.... -% outputs text on separate line in roman font, starting at standard page margin - -% This records the amount of indent in the innermost environment. -% That's how much \exdent should take out. -\newskip\exdentamount - -% This defn is used inside fill environments such as @defun. -\def\exdent{\parsearg\exdentyyy} -\def\exdentyyy #1{{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}} - -% This defn is used inside nofill environments such as @example. -\def\nofillexdent{\parsearg\nofillexdentyyy} -\def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount -\leftline{\hskip\leftskip{\rm#1}}}} - -% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current -% paragraph. For more general purposes, use the \margin insertion -% class. WHICH is `l' or `r'. -% -\newskip\inmarginspacing \inmarginspacing=1cm -\def\strutdepth{\dp\strutbox} -% -\def\doinmargin#1#2{\strut\vadjust{% - \nobreak - \kern-\strutdepth - \vtop to \strutdepth{% - \baselineskip=\strutdepth - \vss - % if you have multiple lines of stuff to put here, you'll need to - % make the vbox yourself of the appropriate size. - \ifx#1l% - \llap{\ignorespaces #2\hskip\inmarginspacing}% - \else - \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}% - \fi - \null - }% -}} -\def\inleftmargin{\doinmargin l} -\def\inrightmargin{\doinmargin r} -% -% @inmargin{TEXT [, RIGHT-TEXT]} -% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; -% else use TEXT for both). -% -\def\inmargin#1{\parseinmargin #1,,\finish} -\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. - \setbox0 = \hbox{\ignorespaces #2}% - \ifdim\wd0 > 0pt - \def\lefttext{#1}% have both texts - \def\righttext{#2}% - \else - \def\lefttext{#1}% have only one text - \def\righttext{#1}% - \fi - % - \ifodd\pageno - \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin - \else - \def\temp{\inleftmargin\lefttext}% - \fi - \temp -} - -% @include file insert text of that file as input. -% Allow normal characters that we make active in the argument (a file name). -\def\include{\begingroup - \catcode`\\=12 - \catcode`~=12 - \catcode`^=12 - \catcode`_=12 - \catcode`|=12 - \catcode`<=12 - \catcode`>=12 - \catcode`+=12 - \parsearg\includezzz} -% Restore active chars for included file. -\def\includezzz#1{\endgroup\begingroup - % Read the included file in a group so nested @include's work. - \def\thisfile{#1}% - \input\thisfile -\endgroup} - -\def\thisfile{} - -% @center line outputs that line, centered - -\def\center{\parsearg\centerzzz} -\def\centerzzz #1{{\advance\hsize by -\leftskip -\advance\hsize by -\rightskip -\centerline{#1}}} - -% @sp n outputs n lines of vertical space - -\def\sp{\parsearg\spxxx} -\def\spxxx #1{\vskip #1\baselineskip} - -% @comment ...line which is ignored... -% @c is the same as @comment -% @ignore ... @end ignore is another way to write a comment - -\def\comment{\begingroup \catcode`\^^M=\other% -\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% -\commentxxx} -{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}} - -\let\c=\comment - -% @paragraphindent NCHARS -% We'll use ems for NCHARS, close enough. -% We cannot implement @paragraphindent asis, though. -% -\def\asisword{asis} % no translation, these are keywords -\def\noneword{none} -% -\def\paragraphindent{\parsearg\doparagraphindent} -\def\doparagraphindent#1{% - \def\temp{#1}% - \ifx\temp\asisword - \else - \ifx\temp\noneword - \defaultparindent = 0pt - \else - \defaultparindent = #1em - \fi - \fi - \parindent = \defaultparindent -} - -% @exampleindent NCHARS -% We'll use ems for NCHARS like @paragraphindent. -% It seems @exampleindent asis isn't necessary, but -% I preserve it to make it similar to @paragraphindent. -\def\exampleindent{\parsearg\doexampleindent} -\def\doexampleindent#1{% - \def\temp{#1}% - \ifx\temp\asisword - \else - \ifx\temp\noneword - \lispnarrowing = 0pt - \else - \lispnarrowing = #1em - \fi - \fi -} - -% @asis just yields its argument. Used with @table, for example. -% -\def\asis#1{#1} - -% @math outputs its argument in math mode. -% We don't use $'s directly in the definition of \math because we need -% to set catcodes according to plain TeX first, to allow for subscripts, -% superscripts, special math chars, etc. -% -% @math does not do math typesetting in section titles, index -% entries, and other such contexts where the catcodes are set before -% @math gets a chance to work. This could perhaps be fixed, but for now -% at least we can have real math in the main text, where it's needed most. -% -\let\implicitmath = $%$ font-lock fix -% -% One complication: _ usually means subscripts, but it could also mean -% an actual _ character, as in @math{@var{some_variable} + 1}. So make -% _ within @math be active (mathcode "8000), and distinguish by seeing -% if the current family is \slfam, which is what @var uses. -% -{\catcode95 = \active % 95 = _ -\gdef\mathunderscore{% - \catcode95=\active - \def_{\ifnum\fam=\slfam \_\else\sb\fi}% -}} -% -% Another complication: we want \\ (and @\) to output a \ character. -% FYI, plain.tex uses \\ as a temporary control sequence (why?), but -% this is not advertised and we don't care. Texinfo does not -% otherwise define @\. -% -% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. -\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} -% -\def\math{% - \tex - \mathcode`\_="8000 \mathunderscore - \let\\ = \mathbackslash - \implicitmath\finishmath} -\def\finishmath#1{#1\implicitmath\Etex} - -% @bullet and @minus need the same treatment as @math, just above. -\def\bullet{\implicitmath\ptexbullet\implicitmath} -\def\minus{\implicitmath-\implicitmath} - -% @refill is a no-op. -\let\refill=\relax - -% If working on a large document in chapters, it is convenient to -% be able to disable indexing, cross-referencing, and contents, for test runs. -% This is done with @novalidate (before @setfilename). -% -\newif\iflinks \linkstrue % by default we want the aux files. -\let\novalidate = \linksfalse - -% @setfilename is done at the beginning of every texinfo file. -% So open here the files we need to have open while reading the input. -% This makes it possible to make a .fmt file for texinfo. -\def\setfilename{% - \iflinks - \readauxfile - \fi % \openindices needs to do some work in any case. - \openindices - \fixbackslash % Turn off hack to swallow `\input texinfo'. - \global\let\setfilename=\comment % Ignore extra @setfilename cmds. - % - % If texinfo.cnf is present on the system, read it. - % Useful for site-wide @afourpaper, etc. - % Just to be on the safe side, close the input stream before the \input. - \openin 1 texinfo.cnf - \ifeof1 \let\temp=\relax \else \def\temp{\input texinfo.cnf }\fi - \closein1 - \temp - % - \comment % Ignore the actual filename. -} - -% Called from \setfilename. -% -\def\openindices{% - \newindex{cp}% - \newcodeindex{fn}% - \newcodeindex{vr}% - \newcodeindex{tp}% - \newcodeindex{ky}% - \newcodeindex{pg}% -} - -% @bye. -\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} - - -\message{pdf,} -% adobe `portable' document format -\newcount\tempnum -\newcount\lnkcount -\newtoks\filename -\newcount\filenamelength -\newcount\pgn -\newtoks\toksA -\newtoks\toksB -\newtoks\toksC -\newtoks\toksD -\newbox\boxA -\newcount\countA -\newif\ifpdf -\newif\ifpdfmakepagedest - -\ifx\pdfoutput\undefined - \pdffalse - \let\pdfmkdest = \gobble - \let\pdfurl = \gobble - \let\endlink = \relax - \let\linkcolor = \relax - \let\pdfmakeoutlines = \relax -\else - \pdftrue - \pdfoutput = 1 - \input pdfcolor - \def\dopdfimage#1#2#3{% - \def\imagewidth{#2}% - \def\imageheight{#3}% - % without \immediate, pdftex seg faults when the same image is - % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.) - \ifnum\pdftexversion < 14 - \immediate\pdfimage - \else - \immediate\pdfximage - \fi - \ifx\empty\imagewidth\else width \imagewidth \fi - \ifx\empty\imageheight\else height \imageheight \fi - \ifnum\pdftexversion<13 - #1.pdf% - \else - {#1.pdf}% - \fi - \ifnum\pdftexversion < 14 \else - \pdfrefximage \pdflastximage - \fi} - \def\pdfmkdest#1{{\normalturnoffactive \pdfdest name{#1} xyz}} - \def\pdfmkpgn#1{#1} - \let\linkcolor = \Blue % was Cyan, but that seems light? - \def\endlink{\Black\pdfendlink} - % Adding outlines to PDF; macros for calculating structure of outlines - % come from Petr Olsak - \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% - \else \csname#1\endcsname \fi} - \def\advancenumber#1{\tempnum=\expnumber{#1}\relax - \advance\tempnum by1 - \expandafter\xdef\csname#1\endcsname{\the\tempnum}} - \def\pdfmakeoutlines{{% - \openin 1 \jobname.toc - \ifeof 1\else\begingroup - \closein 1 - \indexnofonts - \def\tt{} - \let\_ = \normalunderscore - % Thanh's hack / proper braces in bookmarks - \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace - \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace - % - \def\chapentry ##1##2##3{} - \let\appendixentry = \chapentry - \def\unnumbchapentry ##1##2{} - \def\secentry ##1##2##3##4{\advancenumber{chap##2}} - \def\unnumbsecentry ##1##2##3{\advancenumber{chap##2}} - \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}} - \def\unnumbsubsecentry ##1##2##3##4{\advancenumber{sec##2.##3}} - \def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}} - \def\unnumbsubsubsecentry ##1##2##3##4##5{\advancenumber{subsec##2.##3.##4}} - \input \jobname.toc - \def\chapentry ##1##2##3{% - \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}} - \let\appendixentry = \chapentry - \def\unnumbchapentry ##1##2{% - \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} - \def\secentry ##1##2##3##4{% - \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}} - \def\unnumbsecentry ##1##2##3{% - \pdfoutline goto name{\pdfmkpgn{##3}}{##1}} - \def\subsecentry ##1##2##3##4##5{% - \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}} - \def\unnumbsubsecentry ##1##2##3##4{% - \pdfoutline goto name{\pdfmkpgn{##4}}{##1}} - \def\subsubsecentry ##1##2##3##4##5##6{% - \pdfoutline goto name{\pdfmkpgn{##6}}{##1}} - \def\unnumbsubsubsecentry ##1##2##3##4##5{% - \pdfoutline goto name{\pdfmkpgn{##5}}{##1}} - \input \jobname.toc - \endgroup\fi - }} - \def\makelinks #1,{% - \def\params{#1}\def\E{END}% - \ifx\params\E - \let\nextmakelinks=\relax - \else - \let\nextmakelinks=\makelinks - \ifnum\lnkcount>0,\fi - \picknum{#1}% - \startlink attr{/Border [0 0 0]} - goto name{\pdfmkpgn{\the\pgn}}% - \linkcolor #1% - \advance\lnkcount by 1% - \endlink - \fi - \nextmakelinks - } - \def\picknum#1{\expandafter\pn#1} - \def\pn#1{% - \def\p{#1}% - \ifx\p\lbrace - \let\nextpn=\ppn - \else - \let\nextpn=\ppnn - \def\first{#1} - \fi - \nextpn - } - \def\ppn#1{\pgn=#1\gobble} - \def\ppnn{\pgn=\first} - \def\pdfmklnk#1{\lnkcount=0\makelinks #1,END,} - \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} - \def\skipspaces#1{\def\PP{#1}\def\D{|}% - \ifx\PP\D\let\nextsp\relax - \else\let\nextsp\skipspaces - \ifx\p\space\else\addtokens{\filename}{\PP}% - \advance\filenamelength by 1 - \fi - \fi - \nextsp} - \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax} - \ifnum\pdftexversion < 14 - \let \startlink \pdfannotlink - \else - \let \startlink \pdfstartlink - \fi - \def\pdfurl#1{% - \begingroup - \normalturnoffactive\def\@{@}% - \let\value=\expandablevalue - \leavevmode\Red - \startlink attr{/Border [0 0 0]}% - user{/Subtype /Link /A << /S /URI /URI (#1) >>}% - % #1 - \endgroup} - \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} - \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} - \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} - \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} - \def\maketoks{% - \expandafter\poptoks\the\toksA|ENDTOKS| - \ifx\first0\adn0 - \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 - \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 - \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 - \else - \ifnum0=\countA\else\makelink\fi - \ifx\first.\let\next=\done\else - \let\next=\maketoks - \addtokens{\toksB}{\the\toksD} - \ifx\first,\addtokens{\toksB}{\space}\fi - \fi - \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi - \next} - \def\makelink{\addtokens{\toksB}% - {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} - \def\pdflink#1{% - \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}} - \linkcolor #1\endlink} - \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} -\fi % \ifx\pdfoutput - - -\message{fonts,} -% Font-change commands. - -% Texinfo sort of supports the sans serif font style, which plain TeX does not. -% So we set up a \sf analogous to plain's \rm, etc. -\newfam\sffam -\def\sf{\fam=\sffam \tensf} -\let\li = \sf % Sometimes we call it \li, not \sf. - -% We don't need math for this one. -\def\ttsl{\tenttsl} - -% Default leading. -\newdimen\textleading \textleading = 13.2pt - -% Set the baselineskip to #1, and the lineskip and strut size -% correspondingly. There is no deep meaning behind these magic numbers -% used as factors; they just match (closely enough) what Knuth defined. -% -\def\lineskipfactor{.08333} -\def\strutheightpercent{.70833} -\def\strutdepthpercent {.29167} -% -\def\setleading#1{% - \normalbaselineskip = #1\relax - \normallineskip = \lineskipfactor\normalbaselineskip - \normalbaselines - \setbox\strutbox =\hbox{% - \vrule width0pt height\strutheightpercent\baselineskip - depth \strutdepthpercent \baselineskip - }% -} - -% Set the font macro #1 to the font named #2, adding on the -% specified font prefix (normally `cm'). -% #3 is the font's design size, #4 is a scale factor -\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4} - -% Use cm as the default font prefix. -% To specify the font prefix, you must define \fontprefix -% before you read in texinfo.tex. -\ifx\fontprefix\undefined -\def\fontprefix{cm} -\fi -% Support font families that don't use the same naming scheme as CM. -\def\rmshape{r} -\def\rmbshape{bx} %where the normal face is bold -\def\bfshape{b} -\def\bxshape{bx} -\def\ttshape{tt} -\def\ttbshape{tt} -\def\ttslshape{sltt} -\def\itshape{ti} -\def\itbshape{bxti} -\def\slshape{sl} -\def\slbshape{bxsl} -\def\sfshape{ss} -\def\sfbshape{ss} -\def\scshape{csc} -\def\scbshape{csc} - -\newcount\mainmagstep -\ifx\bigger\relax - % not really supported. - \let\mainmagstep=\magstep1 - \setfont\textrm\rmshape{12}{1000} - \setfont\texttt\ttshape{12}{1000} -\else - \mainmagstep=\magstephalf - \setfont\textrm\rmshape{10}{\mainmagstep} - \setfont\texttt\ttshape{10}{\mainmagstep} -\fi -% Instead of cmb10, you many want to use cmbx10. -% cmbx10 is a prettier font on its own, but cmb10 -% looks better when embedded in a line with cmr10. -\setfont\textbf\bfshape{10}{\mainmagstep} -\setfont\textit\itshape{10}{\mainmagstep} -\setfont\textsl\slshape{10}{\mainmagstep} -\setfont\textsf\sfshape{10}{\mainmagstep} -\setfont\textsc\scshape{10}{\mainmagstep} -\setfont\textttsl\ttslshape{10}{\mainmagstep} -\font\texti=cmmi10 scaled \mainmagstep -\font\textsy=cmsy10 scaled \mainmagstep - -% A few fonts for @defun, etc. -\setfont\defbf\bxshape{10}{\magstep1} %was 1314 -\setfont\deftt\ttshape{10}{\magstep1} -\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf} - -% Fonts for indices, footnotes, small examples (9pt). -\setfont\smallrm\rmshape{9}{1000} -\setfont\smalltt\ttshape{9}{1000} -\setfont\smallbf\bfshape{10}{900} -\setfont\smallit\itshape{9}{1000} -\setfont\smallsl\slshape{9}{1000} -\setfont\smallsf\sfshape{9}{1000} -\setfont\smallsc\scshape{10}{900} -\setfont\smallttsl\ttslshape{10}{900} -\font\smalli=cmmi9 -\font\smallsy=cmsy9 - -% Fonts for small examples (8pt). -\setfont\smallerrm\rmshape{8}{1000} -\setfont\smallertt\ttshape{8}{1000} -\setfont\smallerbf\bfshape{10}{800} -\setfont\smallerit\itshape{8}{1000} -\setfont\smallersl\slshape{8}{1000} -\setfont\smallersf\sfshape{8}{1000} -\setfont\smallersc\scshape{10}{800} -\setfont\smallerttsl\ttslshape{10}{800} -\font\smalleri=cmmi8 -\font\smallersy=cmsy8 - -% Fonts for title page: -\setfont\titlerm\rmbshape{12}{\magstep3} -\setfont\titleit\itbshape{10}{\magstep4} -\setfont\titlesl\slbshape{10}{\magstep4} -\setfont\titlett\ttbshape{12}{\magstep3} -\setfont\titlettsl\ttslshape{10}{\magstep4} -\setfont\titlesf\sfbshape{17}{\magstep1} -\let\titlebf=\titlerm -\setfont\titlesc\scbshape{10}{\magstep4} -\font\titlei=cmmi12 scaled \magstep3 -\font\titlesy=cmsy10 scaled \magstep4 -\def\authorrm{\secrm} - -% Chapter (and unnumbered) fonts (17.28pt). -\setfont\chaprm\rmbshape{12}{\magstep2} -\setfont\chapit\itbshape{10}{\magstep3} -\setfont\chapsl\slbshape{10}{\magstep3} -\setfont\chaptt\ttbshape{12}{\magstep2} -\setfont\chapttsl\ttslshape{10}{\magstep3} -\setfont\chapsf\sfbshape{17}{1000} -\let\chapbf=\chaprm -\setfont\chapsc\scbshape{10}{\magstep3} -\font\chapi=cmmi12 scaled \magstep2 -\font\chapsy=cmsy10 scaled \magstep3 - -% Section fonts (14.4pt). -\setfont\secrm\rmbshape{12}{\magstep1} -\setfont\secit\itbshape{10}{\magstep2} -\setfont\secsl\slbshape{10}{\magstep2} -\setfont\sectt\ttbshape{12}{\magstep1} -\setfont\secttsl\ttslshape{10}{\magstep2} -\setfont\secsf\sfbshape{12}{\magstep1} -\let\secbf\secrm -\setfont\secsc\scbshape{10}{\magstep2} -\font\seci=cmmi12 scaled \magstep1 -\font\secsy=cmsy10 scaled \magstep2 - -% Subsection fonts (13.15pt). -\setfont\ssecrm\rmbshape{12}{\magstephalf} -\setfont\ssecit\itbshape{10}{1315} -\setfont\ssecsl\slbshape{10}{1315} -\setfont\ssectt\ttbshape{12}{\magstephalf} -\setfont\ssecttsl\ttslshape{10}{1315} -\setfont\ssecsf\sfbshape{12}{\magstephalf} -\let\ssecbf\ssecrm -\setfont\ssecsc\scbshape{10}{\magstep1} -\font\sseci=cmmi12 scaled \magstephalf -\font\ssecsy=cmsy10 scaled 1315 -% The smallcaps and symbol fonts should actually be scaled \magstep1.5, -% but that is not a standard magnification. - -% In order for the font changes to affect most math symbols and letters, -% we have to define the \textfont of the standard families. Since -% texinfo doesn't allow for producing subscripts and superscripts except -% in the main text, we don't bother to reset \scriptfont and -% \scriptscriptfont (which would also require loading a lot more fonts). -% -\def\resetmathfonts{% - \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy - \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf - \textfont\ttfam=\tentt \textfont\sffam=\tensf -} - -% The font-changing commands redefine the meanings of \tenSTYLE, instead -% of just \STYLE. We do this so that font changes will continue to work -% in math mode, where it is the current \fam that is relevant in most -% cases, not the current font. Plain TeX does \def\bf{\fam=\bffam -% \tenbf}, for example. By redefining \tenbf, we obviate the need to -% redefine \bf itself. -\def\textfonts{% - \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl - \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc - \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl - \resetmathfonts \setleading{\textleading}} -\def\titlefonts{% - \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl - \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc - \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy - \let\tenttsl=\titlettsl - \resetmathfonts \setleading{25pt}} -\def\titlefont#1{{\titlefonts\rm #1}} -\def\chapfonts{% - \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl - \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc - \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl - \resetmathfonts \setleading{19pt}} -\def\secfonts{% - \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl - \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc - \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy \let\tenttsl=\secttsl - \resetmathfonts \setleading{16pt}} -\def\subsecfonts{% - \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl - \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc - \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy \let\tenttsl=\ssecttsl - \resetmathfonts \setleading{15pt}} -\let\subsubsecfonts = \subsecfonts % Maybe make sssec fonts scaled magstephalf? -\def\smallfonts{% - \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl - \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc - \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy - \let\tenttsl=\smallttsl - \resetmathfonts \setleading{10.5pt}} -\def\smallerfonts{% - \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl - \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc - \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy - \let\tenttsl=\smallerttsl - \resetmathfonts \setleading{9.5pt}} -\let\smallexamplefonts = \smallerfonts - -% Set up the default fonts, so we can use them for creating boxes. -% -\textfonts - -% Define these so they can be easily changed for other fonts. -\def\angleleft{$\langle$} -\def\angleright{$\rangle$} - -% Count depth in font-changes, for error checks -\newcount\fontdepth \fontdepth=0 - -% Fonts for short table of contents. -\setfont\shortcontrm\rmshape{12}{1000} -\setfont\shortcontbf\bxshape{12}{1000} -\setfont\shortcontsl\slshape{12}{1000} - -%% Add scribe-like font environments, plus @l for inline lisp (usually sans -%% serif) and @ii for TeX italic - -% \smartitalic{ARG} outputs arg in italics, followed by an italic correction -% unless the following character is such as not to need one. -\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else\/\fi\fi\fi} -\def\smartslanted#1{{\sl #1}\futurelet\next\smartitalicx} -\def\smartitalic#1{{\it #1}\futurelet\next\smartitalicx} - -\let\i=\smartitalic -\let\var=\smartslanted -\let\dfn=\smartslanted -\let\emph=\smartitalic -\let\cite=\smartslanted - -\def\b#1{{\bf #1}} -\let\strong=\b - -% We can't just use \exhyphenpenalty, because that only has effect at -% the end of a paragraph. Restore normal hyphenation at the end of the -% group within which \nohyphenation is presumably called. -% -\def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation} -\def\restorehyphenation{\hyphenchar\font = `- } - -\def\t#1{% - {\tt \rawbackslash \frenchspacing #1}% - \null -} -\let\ttfont=\t -\def\samp#1{`\tclose{#1}'\null} -\setfont\keyrm\rmshape{8}{1000} -\font\keysy=cmsy9 -\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% - \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% - \vbox{\hrule\kern-0.4pt - \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% - \kern-0.4pt\hrule}% - \kern-.06em\raise0.4pt\hbox{\angleright}}}} -% The old definition, with no lozenge: -%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null} -\def\ctrl #1{{\tt \rawbackslash \hat}#1} - -% @file, @option are the same as @samp. -\let\file=\samp -\let\option=\samp - -% @code is a modification of @t, -% which makes spaces the same size as normal in the surrounding text. -\def\tclose#1{% - {% - % Change normal interword space to be same as for the current font. - \spaceskip = \fontdimen2\font - % - % Switch to typewriter. - \tt - % - % But `\ ' produces the large typewriter interword space. - \def\ {{\spaceskip = 0pt{} }}% - % - % Turn off hyphenation. - \nohyphenation - % - \rawbackslash - \frenchspacing - #1% - }% - \null -} - -% We *must* turn on hyphenation at `-' and `_' in \code. -% Otherwise, it is too hard to avoid overfull hboxes -% in the Emacs manual, the Library manual, etc. - -% Unfortunately, TeX uses one parameter (\hyphenchar) to control -% both hyphenation at - and hyphenation within words. -% We must therefore turn them both off (\tclose does that) -% and arrange explicitly to hyphenate at a dash. -% -- rms. -{ - \catcode`\-=\active - \catcode`\_=\active - % - \global\def\code{\begingroup - \catcode`\-=\active \let-\codedash - \catcode`\_=\active \let_\codeunder - \codex - } - % - % If we end up with any active - characters when handling the index, - % just treat them as a normal -. - \global\def\indexbreaks{\catcode`\-=\active \let-\realdash} -} - -\def\realdash{-} -\def\codedash{-\discretionary{}{}{}} -\def\codeunder{% - % this is all so @math{@code{var_name}+1} can work. In math mode, _ - % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.) - % will therefore expand the active definition of _, which is us - % (inside @code that is), therefore an endless loop. - \ifusingtt{\ifmmode - \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_. - \else\normalunderscore \fi - \discretionary{}{}{}}% - {\_}% -} -\def\codex #1{\tclose{#1}\endgroup} - -% @kbd is like @code, except that if the argument is just one @key command, -% then @kbd has no effect. - -% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), -% `example' (@kbd uses ttsl only inside of @example and friends), -% or `code' (@kbd uses normal tty font always). -\def\kbdinputstyle{\parsearg\kbdinputstylexxx} -\def\kbdinputstylexxx#1{% - \def\arg{#1}% - \ifx\arg\worddistinct - \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% - \else\ifx\arg\wordexample - \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% - \else\ifx\arg\wordcode - \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% - \fi\fi\fi -} -\def\worddistinct{distinct} -\def\wordexample{example} -\def\wordcode{code} - -% Default is kbdinputdistinct. (Too much of a hassle to call the macro, -% the catcodes are wrong for parsearg to work.) -\gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl} - -\def\xkey{\key} -\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}% -\ifx\one\xkey\ifx\threex\three \key{#2}% -\else{\tclose{\kbdfont\look}}\fi -\else{\tclose{\kbdfont\look}}\fi} - -% For @url, @env, @command quotes seem unnecessary, so use \code. -\let\url=\code -\let\env=\code -\let\command=\code - -% @uref (abbreviation for `urlref') takes an optional (comma-separated) -% second argument specifying the text to display and an optional third -% arg as text to display instead of (rather than in addition to) the url -% itself. First (mandatory) arg is the url. Perhaps eventually put in -% a hypertex \special here. -% -\def\uref#1{\douref #1,,,\finish} -\def\douref#1,#2,#3,#4\finish{\begingroup - \unsepspaces - \pdfurl{#1}% - \setbox0 = \hbox{\ignorespaces #3}% - \ifdim\wd0 > 0pt - \unhbox0 % third arg given, show only that - \else - \setbox0 = \hbox{\ignorespaces #2}% - \ifdim\wd0 > 0pt - \ifpdf - \unhbox0 % PDF: 2nd arg given, show only it - \else - \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url - \fi - \else - \code{#1}% only url given, so show it - \fi - \fi - \endlink -\endgroup} - -% rms does not like angle brackets --karl, 17may97. -% So now @email is just like @uref, unless we are pdf. -% -%\def\email#1{\angleleft{\tt #1}\angleright} -\ifpdf - \def\email#1{\doemail#1,,\finish} - \def\doemail#1,#2,#3\finish{\begingroup - \unsepspaces - \pdfurl{mailto:#1}% - \setbox0 = \hbox{\ignorespaces #2}% - \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi - \endlink - \endgroup} -\else - \let\email=\uref -\fi - -% Check if we are currently using a typewriter font. Since all the -% Computer Modern typewriter fonts have zero interword stretch (and -% shrink), and it is reasonable to expect all typewriter fonts to have -% this property, we can check that font parameter. -% -\def\ifmonospace{\ifdim\fontdimen3\font=0pt } - -% Typeset a dimension, e.g., `in' or `pt'. The only reason for the -% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. -% -\def\dmn#1{\thinspace #1} - -\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par} - -% @l was never documented to mean ``switch to the Lisp font'', -% and it is not used as such in any manual I can find. We need it for -% Polish suppressed-l. --karl, 22sep96. -%\def\l#1{{\li #1}\null} - -% Explicit font changes: @r, @sc, undocumented @ii. -\def\r#1{{\rm #1}} % roman font -\def\sc#1{{\smallcaps#1}} % smallcaps font -\def\ii#1{{\it #1}} % italic font - -% @acronym downcases the argument and prints in smallcaps. -\def\acronym#1{{\smallcaps \lowercase{#1}}} - -% @pounds{} is a sterling sign. -\def\pounds{{\it\$}} - - -\message{page headings,} - -\newskip\titlepagetopglue \titlepagetopglue = 1.5in -\newskip\titlepagebottomglue \titlepagebottomglue = 2pc - -% First the title page. Must do @settitle before @titlepage. -\newif\ifseenauthor -\newif\iffinishedtitlepage - -% Do an implicit @contents or @shortcontents after @end titlepage if the -% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage. -% -\newif\ifsetcontentsaftertitlepage - \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue -\newif\ifsetshortcontentsaftertitlepage - \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue - -\def\shorttitlepage{\parsearg\shorttitlepagezzz} -\def\shorttitlepagezzz #1{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}% - \endgroup\page\hbox{}\page} - -\def\titlepage{\begingroup \parindent=0pt \textfonts - \let\subtitlerm=\tenrm - \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}% - % - \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines}% - % - % Leave some space at the very top of the page. - \vglue\titlepagetopglue - % - % Now you can print the title using @title. - \def\title{\parsearg\titlezzz}% - \def\titlezzz##1{\leftline{\titlefonts\rm ##1} - % print a rule at the page bottom also. - \finishedtitlepagefalse - \vskip4pt \hrule height 4pt width \hsize \vskip4pt}% - % No rule at page bottom unless we print one at the top with @title. - \finishedtitlepagetrue - % - % Now you can put text using @subtitle. - \def\subtitle{\parsearg\subtitlezzz}% - \def\subtitlezzz##1{{\subtitlefont \rightline{##1}}}% - % - % @author should come last, but may come many times. - \def\author{\parsearg\authorzzz}% - \def\authorzzz##1{\ifseenauthor\else\vskip 0pt plus 1filll\seenauthortrue\fi - {\authorfont \leftline{##1}}}% - % - % Most title ``pages'' are actually two pages long, with space - % at the top of the second. We don't want the ragged left on the second. - \let\oldpage = \page - \def\page{% - \iffinishedtitlepage\else - \finishtitlepage - \fi - \oldpage - \let\page = \oldpage - \hbox{}}% -% \def\page{\oldpage \hbox{}} -} - -\def\Etitlepage{% - \iffinishedtitlepage\else - \finishtitlepage - \fi - % It is important to do the page break before ending the group, - % because the headline and footline are only empty inside the group. - % If we use the new definition of \page, we always get a blank page - % after the title page, which we certainly don't want. - \oldpage - \endgroup - % - % Need this before the \...aftertitlepage checks so that if they are - % in effect the toc pages will come out with page numbers. - \HEADINGSon - % - % If they want short, they certainly want long too. - \ifsetshortcontentsaftertitlepage - \shortcontents - \contents - \global\let\shortcontents = \relax - \global\let\contents = \relax - \fi - % - \ifsetcontentsaftertitlepage - \contents - \global\let\contents = \relax - \global\let\shortcontents = \relax - \fi -} - -\def\finishtitlepage{% - \vskip4pt \hrule height 2pt width \hsize - \vskip\titlepagebottomglue - \finishedtitlepagetrue -} - -%%% Set up page headings and footings. - -\let\thispage=\folio - -\newtoks\evenheadline % headline on even pages -\newtoks\oddheadline % headline on odd pages -\newtoks\evenfootline % footline on even pages -\newtoks\oddfootline % footline on odd pages - -% Now make Tex use those variables -\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline - \else \the\evenheadline \fi}} -\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline - \else \the\evenfootline \fi}\HEADINGShook} -\let\HEADINGShook=\relax - -% Commands to set those variables. -% For example, this is what @headings on does -% @evenheading @thistitle|@thispage|@thischapter -% @oddheading @thischapter|@thispage|@thistitle -% @evenfooting @thisfile|| -% @oddfooting ||@thisfile - -\def\evenheading{\parsearg\evenheadingxxx} -\def\oddheading{\parsearg\oddheadingxxx} -\def\everyheading{\parsearg\everyheadingxxx} - -\def\evenfooting{\parsearg\evenfootingxxx} -\def\oddfooting{\parsearg\oddfootingxxx} -\def\everyfooting{\parsearg\everyfootingxxx} - -{\catcode`\@=0 % - -\gdef\evenheadingxxx #1{\evenheadingyyy #1@|@|@|@|\finish} -\gdef\evenheadingyyy #1@|#2@|#3@|#4\finish{% -\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} - -\gdef\oddheadingxxx #1{\oddheadingyyy #1@|@|@|@|\finish} -\gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{% -\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} - -\gdef\everyheadingxxx#1{\oddheadingxxx{#1}\evenheadingxxx{#1}}% - -\gdef\evenfootingxxx #1{\evenfootingyyy #1@|@|@|@|\finish} -\gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{% -\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} - -\gdef\oddfootingxxx #1{\oddfootingyyy #1@|@|@|@|\finish} -\gdef\oddfootingyyy #1@|#2@|#3@|#4\finish{% - \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% - % - % Leave some space for the footline. Hopefully ok to assume - % @evenfooting will not be used by itself. - \global\advance\pageheight by -\baselineskip - \global\advance\vsize by -\baselineskip -} - -\gdef\everyfootingxxx#1{\oddfootingxxx{#1}\evenfootingxxx{#1}} -% -}% unbind the catcode of @. - -% @headings double turns headings on for double-sided printing. -% @headings single turns headings on for single-sided printing. -% @headings off turns them off. -% @headings on same as @headings double, retained for compatibility. -% @headings after turns on double-sided headings after this page. -% @headings doubleafter turns on double-sided headings after this page. -% @headings singleafter turns on single-sided headings after this page. -% By default, they are off at the start of a document, -% and turned `on' after @end titlepage. - -\def\headings #1 {\csname HEADINGS#1\endcsname} - -\def\HEADINGSoff{ -\global\evenheadline={\hfil} \global\evenfootline={\hfil} -\global\oddheadline={\hfil} \global\oddfootline={\hfil}} -\HEADINGSoff -% When we turn headings on, set the page number to 1. -% For double-sided printing, put current file name in lower left corner, -% chapter name on inside top of right hand pages, document -% title on inside top of left hand pages, and page numbers on outside top -% edge of all pages. -\def\HEADINGSdouble{ -\global\pageno=1 -\global\evenfootline={\hfil} -\global\oddfootline={\hfil} -\global\evenheadline={\line{\folio\hfil\thistitle}} -\global\oddheadline={\line{\thischapter\hfil\folio}} -\global\let\contentsalignmacro = \chapoddpage -} -\let\contentsalignmacro = \chappager - -% For single-sided printing, chapter title goes across top left of page, -% page number on top right. -\def\HEADINGSsingle{ -\global\pageno=1 -\global\evenfootline={\hfil} -\global\oddfootline={\hfil} -\global\evenheadline={\line{\thischapter\hfil\folio}} -\global\oddheadline={\line{\thischapter\hfil\folio}} -\global\let\contentsalignmacro = \chappager -} -\def\HEADINGSon{\HEADINGSdouble} - -\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} -\let\HEADINGSdoubleafter=\HEADINGSafter -\def\HEADINGSdoublex{% -\global\evenfootline={\hfil} -\global\oddfootline={\hfil} -\global\evenheadline={\line{\folio\hfil\thistitle}} -\global\oddheadline={\line{\thischapter\hfil\folio}} -\global\let\contentsalignmacro = \chapoddpage -} - -\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} -\def\HEADINGSsinglex{% -\global\evenfootline={\hfil} -\global\oddfootline={\hfil} -\global\evenheadline={\line{\thischapter\hfil\folio}} -\global\oddheadline={\line{\thischapter\hfil\folio}} -\global\let\contentsalignmacro = \chappager -} - -% Subroutines used in generating headings -% This produces Day Month Year style of output. -% Only define if not already defined, in case a txi-??.tex file has set -% up a different format (e.g., txi-cs.tex does this). -\ifx\today\undefined -\def\today{% - \number\day\space - \ifcase\month - \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr - \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug - \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec - \fi - \space\number\year} -\fi - -% @settitle line... specifies the title of the document, for headings. -% It generates no output of its own. -\def\thistitle{\putwordNoTitle} -\def\settitle{\parsearg\settitlezzz} -\def\settitlezzz #1{\gdef\thistitle{#1}} - - -\message{tables,} -% Tables -- @table, @ftable, @vtable, @item(x), @kitem(x), @xitem(x). - -% default indentation of table text -\newdimen\tableindent \tableindent=.8in -% default indentation of @itemize and @enumerate text -\newdimen\itemindent \itemindent=.3in -% margin between end of table item and start of table text. -\newdimen\itemmargin \itemmargin=.1in - -% used internally for \itemindent minus \itemmargin -\newdimen\itemmax - -% Note @table, @vtable, and @vtable define @item, @itemx, etc., with -% these defs. -% They also define \itemindex -% to index the item name in whatever manner is desired (perhaps none). - -\newif\ifitemxneedsnegativevskip - -\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} - -\def\internalBitem{\smallbreak \parsearg\itemzzz} -\def\internalBitemx{\itemxpar \parsearg\itemzzz} - -\def\internalBxitem "#1"{\def\xitemsubtopix{#1} \smallbreak \parsearg\xitemzzz} -\def\internalBxitemx "#1"{\def\xitemsubtopix{#1} \itemxpar \parsearg\xitemzzz} - -\def\internalBkitem{\smallbreak \parsearg\kitemzzz} -\def\internalBkitemx{\itemxpar \parsearg\kitemzzz} - -\def\kitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \lastfunction}}% - \itemzzz {#1}} - -\def\xitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \xitemsubtopic}}% - \itemzzz {#1}} - -\def\itemzzz #1{\begingroup % - \advance\hsize by -\rightskip - \advance\hsize by -\tableindent - \setbox0=\hbox{\itemfont{#1}}% - \itemindex{#1}% - \nobreak % This prevents a break before @itemx. - % - % If the item text does not fit in the space we have, put it on a line - % by itself, and do not allow a page break either before or after that - % line. We do not start a paragraph here because then if the next - % command is, e.g., @kindex, the whatsit would get put into the - % horizontal list on a line by itself, resulting in extra blank space. - \ifdim \wd0>\itemmax - % - % Make this a paragraph so we get the \parskip glue and wrapping, - % but leave it ragged-right. - \begingroup - \advance\leftskip by-\tableindent - \advance\hsize by\tableindent - \advance\rightskip by0pt plus1fil - \leavevmode\unhbox0\par - \endgroup - % - % We're going to be starting a paragraph, but we don't want the - % \parskip glue -- logically it's part of the @item we just started. - \nobreak \vskip-\parskip - % - % Stop a page break at the \parskip glue coming up. Unfortunately - % we can't prevent a possible page break at the following - % \baselineskip glue. - \nobreak - \endgroup - \itemxneedsnegativevskipfalse - \else - % The item text fits into the space. Start a paragraph, so that the - % following text (if any) will end up on the same line. - \noindent - % Do this with kerns and \unhbox so that if there is a footnote in - % the item text, it can migrate to the main vertical list and - % eventually be printed. - \nobreak\kern-\tableindent - \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0 - \unhbox0 - \nobreak\kern\dimen0 - \endgroup - \itemxneedsnegativevskiptrue - \fi -} - -\def\item{\errmessage{@item while not in a table}} -\def\itemx{\errmessage{@itemx while not in a table}} -\def\kitem{\errmessage{@kitem while not in a table}} -\def\kitemx{\errmessage{@kitemx while not in a table}} -\def\xitem{\errmessage{@xitem while not in a table}} -\def\xitemx{\errmessage{@xitemx while not in a table}} - -% Contains a kludge to get @end[description] to work. -\def\description{\tablez{\dontindex}{1}{}{}{}{}} - -% @table, @ftable, @vtable. -\def\table{\begingroup\inENV\obeylines\obeyspaces\tablex} -{\obeylines\obeyspaces% -\gdef\tablex #1^^M{% -\tabley\dontindex#1 \endtabley}} - -\def\ftable{\begingroup\inENV\obeylines\obeyspaces\ftablex} -{\obeylines\obeyspaces% -\gdef\ftablex #1^^M{% -\tabley\fnitemindex#1 \endtabley -\def\Eftable{\endgraf\afterenvbreak\endgroup}% -\let\Etable=\relax}} - -\def\vtable{\begingroup\inENV\obeylines\obeyspaces\vtablex} -{\obeylines\obeyspaces% -\gdef\vtablex #1^^M{% -\tabley\vritemindex#1 \endtabley -\def\Evtable{\endgraf\afterenvbreak\endgroup}% -\let\Etable=\relax}} - -\def\dontindex #1{} -\def\fnitemindex #1{\doind {fn}{\code{#1}}}% -\def\vritemindex #1{\doind {vr}{\code{#1}}}% - -{\obeyspaces % -\gdef\tabley#1#2 #3 #4 #5 #6 #7\endtabley{\endgroup% -\tablez{#1}{#2}{#3}{#4}{#5}{#6}}} - -\def\tablez #1#2#3#4#5#6{% -\aboveenvbreak % -\begingroup % -\def\Edescription{\Etable}% Necessary kludge. -\let\itemindex=#1% -\ifnum 0#3>0 \advance \leftskip by #3\mil \fi % -\ifnum 0#4>0 \tableindent=#4\mil \fi % -\ifnum 0#5>0 \advance \rightskip by #5\mil \fi % -\def\itemfont{#2}% -\itemmax=\tableindent % -\advance \itemmax by -\itemmargin % -\advance \leftskip by \tableindent % -\exdentamount=\tableindent -\parindent = 0pt -\parskip = \smallskipamount -\ifdim \parskip=0pt \parskip=2pt \fi% -\def\Etable{\endgraf\afterenvbreak\endgroup}% -\let\item = \internalBitem % -\let\itemx = \internalBitemx % -\let\kitem = \internalBkitem % -\let\kitemx = \internalBkitemx % -\let\xitem = \internalBxitem % -\let\xitemx = \internalBxitemx % -} - -% This is the counter used by @enumerate, which is really @itemize - -\newcount \itemno - -\def\itemize{\parsearg\itemizezzz} - -\def\itemizezzz #1{% - \begingroup % ended by the @end itemize - \itemizey {#1}{\Eitemize} -} - -\def\itemizey #1#2{% -\aboveenvbreak % -\itemmax=\itemindent % -\advance \itemmax by -\itemmargin % -\advance \leftskip by \itemindent % -\exdentamount=\itemindent -\parindent = 0pt % -\parskip = \smallskipamount % -\ifdim \parskip=0pt \parskip=2pt \fi% -\def#2{\endgraf\afterenvbreak\endgroup}% -\def\itemcontents{#1}% -\let\item=\itemizeitem} - -% Set sfcode to normal for the chars that usually have another value. -% These are `.?!:;,' -\def\frenchspacing{\sfcode46=1000 \sfcode63=1000 \sfcode33=1000 - \sfcode58=1000 \sfcode59=1000 \sfcode44=1000 } - -% \splitoff TOKENS\endmark defines \first to be the first token in -% TOKENS, and \rest to be the remainder. -% -\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}% - -% Allow an optional argument of an uppercase letter, lowercase letter, -% or number, to specify the first label in the enumerated list. No -% argument is the same as `1'. -% -\def\enumerate{\parsearg\enumeratezzz} -\def\enumeratezzz #1{\enumeratey #1 \endenumeratey} -\def\enumeratey #1 #2\endenumeratey{% - \begingroup % ended by the @end enumerate - % - % If we were given no argument, pretend we were given `1'. - \def\thearg{#1}% - \ifx\thearg\empty \def\thearg{1}\fi - % - % Detect if the argument is a single token. If so, it might be a - % letter. Otherwise, the only valid thing it can be is a number. - % (We will always have one token, because of the test we just made. - % This is a good thing, since \splitoff doesn't work given nothing at - % all -- the first parameter is undelimited.) - \expandafter\splitoff\thearg\endmark - \ifx\rest\empty - % Only one token in the argument. It could still be anything. - % A ``lowercase letter'' is one whose \lccode is nonzero. - % An ``uppercase letter'' is one whose \lccode is both nonzero, and - % not equal to itself. - % Otherwise, we assume it's a number. - % - % We need the \relax at the end of the \ifnum lines to stop TeX from - % continuing to look for a . - % - \ifnum\lccode\expandafter`\thearg=0\relax - \numericenumerate % a number (we hope) - \else - % It's a letter. - \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax - \lowercaseenumerate % lowercase letter - \else - \uppercaseenumerate % uppercase letter - \fi - \fi - \else - % Multiple tokens in the argument. We hope it's a number. - \numericenumerate - \fi -} - -% An @enumerate whose labels are integers. The starting integer is -% given in \thearg. -% -\def\numericenumerate{% - \itemno = \thearg - \startenumeration{\the\itemno}% -} - -% The starting (lowercase) letter is in \thearg. -\def\lowercaseenumerate{% - \itemno = \expandafter`\thearg - \startenumeration{% - % Be sure we're not beyond the end of the alphabet. - \ifnum\itemno=0 - \errmessage{No more lowercase letters in @enumerate; get a bigger - alphabet}% - \fi - \char\lccode\itemno - }% -} - -% The starting (uppercase) letter is in \thearg. -\def\uppercaseenumerate{% - \itemno = \expandafter`\thearg - \startenumeration{% - % Be sure we're not beyond the end of the alphabet. - \ifnum\itemno=0 - \errmessage{No more uppercase letters in @enumerate; get a bigger - alphabet} - \fi - \char\uccode\itemno - }% -} - -% Call itemizey, adding a period to the first argument and supplying the -% common last two arguments. Also subtract one from the initial value in -% \itemno, since @item increments \itemno. -% -\def\startenumeration#1{% - \advance\itemno by -1 - \itemizey{#1.}\Eenumerate\flushcr -} - -% @alphaenumerate and @capsenumerate are abbreviations for giving an arg -% to @enumerate. -% -\def\alphaenumerate{\enumerate{a}} -\def\capsenumerate{\enumerate{A}} -\def\Ealphaenumerate{\Eenumerate} -\def\Ecapsenumerate{\Eenumerate} - -% Definition of @item while inside @itemize. - -\def\itemizeitem{% -\advance\itemno by 1 -{\let\par=\endgraf \smallbreak}% -\ifhmode \errmessage{In hmode at itemizeitem}\fi -{\parskip=0in \hskip 0pt -\hbox to 0pt{\hss \itemcontents\hskip \itemmargin}% -\vadjust{\penalty 1200}}% -\flushcr} - -% @multitable macros -% Amy Hendrickson, 8/18/94, 3/6/96 -% -% @multitable ... @end multitable will make as many columns as desired. -% Contents of each column will wrap at width given in preamble. Width -% can be specified either with sample text given in a template line, -% or in percent of \hsize, the current width of text on page. - -% Table can continue over pages but will only break between lines. - -% To make preamble: -% -% Either define widths of columns in terms of percent of \hsize: -% @multitable @columnfractions .25 .3 .45 -% @item ... -% -% Numbers following @columnfractions are the percent of the total -% current hsize to be used for each column. You may use as many -% columns as desired. - - -% Or use a template: -% @multitable {Column 1 template} {Column 2 template} {Column 3 template} -% @item ... -% using the widest term desired in each column. -% -% For those who want to use more than one line's worth of words in -% the preamble, break the line within one argument and it -% will parse correctly, i.e., -% -% @multitable {Column 1 template} {Column 2 template} {Column 3 -% template} -% Not: -% @multitable {Column 1 template} {Column 2 template} -% {Column 3 template} - -% Each new table line starts with @item, each subsequent new column -% starts with @tab. Empty columns may be produced by supplying @tab's -% with nothing between them for as many times as empty columns are needed, -% ie, @tab@tab@tab will produce two empty columns. - -% @item, @tab, @multitable or @end multitable do not need to be on their -% own lines, but it will not hurt if they are. - -% Sample multitable: - -% @multitable {Column 1 template} {Column 2 template} {Column 3 template} -% @item first col stuff @tab second col stuff @tab third col -% @item -% first col stuff -% @tab -% second col stuff -% @tab -% third col -% @item first col stuff @tab second col stuff -% @tab Many paragraphs of text may be used in any column. -% -% They will wrap at the width determined by the template. -% @item@tab@tab This will be in third column. -% @end multitable - -% Default dimensions may be reset by user. -% @multitableparskip is vertical space between paragraphs in table. -% @multitableparindent is paragraph indent in table. -% @multitablecolmargin is horizontal space to be left between columns. -% @multitablelinespace is space to leave between table items, baseline -% to baseline. -% 0pt means it depends on current normal line spacing. -% -\newskip\multitableparskip -\newskip\multitableparindent -\newdimen\multitablecolspace -\newskip\multitablelinespace -\multitableparskip=0pt -\multitableparindent=6pt -\multitablecolspace=12pt -\multitablelinespace=0pt - -% Macros used to set up halign preamble: -% -\let\endsetuptable\relax -\def\xendsetuptable{\endsetuptable} -\let\columnfractions\relax -\def\xcolumnfractions{\columnfractions} -\newif\ifsetpercent - -% #1 is the part of the @columnfraction before the decimal point, which -% is presumably either 0 or the empty string (but we don't check, we -% just throw it away). #2 is the decimal part, which we use as the -% percent of \hsize for this column. -\def\pickupwholefraction#1.#2 {% - \global\advance\colcount by 1 - \expandafter\xdef\csname col\the\colcount\endcsname{.#2\hsize}% - \setuptable -} - -\newcount\colcount -\def\setuptable#1{% - \def\firstarg{#1}% - \ifx\firstarg\xendsetuptable - \let\go = \relax - \else - \ifx\firstarg\xcolumnfractions - \global\setpercenttrue - \else - \ifsetpercent - \let\go\pickupwholefraction - \else - \global\advance\colcount by 1 - \setbox0=\hbox{#1\unskip }% Add a normal word space as a separator; - % typically that is always in the input, anyway. - \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% - \fi - \fi - \ifx\go\pickupwholefraction - % Put the argument back for the \pickupwholefraction call, so - % we'll always have a period there to be parsed. - \def\go{\pickupwholefraction#1}% - \else - \let\go = \setuptable - \fi% - \fi - \go -} - -% This used to have \hskip1sp. But then the space in a template line is -% not enough. That is bad. So let's go back to just & until we -% encounter the problem it was intended to solve again. -% --karl, nathan@acm.org, 20apr99. -\def\tab{&} - -% @multitable ... @end multitable definitions: -% -\def\multitable{\parsearg\dotable} -\def\dotable#1{\bgroup - \vskip\parskip - \let\item\crcr - \tolerance=9500 - \hbadness=9500 - \setmultitablespacing - \parskip=\multitableparskip - \parindent=\multitableparindent - \overfullrule=0pt - \global\colcount=0 - \def\Emultitable{\global\setpercentfalse\cr\egroup\egroup}% - % - % To parse everything between @multitable and @item: - \setuptable#1 \endsetuptable - % - % \everycr will reset column counter, \colcount, at the end of - % each line. Every column entry will cause \colcount to advance by one. - % The table preamble - % looks at the current \colcount to find the correct column width. - \everycr{\noalign{% - % - % \filbreak%% keeps underfull box messages off when table breaks over pages. - % Maybe so, but it also creates really weird page breaks when the table - % breaks over pages. Wouldn't \vfil be better? Wait until the problem - % manifests itself, so it can be fixed for real --karl. - \global\colcount=0\relax}}% - % - % This preamble sets up a generic column definition, which will - % be used as many times as user calls for columns. - % \vtop will set a single line and will also let text wrap and - % continue for many paragraphs if desired. - \halign\bgroup&\global\advance\colcount by 1\relax - \multistrut\vtop{\hsize=\expandafter\csname col\the\colcount\endcsname - % - % In order to keep entries from bumping into each other - % we will add a \leftskip of \multitablecolspace to all columns after - % the first one. - % - % If a template has been used, we will add \multitablecolspace - % to the width of each template entry. - % - % If the user has set preamble in terms of percent of \hsize we will - % use that dimension as the width of the column, and the \leftskip - % will keep entries from bumping into each other. Table will start at - % left margin and final column will justify at right margin. - % - % Make sure we don't inherit \rightskip from the outer environment. - \rightskip=0pt - \ifnum\colcount=1 - % The first column will be indented with the surrounding text. - \advance\hsize by\leftskip - \else - \ifsetpercent \else - % If user has not set preamble in terms of percent of \hsize - % we will advance \hsize by \multitablecolspace. - \advance\hsize by \multitablecolspace - \fi - % In either case we will make \leftskip=\multitablecolspace: - \leftskip=\multitablecolspace - \fi - % Ignoring space at the beginning and end avoids an occasional spurious - % blank line, when TeX decides to break the line at the space before the - % box from the multistrut, so the strut ends up on a line by itself. - % For example: - % @multitable @columnfractions .11 .89 - % @item @code{#} - % @tab Legal holiday which is valid in major parts of the whole country. - % Is automatically provided with highlighting sequences respectively marking - % characters. - \noindent\ignorespaces##\unskip\multistrut}\cr -} - -\def\setmultitablespacing{% test to see if user has set \multitablelinespace. -% If so, do nothing. If not, give it an appropriate dimension based on -% current baselineskip. -\ifdim\multitablelinespace=0pt -\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip -\global\advance\multitablelinespace by-\ht0 -%% strut to put in table in case some entry doesn't have descenders, -%% to keep lines equally spaced -\let\multistrut = \strut -\else -%% FIXME: what is \box0 supposed to be? -\gdef\multistrut{\vrule height\multitablelinespace depth\dp0 -width0pt\relax} \fi -%% Test to see if parskip is larger than space between lines of -%% table. If not, do nothing. -%% If so, set to same dimension as multitablelinespace. -\ifdim\multitableparskip>\multitablelinespace -\global\multitableparskip=\multitablelinespace -\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller - %% than skip between lines in the table. -\fi% -\ifdim\multitableparskip=0pt -\global\multitableparskip=\multitablelinespace -\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller - %% than skip between lines in the table. -\fi} - - -\message{conditionals,} -% Prevent errors for section commands. -% Used in @ignore and in failing conditionals. -\def\ignoresections{% - \let\chapter=\relax - \let\unnumbered=\relax - \let\top=\relax - \let\unnumberedsec=\relax - \let\unnumberedsection=\relax - \let\unnumberedsubsec=\relax - \let\unnumberedsubsection=\relax - \let\unnumberedsubsubsec=\relax - \let\unnumberedsubsubsection=\relax - \let\section=\relax - \let\subsec=\relax - \let\subsubsec=\relax - \let\subsection=\relax - \let\subsubsection=\relax - \let\appendix=\relax - \let\appendixsec=\relax - \let\appendixsection=\relax - \let\appendixsubsec=\relax - \let\appendixsubsection=\relax - \let\appendixsubsubsec=\relax - \let\appendixsubsubsection=\relax - \let\contents=\relax - \let\smallbook=\relax - \let\titlepage=\relax -} - -% Used in nested conditionals, where we have to parse the Texinfo source -% and so want to turn off most commands, in case they are used -% incorrectly. -% -\def\ignoremorecommands{% - \let\defcodeindex = \relax - \let\defcv = \relax - \let\deffn = \relax - \let\deffnx = \relax - \let\defindex = \relax - \let\defivar = \relax - \let\defmac = \relax - \let\defmethod = \relax - \let\defop = \relax - \let\defopt = \relax - \let\defspec = \relax - \let\deftp = \relax - \let\deftypefn = \relax - \let\deftypefun = \relax - \let\deftypeivar = \relax - \let\deftypeop = \relax - \let\deftypevar = \relax - \let\deftypevr = \relax - \let\defun = \relax - \let\defvar = \relax - \let\defvr = \relax - \let\ref = \relax - \let\xref = \relax - \let\printindex = \relax - \let\pxref = \relax - \let\settitle = \relax - \let\setchapternewpage = \relax - \let\setchapterstyle = \relax - \let\everyheading = \relax - \let\evenheading = \relax - \let\oddheading = \relax - \let\everyfooting = \relax - \let\evenfooting = \relax - \let\oddfooting = \relax - \let\headings = \relax - \let\include = \relax - \let\lowersections = \relax - \let\down = \relax - \let\raisesections = \relax - \let\up = \relax - \let\set = \relax - \let\clear = \relax - \let\item = \relax -} - -% Ignore @ignore, @ifhtml, @ifinfo, @ifplaintext, @ifnottex, @html, @menu, -% @direntry, and @documentdescription. -% -\def\ignore{\doignore{ignore}} -\def\ifhtml{\doignore{ifhtml}} -\def\ifinfo{\doignore{ifinfo}} -\def\ifplaintext{\doignore{ifplaintext}} -\def\ifnottex{\doignore{ifnottex}} -\def\html{\doignore{html}} -\def\menu{\doignore{menu}} -\def\direntry{\doignore{direntry}} -\def\documentdescription{\doignore{documentdescription}} -\def\documentdescriptionword{documentdescription} - -% @dircategory CATEGORY -- specify a category of the dir file -% which this file should belong to. Ignore this in TeX. -\let\dircategory = \comment - -% Ignore text until a line `@end #1'. -% -\def\doignore#1{\begingroup - % Don't complain about control sequences we have declared \outer. - \ignoresections - % - % Define a command to swallow text until we reach `@end #1'. - % This @ is a catcode 12 token (that is the normal catcode of @ in - % this texinfo.tex file). We change the catcode of @ below to match. - \long\def\doignoretext##1@end #1{\enddoignore}% - % - % Make sure that spaces turn into tokens that match what \doignoretext wants. - \catcode32 = 10 - % - % Ignore braces, too, so mismatched braces don't cause trouble. - \catcode`\{ = 9 - \catcode`\} = 9 - % - % We must not have @c interpreted as a control sequence. - \catcode`\@ = 12 - % - \def\ignoreword{#1}% - \ifx\ignoreword\documentdescriptionword - % The c kludge breaks documentdescription, since - % `documentdescription' contains a `c'. Means not everything will - % be ignored inside @documentdescription, but oh well... - \else - % Make the letter c a comment character so that the rest of the line - % will be ignored. This way, the document can have (for example) - % @c @end ifinfo - % and the @end ifinfo will be properly ignored. - % (We've just changed @ to catcode 12.) - \catcode`\c = 14 - \fi - % - % And now expand the command defined above. - \doignoretext -} - -% What we do to finish off ignored text. -% -\def\enddoignore{\endgroup\ignorespaces}% - -\newif\ifwarnedobs\warnedobsfalse -\def\obstexwarn{% - \ifwarnedobs\relax\else - % We need to warn folks that they may have trouble with TeX 3.0. - % This uses \immediate\write16 rather than \message to get newlines. - \immediate\write16{} - \immediate\write16{WARNING: for users of Unix TeX 3.0!} - \immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).} - \immediate\write16{If you are running another version of TeX, relax.} - \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.} - \immediate\write16{ Then upgrade your TeX installation if you can.} - \immediate\write16{ (See ftp://ftp.gnu.org/pub/gnu/TeX.README.)} - \immediate\write16{If you are stuck with version 3.0, run the} - \immediate\write16{ script ``tex3patch'' from the Texinfo distribution} - \immediate\write16{ to use a workaround.} - \immediate\write16{} - \global\warnedobstrue - \fi -} - -% **In TeX 3.0, setting text in \nullfont hangs tex. For a -% workaround (which requires the file ``dummy.tfm'' to be installed), -% uncomment the following line: -%%%%%\font\nullfont=dummy\let\obstexwarn=\relax - -% Ignore text, except that we keep track of conditional commands for -% purposes of nesting, up to an `@end #1' command. -% -\def\nestedignore#1{% - \obstexwarn - % We must actually expand the ignored text to look for the @end - % command, so that nested ignore constructs work. Thus, we put the - % text into a \vbox and then do nothing with the result. To minimize - % the change of memory overflow, we follow the approach outlined on - % page 401 of the TeXbook: make the current font be a dummy font. - % - \setbox0 = \vbox\bgroup - % Don't complain about control sequences we have declared \outer. - \ignoresections - % - % Define `@end #1' to end the box, which will in turn undefine the - % @end command again. - \expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}% - % - % We are going to be parsing Texinfo commands. Most cause no - % trouble when they are used incorrectly, but some commands do - % complicated argument parsing or otherwise get confused, so we - % undefine them. - % - % We can't do anything about stray @-signs, unfortunately; - % they'll produce `undefined control sequence' errors. - \ignoremorecommands - % - % Set the current font to be \nullfont, a TeX primitive, and define - % all the font commands to also use \nullfont. We don't use - % dummy.tfm, as suggested in the TeXbook, because not all sites - % might have that installed. Therefore, math mode will still - % produce output, but that should be an extremely small amount of - % stuff compared to the main input. - % - \nullfont - \let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont - \let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont - \let\tensf=\nullfont - % Similarly for index fonts. - \let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont - \let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont - \let\smallsf=\nullfont - % Similarly for smallexample fonts. - \let\smallerrm=\nullfont \let\smallerit=\nullfont \let\smallersl=\nullfont - \let\smallerbf=\nullfont \let\smallertt=\nullfont \let\smallersc=\nullfont - \let\smallersf=\nullfont - % - % Don't complain when characters are missing from the fonts. - \tracinglostchars = 0 - % - % Don't bother to do space factor calculations. - \frenchspacing - % - % Don't report underfull hboxes. - \hbadness = 10000 - % - % Do minimal line-breaking. - \pretolerance = 10000 - % - % Do not execute instructions in @tex - \def\tex{\doignore{tex}}% - % Do not execute macro definitions. - % `c' is a comment character, so the word `macro' will get cut off. - \def\macro{\doignore{ma}}% -} - -% @set VAR sets the variable VAR to an empty value. -% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. -% -% Since we want to separate VAR from REST-OF-LINE (which might be -% empty), we can't just use \parsearg; we have to insert a space of our -% own to delimit the rest of the line, and then take it out again if we -% didn't need it. Make sure the catcode of space is correct to avoid -% losing inside @example, for instance. -% -\def\set{\begingroup\catcode` =10 - \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR. - \parsearg\setxxx} -\def\setxxx#1{\setyyy#1 \endsetyyy} -\def\setyyy#1 #2\endsetyyy{% - \def\temp{#2}% - \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty - \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted. - \fi - \endgroup -} -% Can't use \xdef to pre-expand #2 and save some time, since \temp or -% \next or other control sequences that we've defined might get us into -% an infinite loop. Consider `@set foo @cite{bar}'. -\def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}} - -% @clear VAR clears (i.e., unsets) the variable VAR. -% -\def\clear{\parsearg\clearxxx} -\def\clearxxx#1{\global\expandafter\let\csname SET#1\endcsname=\relax} - -% @value{foo} gets the text saved in variable foo. -{ - \catcode`\_ = \active - % - % We might end up with active _ or - characters in the argument if - % we're called from @code, as @code{@value{foo-bar_}}. So \let any - % such active characters to their normal equivalents. - \gdef\value{\begingroup - \catcode`\-=12 \catcode`\_=12 - \indexbreaks \let_\normalunderscore - \valuexxx} -} -\def\valuexxx#1{\expandablevalue{#1}\endgroup} - -% We have this subroutine so that we can handle at least some @value's -% properly in indexes (we \let\value to this in \indexdummies). Ones -% whose names contain - or _ still won't work, but we can't do anything -% about that. The command has to be fully expandable, since the result -% winds up in the index file. This means that if the variable's value -% contains other Texinfo commands, it's almost certain it will fail -% (although perhaps we could fix that with sufficient work to do a -% one-level expansion on the result, instead of complete). -% -\def\expandablevalue#1{% - \expandafter\ifx\csname SET#1\endcsname\relax - {[No value for ``#1'']}% - \else - \csname SET#1\endcsname - \fi -} - -% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined -% with @set. -% -\def\ifset{\parsearg\ifsetxxx} -\def\ifsetxxx #1{% - \expandafter\ifx\csname SET#1\endcsname\relax - \expandafter\ifsetfail - \else - \expandafter\ifsetsucceed - \fi -} -\def\ifsetsucceed{\conditionalsucceed{ifset}} -\def\ifsetfail{\nestedignore{ifset}} -\defineunmatchedend{ifset} - -% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been -% defined with @set, or has been undefined with @clear. -% -\def\ifclear{\parsearg\ifclearxxx} -\def\ifclearxxx #1{% - \expandafter\ifx\csname SET#1\endcsname\relax - \expandafter\ifclearsucceed - \else - \expandafter\ifclearfail - \fi -} -\def\ifclearsucceed{\conditionalsucceed{ifclear}} -\def\ifclearfail{\nestedignore{ifclear}} -\defineunmatchedend{ifclear} - -% @iftex, @ifnothtml, @ifnotinfo, @ifnotplaintext always succeed; we -% read the text following, through the first @end iftex (etc.). Make -% `@end iftex' (etc.) valid only after an @iftex. -% -\def\iftex{\conditionalsucceed{iftex}} -\def\ifnothtml{\conditionalsucceed{ifnothtml}} -\def\ifnotinfo{\conditionalsucceed{ifnotinfo}} -\def\ifnotplaintext{\conditionalsucceed{ifnotplaintext}} -\defineunmatchedend{iftex} -\defineunmatchedend{ifnothtml} -\defineunmatchedend{ifnotinfo} -\defineunmatchedend{ifnotplaintext} - -% We can't just want to start a group at @iftex (etc.) and end it at -% @end iftex, since then @set commands inside the conditional have no -% effect (they'd get reverted at the end of the group). So we must -% define \Eiftex to redefine itself to be its previous value. (We can't -% just define it to fail again with an ``unmatched end'' error, since -% the @ifset might be nested.) -% -\def\conditionalsucceed#1{% - \edef\temp{% - % Remember the current value of \E#1. - \let\nece{prevE#1} = \nece{E#1}% - % - % At the `@end #1', redefine \E#1 to be its previous value. - \def\nece{E#1}{\let\nece{E#1} = \nece{prevE#1}}% - }% - \temp -} - -% We need to expand lots of \csname's, but we don't want to expand the -% control sequences after we've constructed them. -% -\def\nece#1{\expandafter\noexpand\csname#1\endcsname} - -% @defininfoenclose. -\let\definfoenclose=\comment - - -\message{indexing,} -% Index generation facilities - -% Define \newwrite to be identical to plain tex's \newwrite -% except not \outer, so it can be used within \newindex. -{\catcode`\@=11 -\gdef\newwrite{\alloc@7\write\chardef\sixt@@n}} - -% \newindex {foo} defines an index named foo. -% It automatically defines \fooindex such that -% \fooindex ...rest of line... puts an entry in the index foo. -% It also defines \fooindfile to be the number of the output channel for -% the file that accumulates this index. The file's extension is foo. -% The name of an index should be no more than 2 characters long -% for the sake of vms. -% -\def\newindex#1{% - \iflinks - \expandafter\newwrite \csname#1indfile\endcsname - \openout \csname#1indfile\endcsname \jobname.#1 % Open the file - \fi - \expandafter\xdef\csname#1index\endcsname{% % Define @#1index - \noexpand\doindex{#1}} -} - -% @defindex foo == \newindex{foo} -% -\def\defindex{\parsearg\newindex} - -% Define @defcodeindex, like @defindex except put all entries in @code. -% -\def\defcodeindex{\parsearg\newcodeindex} -% -\def\newcodeindex#1{% - \iflinks - \expandafter\newwrite \csname#1indfile\endcsname - \openout \csname#1indfile\endcsname \jobname.#1 - \fi - \expandafter\xdef\csname#1index\endcsname{% - \noexpand\docodeindex{#1}}% -} - - -% @synindex foo bar makes index foo feed into index bar. -% Do this instead of @defindex foo if you don't want it as a separate index. -% -% @syncodeindex foo bar similar, but put all entries made for index foo -% inside @code. -% -\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} -\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} - -% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo), -% #3 the target index (bar). -\def\dosynindex#1#2#3{% - % Only do \closeout if we haven't already done it, else we'll end up - % closing the target index. - \expandafter \ifx\csname donesynindex#2\endcsname \undefined - % The \closeout helps reduce unnecessary open files; the limit on the - % Acorn RISC OS is a mere 16 files. - \expandafter\closeout\csname#2indfile\endcsname - \expandafter\let\csname\donesynindex#2\endcsname = 1 - \fi - % redefine \fooindfile: - \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname - \expandafter\let\csname#2indfile\endcsname=\temp - % redefine \fooindex: - \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}% -} - -% Define \doindex, the driver for all \fooindex macros. -% Argument #1 is generated by the calling \fooindex macro, -% and it is "foo", the name of the index. - -% \doindex just uses \parsearg; it calls \doind for the actual work. -% This is because \doind is more useful to call from other macros. - -% There is also \dosubind {index}{topic}{subtopic} -% which makes an entry in a two-level index such as the operation index. - -\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer} -\def\singleindexer #1{\doind{\indexname}{#1}} - -% like the previous two, but they put @code around the argument. -\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer} -\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} - -% Take care of texinfo commands likely to appear in an index entry. -% (Must be a way to avoid doing expansion at all, and thus not have to -% laboriously list every single command here.) -% -\def\indexdummies{% -\def\ { }% -\def\@{@}% change to @@ when we switch to @ as escape char in aux files. -% Need these in case \tex is in effect and \{ is a \delimiter again. -% But can't use \lbracecmd and \rbracecmd because texindex assumes -% braces and backslashes are used only as delimiters. -\let\{ = \mylbrace -\let\} = \myrbrace -\def\_{{\realbackslash _}}% -\normalturnoffactive -% -% Take care of the plain tex accent commands. -\def\,##1{\realbackslash ,{##1}}% -\def\"{\realbackslash "}% -\def\`{\realbackslash `}% -\def\'{\realbackslash '}% -\def\^{\realbackslash ^}% -\def\~{\realbackslash ~}% -\def\={\realbackslash =}% -\def\b{\realbackslash b}% -\def\c{\realbackslash c}% -\def\d{\realbackslash d}% -\def\u{\realbackslash u}% -\def\v{\realbackslash v}% -\def\H{\realbackslash H}% -\def\dotless##1{\realbackslash dotless {##1}}% -% Take care of the plain tex special European modified letters. -\def\AA{\realbackslash AA}% -\def\AE{\realbackslash AE}% -\def\L{\realbackslash L}% -\def\OE{\realbackslash OE}% -\def\O{\realbackslash O}% -\def\aa{\realbackslash aa}% -\def\ae{\realbackslash ae}% -\def\l{\realbackslash l}% -\def\oe{\realbackslash oe}% -\def\o{\realbackslash o}% -\def\ss{\realbackslash ss}% -% -% Although these internals commands shouldn't show up, sometimes they do. -\def\bf{\realbackslash bf }% -\def\gtr{\realbackslash gtr}% -\def\hat{\realbackslash hat}% -\def\less{\realbackslash less}% -%\def\rm{\realbackslash rm }% -\def\sf{\realbackslash sf}% -\def\sl{\realbackslash sl }% -\def\tclose##1{\realbackslash tclose {##1}}% -\def\tt{\realbackslash tt}% -% -\def\b##1{\realbackslash b {##1}}% -\def\i##1{\realbackslash i {##1}}% -\def\sc##1{\realbackslash sc {##1}}% -\def\t##1{\realbackslash t {##1}}% -\def\r##1{\realbackslash r {##1}}% -% -\def\TeX{\realbackslash TeX}% -\def\acronym##1{\realbackslash acronym {##1}}% -\def\cite##1{\realbackslash cite {##1}}% -\def\code##1{\realbackslash code {##1}}% -\def\command##1{\realbackslash command {##1}}% -\def\dfn##1{\realbackslash dfn {##1}}% -\def\dots{\realbackslash dots }% -\def\emph##1{\realbackslash emph {##1}}% -\def\env##1{\realbackslash env {##1}}% -\def\file##1{\realbackslash file {##1}}% -\def\kbd##1{\realbackslash kbd {##1}}% -\def\key##1{\realbackslash key {##1}}% -\def\math##1{\realbackslash math {##1}}% -\def\option##1{\realbackslash option {##1}}% -\def\samp##1{\realbackslash samp {##1}}% -\def\strong##1{\realbackslash strong {##1}}% -\def\uref##1{\realbackslash uref {##1}}% -\def\url##1{\realbackslash url {##1}}% -\def\var##1{\realbackslash var {##1}}% -\def\w{\realbackslash w }% -% -% These math commands don't seem likely to be used in index entries. -\def\copyright{\realbackslash copyright}% -\def\equiv{\realbackslash equiv}% -\def\error{\realbackslash error}% -\def\expansion{\realbackslash expansion}% -\def\point{\realbackslash point}% -\def\print{\realbackslash print}% -\def\result{\realbackslash result}% -% -% Handle some cases of @value -- where the variable name does not -% contain - or _, and the value does not contain any -% (non-fully-expandable) commands. -\let\value = \expandablevalue -% -\unsepspaces -% Turn off macro expansion -\turnoffmacros -} - -% If an index command is used in an @example environment, any spaces -% therein should become regular spaces in the raw index file, not the -% expansion of \tie (\leavevmode \penalty \@M \ ). -{\obeyspaces - \gdef\unsepspaces{\obeyspaces\let =\space}} - -% \indexnofonts no-ops all font-change commands. -% This is used when outputting the strings to sort the index by. -\def\indexdummyfont#1{#1} -\def\indexdummytex{TeX} -\def\indexdummydots{...} - -\def\indexnofonts{% -\def\@{@}% -% how to handle braces? -\def\_{\normalunderscore}% -% -\let\,=\indexdummyfont -\let\"=\indexdummyfont -\let\`=\indexdummyfont -\let\'=\indexdummyfont -\let\^=\indexdummyfont -\let\~=\indexdummyfont -\let\==\indexdummyfont -\let\b=\indexdummyfont -\let\c=\indexdummyfont -\let\d=\indexdummyfont -\let\u=\indexdummyfont -\let\v=\indexdummyfont -\let\H=\indexdummyfont -\let\dotless=\indexdummyfont -% Take care of the plain tex special European modified letters. -\def\AA{AA}% -\def\AE{AE}% -\def\L{L}% -\def\OE{OE}% -\def\O{O}% -\def\aa{aa}% -\def\ae{ae}% -\def\l{l}% -\def\oe{oe}% -\def\o{o}% -\def\ss{ss}% -% -% Don't no-op \tt, since it isn't a user-level command -% and is used in the definitions of the active chars like <, >, |, etc. -% Likewise with the other plain tex font commands. -%\let\tt=\indexdummyfont -% -\let\b=\indexdummyfont -\let\i=\indexdummyfont -\let\r=\indexdummyfont -\let\sc=\indexdummyfont -\let\t=\indexdummyfont -% -\let\TeX=\indexdummytex -\let\acronym=\indexdummyfont -\let\cite=\indexdummyfont -\let\code=\indexdummyfont -\let\command=\indexdummyfont -\let\dfn=\indexdummyfont -\let\dots=\indexdummydots -\let\emph=\indexdummyfont -\let\env=\indexdummyfont -\let\file=\indexdummyfont -\let\kbd=\indexdummyfont -\let\key=\indexdummyfont -\let\math=\indexdummyfont -\let\option=\indexdummyfont -\let\samp=\indexdummyfont -\let\strong=\indexdummyfont -\let\uref=\indexdummyfont -\let\url=\indexdummyfont -\let\var=\indexdummyfont -\let\w=\indexdummyfont -} - -% To define \realbackslash, we must make \ not be an escape. -% We must first make another character (@) an escape -% so we do not become unable to do a definition. - -{\catcode`\@=0 \catcode`\\=\other - @gdef@realbackslash{\}} - -\let\indexbackslash=0 %overridden during \printindex. -\let\SETmarginindex=\relax % put index entries in margin (undocumented)? - -% For \ifx comparisons. -\def\emptymacro{\empty} - -% Most index entries go through here, but \dosubind is the general case. -% -\def\doind#1#2{\dosubind{#1}{#2}\empty} - -% Workhorse for all \fooindexes. -% #1 is name of index, #2 is stuff to put there, #3 is subentry -- -% \empty if called from \doind, as we usually are. The main exception -% is with defuns, which call us directly. -% -\def\dosubind#1#2#3{% - % Put the index entry in the margin if desired. - \ifx\SETmarginindex\relax\else - \insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}% - \fi - {% - \count255=\lastpenalty - {% - \indexdummies % Must do this here, since \bf, etc expand at this stage - \escapechar=`\\ - {% - \let\folio = 0% We will expand all macros now EXCEPT \folio. - \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now - % so it will be output as is; and it will print as backslash. - % - \def\thirdarg{#3}% - % - % If third arg is present, precede it with space in sort key. - \ifx\thirdarg\emptymacro - \let\subentry = \empty - \else - \def\subentry{ #3}% - \fi - % - % First process the index entry with all font commands turned - % off to get the string to sort by. - {\indexnofonts \xdef\indexsorttmp{#2\subentry}}% - % - % Now the real index entry with the fonts. - \toks0 = {#2}% - % - % If the third (subentry) arg is present, add it to the index - % line to write. - \ifx\thirdarg\emptymacro \else - \toks0 = \expandafter{\the\toks0{#3}}% - \fi - % - % Set up the complete index entry, with both the sort key and - % the original text, including any font commands. We write - % three arguments to \entry to the .?? file (four in the - % subentry case), texindex reduces to two when writing the .??s - % sorted result. - \edef\temp{% - \write\csname#1indfile\endcsname{% - \realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}% - }% - % - % If a skip is the last thing on the list now, preserve it - % by backing up by \lastskip, doing the \write, then inserting - % the skip again. Otherwise, the whatsit generated by the - % \write will make \lastskip zero. The result is that sequences - % like this: - % @end defun - % @tindex whatever - % @defun ... - % will have extra space inserted, because the \medbreak in the - % start of the @defun won't see the skip inserted by the @end of - % the previous defun. - % - % But don't do any of this if we're not in vertical mode. We - % don't want to do a \vskip and prematurely end a paragraph. - % - % Avoid page breaks due to these extra skips, too. - % - \iflinks - \ifvmode - \skip0 = \lastskip - \ifdim\lastskip = 0pt \else \nobreak\vskip-\lastskip \fi - \fi - % - \temp % do the write - % - % - \ifvmode \ifdim\skip0 = 0pt \else \nobreak\vskip\skip0 \fi \fi - \fi - }% - }% - \penalty\count255 - }% -} - -% The index entry written in the file actually looks like -% \entry {sortstring}{page}{topic} -% or -% \entry {sortstring}{page}{topic}{subtopic} -% The texindex program reads in these files and writes files -% containing these kinds of lines: -% \initial {c} -% before the first topic whose initial is c -% \entry {topic}{pagelist} -% for a topic that is used without subtopics -% \primary {topic} -% for the beginning of a topic that is used with subtopics -% \secondary {subtopic}{pagelist} -% for each subtopic. - -% Define the user-accessible indexing commands -% @findex, @vindex, @kindex, @cindex. - -\def\findex {\fnindex} -\def\kindex {\kyindex} -\def\cindex {\cpindex} -\def\vindex {\vrindex} -\def\tindex {\tpindex} -\def\pindex {\pgindex} - -\def\cindexsub {\begingroup\obeylines\cindexsub} -{\obeylines % -\gdef\cindexsub "#1" #2^^M{\endgroup % -\dosubind{cp}{#2}{#1}}} - -% Define the macros used in formatting output of the sorted index material. - -% @printindex causes a particular index (the ??s file) to get printed. -% It does not print any chapter heading (usually an @unnumbered). -% -\def\printindex{\parsearg\doprintindex} -\def\doprintindex#1{\begingroup - \dobreak \chapheadingskip{10000}% - % - \smallfonts \rm - \tolerance = 9500 - \indexbreaks - % - % See if the index file exists and is nonempty. - % Change catcode of @ here so that if the index file contains - % \initial {@} - % as its first line, TeX doesn't complain about mismatched braces - % (because it thinks @} is a control sequence). - \catcode`\@ = 11 - \openin 1 \jobname.#1s - \ifeof 1 - % \enddoublecolumns gets confused if there is no text in the index, - % and it loses the chapter title and the aux file entries for the - % index. The easiest way to prevent this problem is to make sure - % there is some text. - \putwordIndexNonexistent - \else - % - % If the index file exists but is empty, then \openin leaves \ifeof - % false. We have to make TeX try to read something from the file, so - % it can discover if there is anything in it. - \read 1 to \temp - \ifeof 1 - \putwordIndexIsEmpty - \else - % Index files are almost Texinfo source, but we use \ as the escape - % character. It would be better to use @, but that's too big a change - % to make right now. - \def\indexbackslash{\rawbackslashxx}% - \catcode`\\ = 0 - \escapechar = `\\ - \begindoublecolumns - \input \jobname.#1s - \enddoublecolumns - \fi - \fi - \closein 1 -\endgroup} - -% These macros are used by the sorted index file itself. -% Change them to control the appearance of the index. - -\def\initial#1{{% - % Some minor font changes for the special characters. - \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt - % - % Remove any glue we may have, we'll be inserting our own. - \removelastskip - % - % We like breaks before the index initials, so insert a bonus. - \penalty -300 - % - % Typeset the initial. Making this add up to a whole number of - % baselineskips increases the chance of the dots lining up from column - % to column. It still won't often be perfect, because of the stretch - % we need before each entry, but it's better. - % - % No shrink because it confuses \balancecolumns. - \vskip 1.67\baselineskip plus .5\baselineskip - \leftline{\secbf #1}% - \vskip .33\baselineskip plus .1\baselineskip - % - % Do our best not to break after the initial. - \nobreak -}} - -% This typesets a paragraph consisting of #1, dot leaders, and then #2 -% flush to the right margin. It is used for index and table of contents -% entries. The paragraph is indented by \leftskip. -% -\def\entry#1#2{\begingroup - % - % Start a new paragraph if necessary, so our assignments below can't - % affect previous text. - \par - % - % Do not fill out the last line with white space. - \parfillskip = 0in - % - % No extra space above this paragraph. - \parskip = 0in - % - % Do not prefer a separate line ending with a hyphen to fewer lines. - \finalhyphendemerits = 0 - % - % \hangindent is only relevant when the entry text and page number - % don't both fit on one line. In that case, bob suggests starting the - % dots pretty far over on the line. Unfortunately, a large - % indentation looks wrong when the entry text itself is broken across - % lines. So we use a small indentation and put up with long leaders. - % - % \hangafter is reset to 1 (which is the value we want) at the start - % of each paragraph, so we need not do anything with that. - \hangindent = 2em - % - % When the entry text needs to be broken, just fill out the first line - % with blank space. - \rightskip = 0pt plus1fil - % - % A bit of stretch before each entry for the benefit of balancing columns. - \vskip 0pt plus1pt - % - % Start a ``paragraph'' for the index entry so the line breaking - % parameters we've set above will have an effect. - \noindent - % - % Insert the text of the index entry. TeX will do line-breaking on it. - #1% - % The following is kludged to not output a line of dots in the index if - % there are no page numbers. The next person who breaks this will be - % cursed by a Unix daemon. - \def\tempa{{\rm }}% - \def\tempb{#2}% - \edef\tempc{\tempa}% - \edef\tempd{\tempb}% - \ifx\tempc\tempd\ \else% - % - % If we must, put the page number on a line of its own, and fill out - % this line with blank space. (The \hfil is overwhelmed with the - % fill leaders glue in \indexdotfill if the page number does fit.) - \hfil\penalty50 - \null\nobreak\indexdotfill % Have leaders before the page number. - % - % The `\ ' here is removed by the implicit \unskip that TeX does as - % part of (the primitive) \par. Without it, a spurious underfull - % \hbox ensues. - \ifpdf - \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. - \else - \ #2% The page number ends the paragraph. - \fi - \fi% - \par -\endgroup} - -% Like \dotfill except takes at least 1 em. -\def\indexdotfill{\cleaders - \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill} - -\def\primary #1{\line{#1\hfil}} - -\newskip\secondaryindent \secondaryindent=0.5cm -\def\secondary#1#2{{% - \parfillskip=0in - \parskip=0in - \hangindent=1in - \hangafter=1 - \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill - \ifpdf - \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. - \else - #2 - \fi - \par -}} - -% Define two-column mode, which we use to typeset indexes. -% Adapted from the TeXbook, page 416, which is to say, -% the manmac.tex format used to print the TeXbook itself. -\catcode`\@=11 - -\newbox\partialpage -\newdimen\doublecolumnhsize - -\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns - % Grab any single-column material above us. - \output = {% - % - % Here is a possibility not foreseen in manmac: if we accumulate a - % whole lot of material, we might end up calling this \output - % routine twice in a row (see the doublecol-lose test, which is - % essentially a couple of indexes with @setchapternewpage off). In - % that case we just ship out what is in \partialpage with the normal - % output routine. Generally, \partialpage will be empty when this - % runs and this will be a no-op. See the indexspread.tex test case. - \ifvoid\partialpage \else - \onepageout{\pagecontents\partialpage}% - \fi - % - \global\setbox\partialpage = \vbox{% - % Unvbox the main output page. - \unvbox\PAGE - \kern-\topskip \kern\baselineskip - }% - }% - \eject % run that output routine to set \partialpage - % - % Use the double-column output routine for subsequent pages. - \output = {\doublecolumnout}% - % - % Change the page size parameters. We could do this once outside this - % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 - % format, but then we repeat the same computation. Repeating a couple - % of assignments once per index is clearly meaningless for the - % execution time, so we may as well do it in one place. - % - % First we halve the line length, less a little for the gutter between - % the columns. We compute the gutter based on the line length, so it - % changes automatically with the paper format. The magic constant - % below is chosen so that the gutter has the same value (well, +-<1pt) - % as it did when we hard-coded it. - % - % We put the result in a separate register, \doublecolumhsize, so we - % can restore it in \pagesofar, after \hsize itself has (potentially) - % been clobbered. - % - \doublecolumnhsize = \hsize - \advance\doublecolumnhsize by -.04154\hsize - \divide\doublecolumnhsize by 2 - \hsize = \doublecolumnhsize - % - % Double the \vsize as well. (We don't need a separate register here, - % since nobody clobbers \vsize.) - \vsize = 2\vsize -} - -% The double-column output routine for all double-column pages except -% the last. -% -\def\doublecolumnout{% - \splittopskip=\topskip \splitmaxdepth=\maxdepth - % Get the available space for the double columns -- the normal - % (undoubled) page height minus any material left over from the - % previous page. - \dimen@ = \vsize - \divide\dimen@ by 2 - \advance\dimen@ by -\ht\partialpage - % - % box0 will be the left-hand column, box2 the right. - \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ - \onepageout\pagesofar - \unvbox255 - \penalty\outputpenalty -} -% -% Re-output the contents of the output page -- any previous material, -% followed by the two boxes we just split, in box0 and box2. -\def\pagesofar{% - \unvbox\partialpage - % - \hsize = \doublecolumnhsize - \wd0=\hsize \wd2=\hsize - \hbox to\pagewidth{\box0\hfil\box2}% -} -% -% All done with double columns. -\def\enddoublecolumns{% - \output = {% - % Split the last of the double-column material. Leave it on the - % current page, no automatic page break. - \balancecolumns - % - % If we end up splitting too much material for the current page, - % though, there will be another page break right after this \output - % invocation ends. Having called \balancecolumns once, we do not - % want to call it again. Therefore, reset \output to its normal - % definition right away. (We hope \balancecolumns will never be - % called on to balance too much material, but if it is, this makes - % the output somewhat more palatable.) - \global\output = {\onepageout{\pagecontents\PAGE}}% - }% - \eject - \endgroup % started in \begindoublecolumns - % - % \pagegoal was set to the doubled \vsize above, since we restarted - % the current page. We're now back to normal single-column - % typesetting, so reset \pagegoal to the normal \vsize (after the - % \endgroup where \vsize got restored). - \pagegoal = \vsize -} -% -% Called at the end of the double column material. -\def\balancecolumns{% - \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120. - \dimen@ = \ht0 - \advance\dimen@ by \topskip - \advance\dimen@ by-\baselineskip - \divide\dimen@ by 2 % target to split to - %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}% - \splittopskip = \topskip - % Loop until we get a decent breakpoint. - {% - \vbadness = 10000 - \loop - \global\setbox3 = \copy0 - \global\setbox1 = \vsplit3 to \dimen@ - \ifdim\ht3>\dimen@ - \global\advance\dimen@ by 1pt - \repeat - }% - %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}% - \setbox0=\vbox to\dimen@{\unvbox1}% - \setbox2=\vbox to\dimen@{\unvbox3}% - % - \pagesofar -} -\catcode`\@ = \other - - -\message{sectioning,} -% Chapters, sections, etc. - -\newcount\chapno -\newcount\secno \secno=0 -\newcount\subsecno \subsecno=0 -\newcount\subsubsecno \subsubsecno=0 - -% This counter is funny since it counts through charcodes of letters A, B, ... -\newcount\appendixno \appendixno = `\@ -% \def\appendixletter{\char\the\appendixno} -% We do the following for the sake of pdftex, which needs the actual -% letter in the expansion, not just typeset. -\def\appendixletter{% - \ifnum\appendixno=`A A% - \else\ifnum\appendixno=`B B% - \else\ifnum\appendixno=`C C% - \else\ifnum\appendixno=`D D% - \else\ifnum\appendixno=`E E% - \else\ifnum\appendixno=`F F% - \else\ifnum\appendixno=`G G% - \else\ifnum\appendixno=`H H% - \else\ifnum\appendixno=`I I% - \else\ifnum\appendixno=`J J% - \else\ifnum\appendixno=`K K% - \else\ifnum\appendixno=`L L% - \else\ifnum\appendixno=`M M% - \else\ifnum\appendixno=`N N% - \else\ifnum\appendixno=`O O% - \else\ifnum\appendixno=`P P% - \else\ifnum\appendixno=`Q Q% - \else\ifnum\appendixno=`R R% - \else\ifnum\appendixno=`S S% - \else\ifnum\appendixno=`T T% - \else\ifnum\appendixno=`U U% - \else\ifnum\appendixno=`V V% - \else\ifnum\appendixno=`W W% - \else\ifnum\appendixno=`X X% - \else\ifnum\appendixno=`Y Y% - \else\ifnum\appendixno=`Z Z% - % The \the is necessary, despite appearances, because \appendixletter is - % expanded while writing the .toc file. \char\appendixno is not - % expandable, thus it is written literally, thus all appendixes come out - % with the same letter (or @) in the toc without it. - \else\char\the\appendixno - \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi - \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} - -% Each @chapter defines this as the name of the chapter. -% page headings and footings can use it. @section does likewise. -\def\thischapter{} -\def\thissection{} - -\newcount\absseclevel % used to calculate proper heading level -\newcount\secbase\secbase=0 % @raise/lowersections modify this count - -% @raisesections: treat @section as chapter, @subsection as section, etc. -\def\raisesections{\global\advance\secbase by -1} -\let\up=\raisesections % original BFox name - -% @lowersections: treat @chapter as section, @section as subsection, etc. -\def\lowersections{\global\advance\secbase by 1} -\let\down=\lowersections % original BFox name - -% Choose a numbered-heading macro -% #1 is heading level if unmodified by @raisesections or @lowersections -% #2 is text for heading -\def\numhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1 -\ifcase\absseclevel - \chapterzzz{#2} -\or - \seczzz{#2} -\or - \numberedsubseczzz{#2} -\or - \numberedsubsubseczzz{#2} -\else - \ifnum \absseclevel<0 - \chapterzzz{#2} - \else - \numberedsubsubseczzz{#2} - \fi -\fi -} - -% like \numhead, but chooses appendix heading levels -\def\apphead#1#2{\absseclevel=\secbase\advance\absseclevel by #1 -\ifcase\absseclevel - \appendixzzz{#2} -\or - \appendixsectionzzz{#2} -\or - \appendixsubseczzz{#2} -\or - \appendixsubsubseczzz{#2} -\else - \ifnum \absseclevel<0 - \appendixzzz{#2} - \else - \appendixsubsubseczzz{#2} - \fi -\fi -} - -% like \numhead, but chooses numberless heading levels -\def\unnmhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1 -\ifcase\absseclevel - \unnumberedzzz{#2} -\or - \unnumberedseczzz{#2} -\or - \unnumberedsubseczzz{#2} -\or - \unnumberedsubsubseczzz{#2} -\else - \ifnum \absseclevel<0 - \unnumberedzzz{#2} - \else - \unnumberedsubsubseczzz{#2} - \fi -\fi -} - -% @chapter, @appendix, @unnumbered. -\def\thischaptername{No Chapter Title} -\outer\def\chapter{\parsearg\chapteryyy} -\def\chapteryyy #1{\numhead0{#1}} % normally numhead0 calls chapterzzz -\def\chapterzzz #1{% -\secno=0 \subsecno=0 \subsubsecno=0 -\global\advance \chapno by 1 \message{\putwordChapter\space \the\chapno}% -\chapmacro {#1}{\the\chapno}% -\gdef\thissection{#1}% -\gdef\thischaptername{#1}% -% We don't substitute the actual chapter name into \thischapter -% because we don't want its macros evaluated now. -\xdef\thischapter{\putwordChapter{} \the\chapno: \noexpand\thischaptername}% -\toks0 = {#1}% -\edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}% - {\the\chapno}}}% -\temp -\donoderef -\global\let\section = \numberedsec -\global\let\subsection = \numberedsubsec -\global\let\subsubsection = \numberedsubsubsec -} - -\outer\def\appendix{\parsearg\appendixyyy} -\def\appendixyyy #1{\apphead0{#1}} % normally apphead0 calls appendixzzz -\def\appendixzzz #1{% -\secno=0 \subsecno=0 \subsubsecno=0 -\global\advance \appendixno by 1 -\message{\putwordAppendix\space \appendixletter}% -\chapmacro {#1}{\putwordAppendix{} \appendixletter}% -\gdef\thissection{#1}% -\gdef\thischaptername{#1}% -\xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}% -\toks0 = {#1}% -\edef\temp{\noexpand\writetocentry{\realbackslash appendixentry{\the\toks0}% - {\appendixletter}}}% -\temp -\appendixnoderef -\global\let\section = \appendixsec -\global\let\subsection = \appendixsubsec -\global\let\subsubsection = \appendixsubsubsec -} - -% @centerchap is like @unnumbered, but the heading is centered. -\outer\def\centerchap{\parsearg\centerchapyyy} -\def\centerchapyyy #1{{\let\unnumbchapmacro=\centerchapmacro \unnumberedyyy{#1}}} - -% @top is like @unnumbered. -\outer\def\top{\parsearg\unnumberedyyy} - -\outer\def\unnumbered{\parsearg\unnumberedyyy} -\def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz -\def\unnumberedzzz #1{% -\secno=0 \subsecno=0 \subsubsecno=0 -% -% This used to be simply \message{#1}, but TeX fully expands the -% argument to \message. Therefore, if #1 contained @-commands, TeX -% expanded them. For example, in `@unnumbered The @cite{Book}', TeX -% expanded @cite (which turns out to cause errors because \cite is meant -% to be executed, not expanded). -% -% Anyway, we don't want the fully-expanded definition of @cite to appear -% as a result of the \message, we just want `@cite' itself. We use -% \the to achieve this: TeX expands \the only once, -% simply yielding the contents of . (We also do this for -% the toc entries.) -\toks0 = {#1}\message{(\the\toks0)}% -% -\unnumbchapmacro {#1}% -\gdef\thischapter{#1}\gdef\thissection{#1}% -\toks0 = {#1}% -\edef\temp{\noexpand\writetocentry{\realbackslash unnumbchapentry{\the\toks0}}}% -\temp -\unnumbnoderef -\global\let\section = \unnumberedsec -\global\let\subsection = \unnumberedsubsec -\global\let\subsubsection = \unnumberedsubsubsec -} - -% Sections. -\outer\def\numberedsec{\parsearg\secyyy} -\def\secyyy #1{\numhead1{#1}} % normally calls seczzz -\def\seczzz #1{% -\subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % -\gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}% -\toks0 = {#1}% -\edef\temp{\noexpand\writetocentry{\realbackslash secentry{\the\toks0}% - {\the\chapno}{\the\secno}}}% -\temp -\donoderef -\nobreak -} - -\outer\def\appendixsection{\parsearg\appendixsecyyy} -\outer\def\appendixsec{\parsearg\appendixsecyyy} -\def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz -\def\appendixsectionzzz #1{% -\subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % -\gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}% -\toks0 = {#1}% -\edef\temp{\noexpand\writetocentry{\realbackslash secentry{\the\toks0}% - {\appendixletter}{\the\secno}}}% -\temp -\appendixnoderef -\nobreak -} - -\outer\def\unnumberedsec{\parsearg\unnumberedsecyyy} -\def\unnumberedsecyyy #1{\unnmhead1{#1}} % normally calls unnumberedseczzz -\def\unnumberedseczzz #1{% -\plainsecheading {#1}\gdef\thissection{#1}% -\toks0 = {#1}% -\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry% - {\the\toks0}{\the\chapno}}}% -\temp -\unnumbnoderef -\nobreak -} - -% Subsections. -\outer\def\numberedsubsec{\parsearg\numberedsubsecyyy} -\def\numberedsubsecyyy #1{\numhead2{#1}} % normally calls numberedsubseczzz -\def\numberedsubseczzz #1{% -\gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % -\subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}% -\toks0 = {#1}% -\edef\temp{\noexpand\writetocentry{\realbackslash subsecentry{\the\toks0}% - {\the\chapno}{\the\secno}{\the\subsecno}}}% -\temp -\donoderef -\nobreak -} - -\outer\def\appendixsubsec{\parsearg\appendixsubsecyyy} -\def\appendixsubsecyyy #1{\apphead2{#1}} % normally calls appendixsubseczzz -\def\appendixsubseczzz #1{% -\gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % -\subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}% -\toks0 = {#1}% -\edef\temp{\noexpand\writetocentry{\realbackslash subsecentry{\the\toks0}% - {\appendixletter}{\the\secno}{\the\subsecno}}}% -\temp -\appendixnoderef -\nobreak -} - -\outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy} -\def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz -\def\unnumberedsubseczzz #1{% -\plainsubsecheading {#1}\gdef\thissection{#1}% -\toks0 = {#1}% -\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry% - {\the\toks0}{\the\chapno}{\the\secno}}}% -\temp -\unnumbnoderef -\nobreak -} - -% Subsubsections. -\outer\def\numberedsubsubsec{\parsearg\numberedsubsubsecyyy} -\def\numberedsubsubsecyyy #1{\numhead3{#1}} % normally numberedsubsubseczzz -\def\numberedsubsubseczzz #1{% -\gdef\thissection{#1}\global\advance \subsubsecno by 1 % -\subsubsecheading {#1} - {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}% -\toks0 = {#1}% -\edef\temp{\noexpand\writetocentry{\realbackslash subsubsecentry{\the\toks0}% - {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}}}% -\temp -\donoderef -\nobreak -} - -\outer\def\appendixsubsubsec{\parsearg\appendixsubsubsecyyy} -\def\appendixsubsubsecyyy #1{\apphead3{#1}} % normally appendixsubsubseczzz -\def\appendixsubsubseczzz #1{% -\gdef\thissection{#1}\global\advance \subsubsecno by 1 % -\subsubsecheading {#1} - {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}% -\toks0 = {#1}% -\edef\temp{\noexpand\writetocentry{\realbackslash subsubsecentry{\the\toks0}% - {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}}}% -\temp -\appendixnoderef -\nobreak -} - -\outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy} -\def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz -\def\unnumberedsubsubseczzz #1{% -\plainsubsubsecheading {#1}\gdef\thissection{#1}% -\toks0 = {#1}% -\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry% - {\the\toks0}{\the\chapno}{\the\secno}{\the\subsecno}}}% -\temp -\unnumbnoderef -\nobreak -} - -% These are variants which are not "outer", so they can appear in @ifinfo. -% Actually, they should now be obsolete; ordinary section commands should work. -\def\infotop{\parsearg\unnumberedzzz} -\def\infounnumbered{\parsearg\unnumberedzzz} -\def\infounnumberedsec{\parsearg\unnumberedseczzz} -\def\infounnumberedsubsec{\parsearg\unnumberedsubseczzz} -\def\infounnumberedsubsubsec{\parsearg\unnumberedsubsubseczzz} - -\def\infoappendix{\parsearg\appendixzzz} -\def\infoappendixsec{\parsearg\appendixseczzz} -\def\infoappendixsubsec{\parsearg\appendixsubseczzz} -\def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz} - -\def\infochapter{\parsearg\chapterzzz} -\def\infosection{\parsearg\sectionzzz} -\def\infosubsection{\parsearg\subsectionzzz} -\def\infosubsubsection{\parsearg\subsubsectionzzz} - -% These macros control what the section commands do, according -% to what kind of chapter we are in (ordinary, appendix, or unnumbered). -% Define them by default for a numbered chapter. -\global\let\section = \numberedsec -\global\let\subsection = \numberedsubsec -\global\let\subsubsection = \numberedsubsubsec - -% Define @majorheading, @heading and @subheading - -% NOTE on use of \vbox for chapter headings, section headings, and such: -% 1) We use \vbox rather than the earlier \line to permit -% overlong headings to fold. -% 2) \hyphenpenalty is set to 10000 because hyphenation in a -% heading is obnoxious; this forbids it. -% 3) Likewise, headings look best if no \parindent is used, and -% if justification is not attempted. Hence \raggedright. - - -\def\majorheading{\parsearg\majorheadingzzz} -\def\majorheadingzzz #1{% -{\advance\chapheadingskip by 10pt \chapbreak }% -{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright - \rm #1\hfill}}\bigskip \par\penalty 200} - -\def\chapheading{\parsearg\chapheadingzzz} -\def\chapheadingzzz #1{\chapbreak % -{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright - \rm #1\hfill}}\bigskip \par\penalty 200} - -% @heading, @subheading, @subsubheading. -\def\heading{\parsearg\plainsecheading} -\def\subheading{\parsearg\plainsubsecheading} -\def\subsubheading{\parsearg\plainsubsubsecheading} - -% These macros generate a chapter, section, etc. heading only -% (including whitespace, linebreaking, etc. around it), -% given all the information in convenient, parsed form. - -%%% Args are the skip and penalty (usually negative) -\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} - -\def\setchapterstyle #1 {\csname CHAPF#1\endcsname} - -%%% Define plain chapter starts, and page on/off switching for it -% Parameter controlling skip before chapter headings (if needed) - -\newskip\chapheadingskip - -\def\chapbreak{\dobreak \chapheadingskip {-4000}} -\def\chappager{\par\vfill\supereject} -\def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi} - -\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} - -\def\CHAPPAGoff{% -\global\let\contentsalignmacro = \chappager -\global\let\pchapsepmacro=\chapbreak -\global\let\pagealignmacro=\chappager} - -\def\CHAPPAGon{% -\global\let\contentsalignmacro = \chappager -\global\let\pchapsepmacro=\chappager -\global\let\pagealignmacro=\chappager -\global\def\HEADINGSon{\HEADINGSsingle}} - -\def\CHAPPAGodd{ -\global\let\contentsalignmacro = \chapoddpage -\global\let\pchapsepmacro=\chapoddpage -\global\let\pagealignmacro=\chapoddpage -\global\def\HEADINGSon{\HEADINGSdouble}} - -\CHAPPAGon - -\def\CHAPFplain{ -\global\let\chapmacro=\chfplain -\global\let\unnumbchapmacro=\unnchfplain -\global\let\centerchapmacro=\centerchfplain} - -% Plain chapter opening. -% #1 is the text, #2 the chapter number or empty if unnumbered. -\def\chfplain#1#2{% - \pchapsepmacro - {% - \chapfonts \rm - \def\chapnum{#2}% - \setbox0 = \hbox{#2\ifx\chapnum\empty\else\enspace\fi}% - \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright - \hangindent = \wd0 \centerparametersmaybe - \unhbox0 #1\par}% - }% - \nobreak\bigskip % no page break after a chapter title - \nobreak -} - -% Plain opening for unnumbered. -\def\unnchfplain#1{\chfplain{#1}{}} - -% @centerchap -- centered and unnumbered. -\let\centerparametersmaybe = \relax -\def\centerchfplain#1{{% - \def\centerparametersmaybe{% - \advance\rightskip by 3\rightskip - \leftskip = \rightskip - \parfillskip = 0pt - }% - \chfplain{#1}{}% -}} - -\CHAPFplain % The default - -\def\unnchfopen #1{% -\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright - \rm #1\hfill}}\bigskip \par\nobreak -} - -\def\chfopen #1#2{\chapoddpage {\chapfonts -\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% -\par\penalty 5000 % -} - -\def\centerchfopen #1{% -\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt - \hfill {\rm #1}\hfill}}\bigskip \par\nobreak -} - -\def\CHAPFopen{ -\global\let\chapmacro=\chfopen -\global\let\unnumbchapmacro=\unnchfopen -\global\let\centerchapmacro=\centerchfopen} - - -% Section titles. -\newskip\secheadingskip -\def\secheadingbreak{\dobreak \secheadingskip {-1000}} -\def\secheading#1#2#3{\sectionheading{sec}{#2.#3}{#1}} -\def\plainsecheading#1{\sectionheading{sec}{}{#1}} - -% Subsection titles. -\newskip \subsecheadingskip -\def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}} -\def\subsecheading#1#2#3#4{\sectionheading{subsec}{#2.#3.#4}{#1}} -\def\plainsubsecheading#1{\sectionheading{subsec}{}{#1}} - -% Subsubsection titles. -\let\subsubsecheadingskip = \subsecheadingskip -\let\subsubsecheadingbreak = \subsecheadingbreak -\def\subsubsecheading#1#2#3#4#5{\sectionheading{subsubsec}{#2.#3.#4.#5}{#1}} -\def\plainsubsubsecheading#1{\sectionheading{subsubsec}{}{#1}} - - -% Print any size section title. -% -% #1 is the section type (sec/subsec/subsubsec), #2 is the section -% number (maybe empty), #3 the text. -\def\sectionheading#1#2#3{% - {% - \expandafter\advance\csname #1headingskip\endcsname by \parskip - \csname #1headingbreak\endcsname - }% - {% - % Switch to the right set of fonts. - \csname #1fonts\endcsname \rm - % - % Only insert the separating space if we have a section number. - \def\secnum{#2}% - \setbox0 = \hbox{#2\ifx\secnum\empty\else\enspace\fi}% - % - \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright - \hangindent = \wd0 % zero if no section number - \unhbox0 #3}% - }% - \ifdim\parskip<10pt \nobreak\kern10pt\nobreak\kern-\parskip\fi \nobreak -} - - -\message{toc,} -% Table of contents. -\newwrite\tocfile - -% Write an entry to the toc file, opening it if necessary. -% Called from @chapter, etc. We supply {\folio} at the end of the -% argument, which will end up as the last argument to the \...entry macro. -% -% We open the .toc file here instead of at @setfilename or any other -% fixed time so that @contents can be put in the document anywhere. -% -\newif\iftocfileopened -\def\writetocentry#1{% - \iftocfileopened\else - \immediate\openout\tocfile = \jobname.toc - \global\tocfileopenedtrue - \fi - \iflinks \write\tocfile{#1{\folio}}\fi - % - % Tell \shipout to create a page destination if we're doing pdf, which - % will be the target of the links in the table of contents. We can't - % just do it on every page because the title pages are numbered 1 and - % 2 (the page numbers aren't printed), and so are the first two pages - % of the document. Thus, we'd have two destinations named `1', and - % two named `2'. - \ifpdf \pdfmakepagedesttrue \fi -} - -\newskip\contentsrightmargin \contentsrightmargin=1in -\newcount\savepageno -\newcount\lastnegativepageno \lastnegativepageno = -1 - -% Finish up the main text and prepare to read what we've written -% to \tocfile. -% -\def\startcontents#1{% - % If @setchapternewpage on, and @headings double, the contents should - % start on an odd page, unlike chapters. Thus, we maintain - % \contentsalignmacro in parallel with \pagealignmacro. - % From: Torbjorn Granlund - \contentsalignmacro - \immediate\closeout\tocfile - % - % Don't need to put `Contents' or `Short Contents' in the headline. - % It is abundantly clear what they are. - \unnumbchapmacro{#1}\def\thischapter{}% - \savepageno = \pageno - \begingroup % Set up to handle contents files properly. - \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\@=11 - % We can't do this, because then an actual ^ in a section - % title fails, e.g., @chapter ^ -- exponentiation. --karl, 9jul97. - %\catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi - \raggedbottom % Worry more about breakpoints than the bottom. - \advance\hsize by -\contentsrightmargin % Don't use the full line length. - % - % Roman numerals for page numbers. - \ifnum \pageno>0 \pageno = \lastnegativepageno \fi -} - - -% Normal (long) toc. -\def\contents{% - \startcontents{\putwordTOC}% - \openin 1 \jobname.toc - \ifeof 1 \else - \closein 1 - \input \jobname.toc - \fi - \vfill \eject - \contentsalignmacro % in case @setchapternewpage odd is in effect - \pdfmakeoutlines - \endgroup - \lastnegativepageno = \pageno - \pageno = \savepageno -} - -% And just the chapters. -\def\summarycontents{% - \startcontents{\putwordShortTOC}% - % - \let\chapentry = \shortchapentry - \let\appendixentry = \shortappendixentry - \let\unnumbchapentry = \shortunnumberedentry - % We want a true roman here for the page numbers. - \secfonts - \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl - \rm - \hyphenpenalty = 10000 - \advance\baselineskip by 1pt % Open it up a little. - \def\secentry ##1##2##3##4{} - \def\unnumbsecentry ##1##2##3{} - \def\subsecentry ##1##2##3##4##5{} - \def\unnumbsubsecentry ##1##2##3##4{} - \def\subsubsecentry ##1##2##3##4##5##6{} - \def\unnumbsubsubsecentry ##1##2##3##4##5{} - \openin 1 \jobname.toc - \ifeof 1 \else - \closein 1 - \input \jobname.toc - \fi - \vfill \eject - \contentsalignmacro % in case @setchapternewpage odd is in effect - \endgroup - \lastnegativepageno = \pageno - \pageno = \savepageno -} -\let\shortcontents = \summarycontents - -\ifpdf - \pdfcatalog{/PageMode /UseOutlines}% -\fi - -% These macros generate individual entries in the table of contents. -% The first argument is the chapter or section name. -% The last argument is the page number. -% The arguments in between are the chapter number, section number, ... - -% Chapters, in the main contents. -\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}} -% -% Chapters, in the short toc. -% See comments in \dochapentry re vbox and related settings. -\def\shortchapentry#1#2#3{% - \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}% -} - -% Appendices, in the main contents. -\def\appendixentry#1#2#3{\dochapentry{\putwordAppendix{} #2\labelspace#1}{#3}} -% -% Appendices, in the short toc. -\let\shortappendixentry = \shortchapentry - -% Typeset the label for a chapter or appendix for the short contents. -% The arg is, e.g., `Appendix A' for an appendix, or `3' for a chapter. -% We could simplify the code here by writing out an \appendixentry -% command in the toc file for appendices, instead of using \chapentry -% for both, but it doesn't seem worth it. -% -\newdimen\shortappendixwidth -% -\def\shortchaplabel#1{% - % This space should be enough, since a single number is .5em, and the - % widest letter (M) is 1em, at least in the Computer Modern fonts. - % But use \hss just in case. - % (This space doesn't include the extra space that gets added after - % the label; that gets put in by \shortchapentry above.) - \dimen0 = 1em - \hbox to \dimen0{#1\hss}% -} - -% Unnumbered chapters. -\def\unnumbchapentry#1#2{\dochapentry{#1}{#2}} -\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}} - -% Sections. -\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}} -\def\unnumbsecentry#1#2#3{\dosecentry{#1}{#3}} - -% Subsections. -\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}} -\def\unnumbsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}} - -% And subsubsections. -\def\subsubsecentry#1#2#3#4#5#6{% - \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}} -\def\unnumbsubsubsecentry#1#2#3#4#5{\dosubsubsecentry{#1}{#5}} - -% This parameter controls the indentation of the various levels. -\newdimen\tocindent \tocindent = 3pc - -% Now for the actual typesetting. In all these, #1 is the text and #2 is the -% page number. -% -% If the toc has to be broken over pages, we want it to be at chapters -% if at all possible; hence the \penalty. -\def\dochapentry#1#2{% - \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip - \begingroup - \chapentryfonts - \tocentry{#1}{\dopageno\bgroup#2\egroup}% - \endgroup - \nobreak\vskip .25\baselineskip plus.1\baselineskip -} - -\def\dosecentry#1#2{\begingroup - \secentryfonts \leftskip=\tocindent - \tocentry{#1}{\dopageno\bgroup#2\egroup}% -\endgroup} - -\def\dosubsecentry#1#2{\begingroup - \subsecentryfonts \leftskip=2\tocindent - \tocentry{#1}{\dopageno\bgroup#2\egroup}% -\endgroup} - -\def\dosubsubsecentry#1#2{\begingroup - \subsubsecentryfonts \leftskip=3\tocindent - \tocentry{#1}{\dopageno\bgroup#2\egroup}% -\endgroup} - -% Final typesetting of a toc entry; we use the same \entry macro as for -% the index entries, but we want to suppress hyphenation here. (We -% can't do that in the \entry macro, since index entries might consist -% of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.) -\def\tocentry#1#2{\begingroup - \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks - % Do not use \turnoffactive in these arguments. Since the toc is - % typeset in cmr, characters such as _ would come out wrong; we - % have to do the usual translation tricks. - \entry{#1}{#2}% -\endgroup} - -% Space between chapter (or whatever) number and the title. -\def\labelspace{\hskip1em \relax} - -\def\dopageno#1{{\rm #1}} -\def\doshortpageno#1{{\rm #1}} - -\def\chapentryfonts{\secfonts \rm} -\def\secentryfonts{\textfonts} -\let\subsecentryfonts = \textfonts -\let\subsubsecentryfonts = \textfonts - - -\message{environments,} -% @foo ... @end foo. - -% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. -% -% Since these characters are used in examples, it should be an even number of -% \tt widths. Each \tt character is 1en, so two makes it 1em. -% -\def\point{$\star$} -\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} -\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}} -\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} -\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}} - -% The @error{} command. -% Adapted from the TeXbook's \boxit. -% -\newbox\errorbox -% -{\tentt \global\dimen0 = 3em}% Width of the box. -\dimen2 = .55pt % Thickness of rules -% The text. (`r' is open on the right, `e' somewhat less so on the left.) -\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt} -% -\global\setbox\errorbox=\hbox to \dimen0{\hfil - \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. - \advance\hsize by -2\dimen2 % Rules. - \vbox{ - \hrule height\dimen2 - \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. - \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. - \kern3pt\vrule width\dimen2}% Space to right. - \hrule height\dimen2} - \hfil} -% -\def\error{\leavevmode\lower.7ex\copy\errorbox} - -% @tex ... @end tex escapes into raw Tex temporarily. -% One exception: @ is still an escape character, so that @end tex works. -% But \@ or @@ will get a plain tex @ character. - -\def\tex{\begingroup - \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 - \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 - \catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie - \catcode `\%=14 - \catcode 43=12 % plus - \catcode`\"=12 - \catcode`\==12 - \catcode`\|=12 - \catcode`\<=12 - \catcode`\>=12 - \escapechar=`\\ - % - \let\b=\ptexb - \let\bullet=\ptexbullet - \let\c=\ptexc - \let\,=\ptexcomma - \let\.=\ptexdot - \let\dots=\ptexdots - \let\equiv=\ptexequiv - \let\!=\ptexexclam - \let\i=\ptexi - \let\{=\ptexlbrace - \let\+=\tabalign - \let\}=\ptexrbrace - \let\*=\ptexstar - \let\t=\ptext - % - \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% - \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% - \def\@{@}% -\let\Etex=\endgroup} - -% Define @lisp ... @end lisp. -% @lisp does a \begingroup so it can rebind things, -% including the definition of @end lisp (which normally is erroneous). - -% Amount to narrow the margins by for @lisp. -\newskip\lispnarrowing \lispnarrowing=0.4in - -% This is the definition that ^^M gets inside @lisp, @example, and other -% such environments. \null is better than a space, since it doesn't -% have any width. -\def\lisppar{\null\endgraf} - -% Make each space character in the input produce a normal interword -% space in the output. Don't allow a line break at this space, as this -% is used only in environments like @example, where each line of input -% should produce a line of output anyway. -% -{\obeyspaces % -\gdef\sepspaces{\obeyspaces\let =\tie}} - -% Define \obeyedspace to be our active space, whatever it is. This is -% for use in \parsearg. -{\sepspaces% -\global\let\obeyedspace= } - -% This space is always present above and below environments. -\newskip\envskipamount \envskipamount = 0pt - -% Make spacing and below environment symmetrical. We use \parskip here -% to help in doing that, since in @example-like environments \parskip -% is reset to zero; thus the \afterenvbreak inserts no space -- but the -% start of the next paragraph will insert \parskip -% -\def\aboveenvbreak{{% - \ifnum\lastpenalty < 10000 - \advance\envskipamount by \parskip - \endgraf - \ifdim\lastskip<\envskipamount - \removelastskip - \penalty-50 - \vskip\envskipamount - \fi - \fi -}} - -\let\afterenvbreak = \aboveenvbreak - -% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins. -\let\nonarrowing=\relax - -% @cartouche ... @end cartouche: draw rectangle w/rounded corners around -% environment contents. -\font\circle=lcircle10 -\newdimen\circthick -\newdimen\cartouter\newdimen\cartinner -\newskip\normbskip\newskip\normpskip\newskip\normlskip -\circthick=\fontdimen8\circle -% -\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth -\def\ctr{{\hskip 6pt\circle\char'010}} -\def\cbl{{\circle\char'012\hskip -6pt}} -\def\cbr{{\hskip 6pt\circle\char'011}} -\def\carttop{\hbox to \cartouter{\hskip\lskip - \ctl\leaders\hrule height\circthick\hfil\ctr - \hskip\rskip}} -\def\cartbot{\hbox to \cartouter{\hskip\lskip - \cbl\leaders\hrule height\circthick\hfil\cbr - \hskip\rskip}} -% -\newskip\lskip\newskip\rskip - -\long\def\cartouche{% -\begingroup - \lskip=\leftskip \rskip=\rightskip - \leftskip=0pt\rightskip=0pt %we want these *outside*. - \cartinner=\hsize \advance\cartinner by-\lskip - \advance\cartinner by-\rskip - \cartouter=\hsize - \advance\cartouter by 18.4pt % allow for 3pt kerns on either -% side, and for 6pt waste from -% each corner char, and rule thickness - \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip - % Flag to tell @lisp, etc., not to narrow margin. - \let\nonarrowing=\comment - \vbox\bgroup - \baselineskip=0pt\parskip=0pt\lineskip=0pt - \carttop - \hbox\bgroup - \hskip\lskip - \vrule\kern3pt - \vbox\bgroup - \hsize=\cartinner - \kern3pt - \begingroup - \baselineskip=\normbskip - \lineskip=\normlskip - \parskip=\normpskip - \vskip -\parskip -\def\Ecartouche{% - \endgroup - \kern3pt - \egroup - \kern3pt\vrule - \hskip\rskip - \egroup - \cartbot - \egroup -\endgroup -}} - - -% This macro is called at the beginning of all the @example variants, -% inside a group. -\def\nonfillstart{% - \aboveenvbreak - \inENV % This group ends at the end of the body - \hfuzz = 12pt % Don't be fussy - \sepspaces % Make spaces be word-separators rather than space tokens. - \singlespace - \let\par = \lisppar % don't ignore blank lines - \obeylines % each line of input is a line of output - \parskip = 0pt - \parindent = 0pt - \emergencystretch = 0pt % don't try to avoid overfull boxes - % @cartouche defines \nonarrowing to inhibit narrowing - % at next level down. - \ifx\nonarrowing\relax - \advance \leftskip by \lispnarrowing - \exdentamount=\lispnarrowing - \let\exdent=\nofillexdent - \let\nonarrowing=\relax - \fi -} - -% Define the \E... control sequence only if we are inside the particular -% environment, so the error checking in \end will work. -% -% To end an @example-like environment, we first end the paragraph (via -% \afterenvbreak's vertical glue), and then the group. That way we keep -% the zero \parskip that the environments set -- \parskip glue will be -% inserted at the beginning of the next paragraph in the document, after -% the environment. -% -\def\nonfillfinish{\afterenvbreak\endgroup} - -% @lisp: indented, narrowed, typewriter font. -\def\lisp{\begingroup - \nonfillstart - \let\Elisp = \nonfillfinish - \tt - \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. - \gobble % eat return -} - -% @example: Same as @lisp. -\def\example{\begingroup \def\Eexample{\nonfillfinish\endgroup}\lisp} - -% @small... is usually equivalent to the non-small (@smallbook -% redefines). We must call \example (or whatever) last in the -% definition, since it reads the return following the @example (or -% whatever) command. -% -% This actually allows (for example) @end display inside an -% @smalldisplay. Too bad, but makeinfo will catch the error anyway. -% -\def\smalldisplay{\begingroup\def\Esmalldisplay{\nonfillfinish\endgroup}\display} -\def\smallexample{\begingroup\def\Esmallexample{\nonfillfinish\endgroup}\lisp} -\def\smallformat{\begingroup\def\Esmallformat{\nonfillfinish\endgroup}\format} -\def\smalllisp{\begingroup\def\Esmalllisp{\nonfillfinish\endgroup}\lisp} - -% Real @smallexample and @smalllisp (when @smallbook): use smaller fonts. -% Originally contributed by Pavel@xerox. -\def\smalllispx{\begingroup - \def\Esmalllisp{\nonfillfinish\endgroup}% - \def\Esmallexample{\nonfillfinish\endgroup}% - \smallexamplefonts - \lisp -} - -% @display: same as @lisp except keep current font. -% -\def\display{\begingroup - \nonfillstart - \let\Edisplay = \nonfillfinish - \gobble -} -% -% @smalldisplay (when @smallbook): @display plus smaller fonts. -% -\def\smalldisplayx{\begingroup - \def\Esmalldisplay{\nonfillfinish\endgroup}% - \smallexamplefonts \rm - \display -} - -% @format: same as @display except don't narrow margins. -% -\def\format{\begingroup - \let\nonarrowing = t - \nonfillstart - \let\Eformat = \nonfillfinish - \gobble -} -% -% @smallformat (when @smallbook): @format plus smaller fonts. -% -\def\smallformatx{\begingroup - \def\Esmallformat{\nonfillfinish\endgroup}% - \smallexamplefonts \rm - \format -} - -% @flushleft (same as @format). -% -\def\flushleft{\begingroup \def\Eflushleft{\nonfillfinish\endgroup}\format} - -% @flushright. -% -\def\flushright{\begingroup - \let\nonarrowing = t - \nonfillstart - \let\Eflushright = \nonfillfinish - \advance\leftskip by 0pt plus 1fill - \gobble -} - - -% @quotation does normal linebreaking (hence we can't use \nonfillstart) -% and narrows the margins. -% -\def\quotation{% - \begingroup\inENV %This group ends at the end of the @quotation body - {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip - \singlespace - \parindent=0pt - % We have retained a nonzero parskip for the environment, since we're - % doing normal filling. So to avoid extra space below the environment... - \def\Equotation{\parskip = 0pt \nonfillfinish}% - % - % @cartouche defines \nonarrowing to inhibit narrowing at next level down. - \ifx\nonarrowing\relax - \advance\leftskip by \lispnarrowing - \advance\rightskip by \lispnarrowing - \exdentamount = \lispnarrowing - \let\nonarrowing = \relax - \fi -} - - -% LaTeX-like @verbatim...@end verbatim and @verb{...} -% If we want to allow any as delimiter, -% we need the curly braces so that makeinfo sees the @verb command, eg: -% `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org -% -% [Knuth]: Donald Ervin Knuth, 1996. The TeXbook. -% -% [Knuth] p. 344; only we need to do '@' too -\def\dospecials{% - \do\ \do\\\do\@\do\{\do\}\do\$\do\&% - \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~} -% -% [Knuth] p. 380 -\def\uncatcodespecials{% - \def\do##1{\catcode`##1=12}\dospecials} -% -% [Knuth] pp. 380,381,391 -% Disable Spanish ligatures ?` and !` of \tt font -\begingroup - \catcode`\`=\active\gdef`{\relax\lq} -\endgroup -% -% Setup for the @verb command. -% -% Eight spaces for a tab -\begingroup - \catcode`\^^I=\active - \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }} -\endgroup -% -\def\setupverb{% - \tt % easiest (and conventionally used) font for verbatim - \def\par{\leavevmode\endgraf}% - \catcode`\`=\active - \tabeightspaces - % Respect line breaks, - % print special symbols as themselves, and - % make each space count - % must do in this order: - \obeylines \uncatcodespecials \sepspaces -} - -% Setup for the @verbatim environment -% -% Real tab expansion -\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount -% -\def\starttabbox{\setbox0=\hbox\bgroup} -\begingroup - \catcode`\^^I=\active - \gdef\tabexpand{% - \catcode`\^^I=\active - \def^^I{\leavevmode\egroup - \dimen0=\wd0 % the width so far, or since the previous tab - \divide\dimen0 by\tabw - \multiply\dimen0 by\tabw % compute previous multiple of \tabw - \advance\dimen0 by\tabw % advance to next multiple of \tabw - \wd0=\dimen0 \box0 \starttabbox - }% - } -\endgroup -\def\setupverbatim{% - % Easiest (and conventionally used) font for verbatim - \tt - \def\par{\leavevmode\egroup\box0\endgraf}% - \catcode`\`=\active - \tabexpand - % Respect line breaks, - % print special symbols as themselves, and - % make each space count - % must do in this order: - \obeylines \uncatcodespecials \sepspaces - \everypar{\starttabbox}% -} - -% Do the @verb magic: verbatim text is quoted by unique -% delimiter characters. Before first delimiter expect a -% right brace, after last delimiter expect closing brace: -% -% \def\doverb'{'#1'}'{#1} -% -% [Knuth] p. 382; only eat outer {} -\begingroup - \catcode`[=1\catcode`]=2\catcode`\{=12\catcode`\}=12 - \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next] -\endgroup -% -\def\verb{\begingroup\setupverb\doverb} -% -% -% Do the @verbatim magic: define the macro \doverbatim so that -% the (first) argument ends when '@end verbatim' is reached, ie: -% -% \def\doverbatim#1@end verbatim{#1} -% -% For Texinfo it's a lot easier than for LaTeX, -% because texinfo's \verbatim doesn't stop at '\end{verbatim}': -% we need not redefine '\', '{' and '}' -% -% Inspired by LaTeX's verbatim command set [latex.ltx] -%% Include LaTeX hack for completeness -- never know -%% \begingroup -%% \catcode`|=0 \catcode`[=1 -%% \catcode`]=2\catcode`\{=12\catcode`\}=12\catcode`\ =\active -%% \catcode`\\=12|gdef|doverbatim#1@end verbatim[ -%% #1|endgroup|def|Everbatim[]|end[verbatim]] -%% |endgroup -\begingroup - \catcode`\ =\active - \gdef\doverbatim#1@end verbatim{#1\end{verbatim}} -\endgroup -% -\def\verbatim{% - \def\Everbatim{\nonfillfinish\endgroup}% - \begingroup - \nonfillstart - \advance\leftskip by -\defbodyindent - \begingroup\setupverbatim\doverbatim -} - -% @verbatiminclude FILE - insert text of file in verbatim environment. -% -% Allow normal characters that we make active in the argument (a file name). -\def\verbatiminclude{% - \begingroup - \catcode`\\=12 - \catcode`~=12 - \catcode`^=12 - \catcode`_=12 - \catcode`|=12 - \catcode`<=12 - \catcode`>=12 - \catcode`+=12 - \parsearg\doverbatiminclude -} -\def\setupverbatiminclude{% - \begingroup - \nonfillstart - \advance\leftskip by -\defbodyindent - \begingroup\setupverbatim -} -% -\def\doverbatiminclude#1{% - % Restore active chars for included file. - \endgroup - \begingroup - \def\thisfile{#1}% - \expandafter\expandafter\setupverbatiminclude\input\thisfile - \endgroup\nonfillfinish\endgroup -} - -% @copying ... @end copying. -% Save the text away for @insertcopying later. -% -\newbox\copyingbox -% -\def\copying{\begingroup - \parindent = 0pt % looks wrong on title page - \def\Ecopying{\egroup\endgroup}% - \global\setbox\copyingbox = \vbox\bgroup -} - -% @insertcopying. -% -\def\insertcopying{\unvcopy\copyingbox} - - -\message{defuns,} -% @defun etc. - -% Allow user to change definition object font (\df) internally -\def\setdeffont #1 {\csname DEF#1\endcsname} - -\newskip\defbodyindent \defbodyindent=.4in -\newskip\defargsindent \defargsindent=50pt -\newskip\deftypemargin \deftypemargin=12pt -\newskip\deflastargmargin \deflastargmargin=18pt - -\newcount\parencount -% define \functionparens, which makes ( and ) and & do special things. -% \functionparens affects the group it is contained in. -\def\activeparens{% -\catcode`\(=\active \catcode`\)=\active \catcode`\&=\active -\catcode`\[=\active \catcode`\]=\active} - -% Make control sequences which act like normal parenthesis chars. -\let\lparen = ( \let\rparen = ) - -{\activeparens % Now, smart parens don't turn on until &foo (see \amprm) - -% Be sure that we always have a definition for `(', etc. For example, -% if the fn name has parens in it, \boldbrax will not be in effect yet, -% so TeX would otherwise complain about undefined control sequence. -\global\let(=\lparen \global\let)=\rparen -\global\let[=\lbrack \global\let]=\rbrack - -\gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 } -\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} -% This is used to turn on special parens -% but make & act ordinary (given that it's active). -\gdef\boldbraxnoamp{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb\let&=\ampnr} - -% Definitions of (, ) and & used in args for functions. -% This is the definition of ( outside of all parentheses. -\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested - \global\advance\parencount by 1 -} -% -% This is the definition of ( when already inside a level of parens. -\gdef\opnested{\char`\(\global\advance\parencount by 1 } -% -\gdef\clrm{% Print a paren in roman if it is taking us back to depth of 0. - % also in that case restore the outer-level definition of (. - \ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi - \global\advance \parencount by -1 } -% If we encounter &foo, then turn on ()-hacking afterwards -\gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ } -% -\gdef\normalparens{\boldbrax\let&=\ampnr} -} % End of definition inside \activeparens -%% These parens (in \boldbrax) actually are a little bolder than the -%% contained text. This is especially needed for [ and ] -\def\opnr{{\sf\char`\(}\global\advance\parencount by 1 } -\def\clnr{{\sf\char`\)}\global\advance\parencount by -1 } -\let\ampnr = \& -\def\lbrb{{\bf\char`\[}} -\def\rbrb{{\bf\char`\]}} - -% Active &'s sneak into the index arguments, so make sure it's defined. -{ - \catcode`& = 13 - \global\let& = \ampnr -} - -% First, defname, which formats the header line itself. -% #1 should be the function name. -% #2 should be the type of definition, such as "Function". - -\def\defname #1#2{% -% Get the values of \leftskip and \rightskip as they were -% outside the @def... -\dimen2=\leftskip -\advance\dimen2 by -\defbodyindent -\noindent -\setbox0=\hbox{\hskip \deflastargmargin{\rm #2}\hskip \deftypemargin}% -\dimen0=\hsize \advance \dimen0 by -\wd0 % compute size for first line -\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations -\parshape 2 0in \dimen0 \defargsindent \dimen1 -% Now output arg 2 ("Function" or some such) -% ending at \deftypemargin from the right margin, -% but stuck inside a box of width 0 so it does not interfere with linebreaking -{% Adjust \hsize to exclude the ambient margins, -% so that \rightline will obey them. -\advance \hsize by -\dimen2 -\rlap{\rightline{{\rm #2}\hskip -1.25pc }}}% -% Make all lines underfull and no complaints: -\tolerance=10000 \hbadness=10000 -\advance\leftskip by -\defbodyindent -\exdentamount=\defbodyindent -{\df #1}\enskip % Generate function name -} - -% Actually process the body of a definition -% #1 should be the terminating control sequence, such as \Edefun. -% #2 should be the "another name" control sequence, such as \defunx. -% #3 should be the control sequence that actually processes the header, -% such as \defunheader. - -\def\defparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody -\medbreak % -% Define the end token that this defining construct specifies -% so that it will exit this group. -\def#1{\endgraf\endgroup\medbreak}% -\def#2{\begingroup\obeylines\activeparens\spacesplit#3}% -\parindent=0in -\advance\leftskip by \defbodyindent -\exdentamount=\defbodyindent -\begingroup % -\catcode 61=\active % 61 is `=' -\obeylines\activeparens\spacesplit#3} - -% #1 is the \E... control sequence to end the definition (which we define). -% #2 is the \...x control sequence for consecutive fns (which we define). -% #3 is the control sequence to call to resume processing. -% #4, delimited by the space, is the class name. -% -\def\defmethparsebody#1#2#3#4 {\begingroup\inENV % -\medbreak % -% Define the end token that this defining construct specifies -% so that it will exit this group. -\def#1{\endgraf\endgroup\medbreak}% -\def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}% -\parindent=0in -\advance\leftskip by \defbodyindent -\exdentamount=\defbodyindent -\begingroup\obeylines\activeparens\spacesplit{#3{#4}}} - -% Used for @deftypemethod and @deftypeivar. -% #1 is the \E... control sequence to end the definition (which we define). -% #2 is the \...x control sequence for consecutive fns (which we define). -% #3 is the control sequence to call to resume processing. -% #4, delimited by a space, is the class name. -% #5 is the method's return type. -% -\def\deftypemethparsebody#1#2#3#4 #5 {\begingroup\inENV - \medbreak - \def#1{\endgraf\endgroup\medbreak}% - \def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}% - \parindent=0in - \advance\leftskip by \defbodyindent - \exdentamount=\defbodyindent - \begingroup\obeylines\activeparens\spacesplit{#3{#4}{#5}}} - -% Used for @deftypeop. The change from \deftypemethparsebody is an -% extra argument at the beginning which is the `category', instead of it -% being the hardwired string `Method' or `Instance Variable'. We have -% to account for this both in the \...x definition and in parsing the -% input at hand. Thus also need a control sequence (passed as #5) for -% the \E... definition to assign the category name to. -% -\def\deftypeopparsebody#1#2#3#4#5 #6 {\begingroup\inENV - \medbreak - \def#1{\endgraf\endgroup\medbreak}% - \def#2##1 ##2 ##3 {% - \def#4{##1}% - \begingroup\obeylines\activeparens\spacesplit{#3{##2}{##3}}}% - \parindent=0in - \advance\leftskip by \defbodyindent - \exdentamount=\defbodyindent - \begingroup\obeylines\activeparens\spacesplit{#3{#5}{#6}}} - -\def\defopparsebody #1#2#3#4#5 {\begingroup\inENV % -\medbreak % -% Define the end token that this defining construct specifies -% so that it will exit this group. -\def#1{\endgraf\endgroup\medbreak}% -\def#2##1 ##2 {\def#4{##1}% -\begingroup\obeylines\activeparens\spacesplit{#3{##2}}}% -\parindent=0in -\advance\leftskip by \defbodyindent -\exdentamount=\defbodyindent -\begingroup\obeylines\activeparens\spacesplit{#3{#5}}} - -% These parsing functions are similar to the preceding ones -% except that they do not make parens into active characters. -% These are used for "variables" since they have no arguments. - -\def\defvarparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody -\medbreak % -% Define the end token that this defining construct specifies -% so that it will exit this group. -\def#1{\endgraf\endgroup\medbreak}% -\def#2{\begingroup\obeylines\spacesplit#3}% -\parindent=0in -\advance\leftskip by \defbodyindent -\exdentamount=\defbodyindent -\begingroup % -\catcode 61=\active % -\obeylines\spacesplit#3} - -% This is used for \def{tp,vr}parsebody. It could probably be used for -% some of the others, too, with some judicious conditionals. -% -\def\parsebodycommon#1#2#3{% - \begingroup\inENV % - \medbreak % - % Define the end token that this defining construct specifies - % so that it will exit this group. - \def#1{\endgraf\endgroup\medbreak}% - \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}% - \parindent=0in - \advance\leftskip by \defbodyindent - \exdentamount=\defbodyindent - \begingroup\obeylines -} - -\def\defvrparsebody#1#2#3#4 {% - \parsebodycommon{#1}{#2}{#3}% - \spacesplit{#3{#4}}% -} - -% This loses on `@deftp {Data Type} {struct termios}' -- it thinks the -% type is just `struct', because we lose the braces in `{struct -% termios}' when \spacesplit reads its undelimited argument. Sigh. -% \let\deftpparsebody=\defvrparsebody -% -% So, to get around this, we put \empty in with the type name. That -% way, TeX won't find exactly `{...}' as an undelimited argument, and -% won't strip off the braces. -% -\def\deftpparsebody #1#2#3#4 {% - \parsebodycommon{#1}{#2}{#3}% - \spacesplit{\parsetpheaderline{#3{#4}}}\empty -} - -% Fine, but then we have to eventually remove the \empty *and* the -% braces (if any). That's what this does. -% -\def\removeemptybraces\empty#1\relax{#1} - -% After \spacesplit has done its work, this is called -- #1 is the final -% thing to call, #2 the type name (which starts with \empty), and #3 -% (which might be empty) the arguments. -% -\def\parsetpheaderline#1#2#3{% - #1{\removeemptybraces#2\relax}{#3}% -}% - -\def\defopvarparsebody #1#2#3#4#5 {\begingroup\inENV % -\medbreak % -% Define the end token that this defining construct specifies -% so that it will exit this group. -\def#1{\endgraf\endgroup\medbreak}% -\def#2##1 ##2 {\def#4{##1}% -\begingroup\obeylines\spacesplit{#3{##2}}}% -\parindent=0in -\advance\leftskip by \defbodyindent -\exdentamount=\defbodyindent -\begingroup\obeylines\spacesplit{#3{#5}}} - -% Split up #2 at the first space token. -% call #1 with two arguments: -% the first is all of #2 before the space token, -% the second is all of #2 after that space token. -% If #2 contains no space token, all of it is passed as the first arg -% and the second is passed as empty. - -{\obeylines -\gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}% -\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{% -\ifx\relax #3% -#1{#2}{}\else #1{#2}{#3#4}\fi}} - -% So much for the things common to all kinds of definitions. - -% Define @defun. - -% First, define the processing that is wanted for arguments of \defun -% Use this to expand the args and terminate the paragraph they make up - -\def\defunargs#1{\functionparens \sl -% Expand, preventing hyphenation at `-' chars. -% Note that groups don't affect changes in \hyphenchar. -% Set the font temporarily and use \font in case \setfont made \tensl a macro. -{\tensl\hyphenchar\font=0}% -#1% -{\tensl\hyphenchar\font=45}% -\ifnum\parencount=0 \else \errmessage{Unbalanced parentheses in @def}\fi% -\interlinepenalty=10000 -\advance\rightskip by 0pt plus 1fil -\endgraf\nobreak\vskip -\parskip\nobreak -} - -\def\deftypefunargs #1{% -% Expand, preventing hyphenation at `-' chars. -% Note that groups don't affect changes in \hyphenchar. -% Use \boldbraxnoamp, not \functionparens, so that & is not special. -\boldbraxnoamp -\tclose{#1}% avoid \code because of side effects on active chars -\interlinepenalty=10000 -\advance\rightskip by 0pt plus 1fil -\endgraf\nobreak\vskip -\parskip\nobreak -} - -% Do complete processing of one @defun or @defunx line already parsed. - -% @deffn Command forward-char nchars - -\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader} - -\def\deffnheader #1#2#3{\doind {fn}{\code{#2}}% -\begingroup\defname {#2}{#1}\defunargs{#3}\endgroup % -\catcode 61=\other % Turn off change made in \defparsebody -} - -% @defun == @deffn Function - -\def\defun{\defparsebody\Edefun\defunx\defunheader} - -\def\defunheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index -\begingroup\defname {#1}{\putwordDeffunc}% -\defunargs {#2}\endgroup % -\catcode 61=\other % Turn off change made in \defparsebody -} - -% @deftypefun int foobar (int @var{foo}, float @var{bar}) - -\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader} - -% #1 is the data type. #2 is the name and args. -\def\deftypefunheader #1#2{\deftypefunheaderx{#1}#2 \relax} -% #1 is the data type, #2 the name, #3 the args. -\def\deftypefunheaderx #1#2 #3\relax{% -\doind {fn}{\code{#2}}% Make entry in function index -\begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypefun}% -\deftypefunargs {#3}\endgroup % -\catcode 61=\other % Turn off change made in \defparsebody -} - -% @deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar}) - -\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader} - -% \defheaderxcond#1\relax$.$ -% puts #1 in @code, followed by a space, but does nothing if #1 is null. -\def\defheaderxcond#1#2$.${\ifx#1\relax\else\code{#1#2} \fi} - -% #1 is the classification. #2 is the data type. #3 is the name and args. -\def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax} -% #1 is the classification, #2 the data type, #3 the name, #4 the args. -\def\deftypefnheaderx #1#2#3 #4\relax{% -\doind {fn}{\code{#3}}% Make entry in function index -\begingroup -\normalparens % notably, turn off `&' magic, which prevents -% at least some C++ text from working -\defname {\defheaderxcond#2\relax$.$#3}{#1}% -\deftypefunargs {#4}\endgroup % -\catcode 61=\other % Turn off change made in \defparsebody -} - -% @defmac == @deffn Macro - -\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader} - -\def\defmacheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index -\begingroup\defname {#1}{\putwordDefmac}% -\defunargs {#2}\endgroup % -\catcode 61=\other % Turn off change made in \defparsebody -} - -% @defspec == @deffn Special Form - -\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader} - -\def\defspecheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index -\begingroup\defname {#1}{\putwordDefspec}% -\defunargs {#2}\endgroup % -\catcode 61=\other % Turn off change made in \defparsebody -} - -% @defop CATEGORY CLASS OPERATION ARG... -% -\def\defop #1 {\def\defoptype{#1}% -\defopparsebody\Edefop\defopx\defopheader\defoptype} -% -\def\defopheader#1#2#3{% -\dosubind {fn}{\code{#2}}{\putwordon\ #1}% Make entry in function index -\begingroup\defname {#2}{\defoptype\ \putwordon\ #1}% -\defunargs {#3}\endgroup % -} - -% @deftypeop CATEGORY CLASS TYPE OPERATION ARG... -% -\def\deftypeop #1 {\def\deftypeopcategory{#1}% - \deftypeopparsebody\Edeftypeop\deftypeopx\deftypeopheader - \deftypeopcategory} -% -% #1 is the class name, #2 the data type, #3 the operation name, #4 the args. -\def\deftypeopheader#1#2#3#4{% - \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index - \begingroup - \defname{\defheaderxcond#2\relax$.$#3} - {\deftypeopcategory\ \putwordon\ \code{#1}}% - \deftypefunargs{#4}% - \endgroup -} - -% @deftypemethod CLASS TYPE METHOD ARG... -% -\def\deftypemethod{% - \deftypemethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader} -% -% #1 is the class name, #2 the data type, #3 the method name, #4 the args. -\def\deftypemethodheader#1#2#3#4{% - \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index - \begingroup - \defname{\defheaderxcond#2\relax$.$#3}{\putwordMethodon\ \code{#1}}% - \deftypefunargs{#4}% - \endgroup -} - -% @deftypeivar CLASS TYPE VARNAME -% -\def\deftypeivar{% - \deftypemethparsebody\Edeftypeivar\deftypeivarx\deftypeivarheader} -% -% #1 is the class name, #2 the data type, #3 the variable name. -\def\deftypeivarheader#1#2#3{% - \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index - \begingroup - \defname{\defheaderxcond#2\relax$.$#3} - {\putwordInstanceVariableof\ \code{#1}}% - \defvarargs{#3}% - \endgroup -} - -% @defmethod == @defop Method -% -\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader} -% -% #1 is the class name, #2 the method name, #3 the args. -\def\defmethodheader#1#2#3{% - \dosubind{fn}{\code{#2}}{\putwordon\ \code{#1}}% entry in function index - \begingroup - \defname{#2}{\putwordMethodon\ \code{#1}}% - \defunargs{#3}% - \endgroup -} - -% @defcv {Class Option} foo-class foo-flag - -\def\defcv #1 {\def\defcvtype{#1}% -\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype} - -\def\defcvarheader #1#2#3{% -\dosubind {vr}{\code{#2}}{\putwordof\ #1}% Make entry in var index -\begingroup\defname {#2}{\defcvtype\ \putwordof\ #1}% -\defvarargs {#3}\endgroup % -} - -% @defivar CLASS VARNAME == @defcv {Instance Variable} CLASS VARNAME -% -\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader} -% -\def\defivarheader#1#2#3{% - \dosubind {vr}{\code{#2}}{\putwordof\ #1}% entry in var index - \begingroup - \defname{#2}{\putwordInstanceVariableof\ #1}% - \defvarargs{#3}% - \endgroup -} - -% @defvar -% First, define the processing that is wanted for arguments of @defvar. -% This is actually simple: just print them in roman. -% This must expand the args and terminate the paragraph they make up -\def\defvarargs #1{\normalparens #1% -\interlinepenalty=10000 -\endgraf\nobreak\vskip -\parskip\nobreak} - -% @defvr Counter foo-count - -\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader} - -\def\defvrheader #1#2#3{\doind {vr}{\code{#2}}% -\begingroup\defname {#2}{#1}\defvarargs{#3}\endgroup} - -% @defvar == @defvr Variable - -\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader} - -\def\defvarheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index -\begingroup\defname {#1}{\putwordDefvar}% -\defvarargs {#2}\endgroup % -} - -% @defopt == @defvr {User Option} - -\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader} - -\def\defoptheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index -\begingroup\defname {#1}{\putwordDefopt}% -\defvarargs {#2}\endgroup % -} - -% @deftypevar int foobar - -\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader} - -% #1 is the data type. #2 is the name, perhaps followed by text that -% is actually part of the data type, which should not be put into the index. -\def\deftypevarheader #1#2{% -\dovarind#2 \relax% Make entry in variables index -\begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypevar}% -\interlinepenalty=10000 -\endgraf\nobreak\vskip -\parskip\nobreak -\endgroup} -\def\dovarind#1 #2\relax{\doind{vr}{\code{#1}}} - -% @deftypevr {Global Flag} int enable - -\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader} - -\def\deftypevrheader #1#2#3{\dovarind#3 \relax% -\begingroup\defname {\defheaderxcond#2\relax$.$#3}{#1} -\interlinepenalty=10000 -\endgraf\nobreak\vskip -\parskip\nobreak -\endgroup} - -% Now define @deftp -% Args are printed in bold, a slight difference from @defvar. - -\def\deftpargs #1{\bf \defvarargs{#1}} - -% @deftp Class window height width ... - -\def\deftp{\deftpparsebody\Edeftp\deftpx\deftpheader} - -\def\deftpheader #1#2#3{\doind {tp}{\code{#2}}% -\begingroup\defname {#2}{#1}\deftpargs{#3}\endgroup} - -% These definitions are used if you use @defunx (etc.) -% anywhere other than immediately after a @defun or @defunx. -% -\def\defcvx#1 {\errmessage{@defcvx in invalid context}} -\def\deffnx#1 {\errmessage{@deffnx in invalid context}} -\def\defivarx#1 {\errmessage{@defivarx in invalid context}} -\def\defmacx#1 {\errmessage{@defmacx in invalid context}} -\def\defmethodx#1 {\errmessage{@defmethodx in invalid context}} -\def\defoptx #1 {\errmessage{@defoptx in invalid context}} -\def\defopx#1 {\errmessage{@defopx in invalid context}} -\def\defspecx#1 {\errmessage{@defspecx in invalid context}} -\def\deftpx#1 {\errmessage{@deftpx in invalid context}} -\def\deftypefnx#1 {\errmessage{@deftypefnx in invalid context}} -\def\deftypefunx#1 {\errmessage{@deftypefunx in invalid context}} -\def\deftypeivarx#1 {\errmessage{@deftypeivarx in invalid context}} -\def\deftypemethodx#1 {\errmessage{@deftypemethodx in invalid context}} -\def\deftypeopx#1 {\errmessage{@deftypeopx in invalid context}} -\def\deftypevarx#1 {\errmessage{@deftypevarx in invalid context}} -\def\deftypevrx#1 {\errmessage{@deftypevrx in invalid context}} -\def\defunx#1 {\errmessage{@defunx in invalid context}} -\def\defvarx#1 {\errmessage{@defvarx in invalid context}} -\def\defvrx#1 {\errmessage{@defvrx in invalid context}} - - -\message{macros,} -% @macro. - -% To do this right we need a feature of e-TeX, \scantokens, -% which we arrange to emulate with a temporary file in ordinary TeX. -\ifx\eTeXversion\undefined - \newwrite\macscribble - \def\scanmacro#1{% - \begingroup \newlinechar`\^^M - % Undo catcode changes of \startcontents and \doprintindex - \catcode`\@=0 \catcode`\\=12 \escapechar=`\@ - % Append \endinput to make sure that TeX does not see the ending newline. - \toks0={#1\endinput}% - \immediate\openout\macscribble=\jobname.tmp - \immediate\write\macscribble{\the\toks0}% - \immediate\closeout\macscribble - \let\xeatspaces\eatspaces - \input \jobname.tmp - \endgroup -} -\else -\def\scanmacro#1{% -\begingroup \newlinechar`\^^M -% Undo catcode changes of \startcontents and \doprintindex -\catcode`\@=0 \catcode`\\=12 \escapechar=`\@ -\let\xeatspaces\eatspaces\scantokens{#1\endinput}\endgroup} -\fi - -\newcount\paramno % Count of parameters -\newtoks\macname % Macro name -\newif\ifrecursive % Is it recursive? -\def\macrolist{} % List of all defined macros in the form - % \do\macro1\do\macro2... - -% Utility routines. -% Thisdoes \let #1 = #2, except with \csnames. -\def\cslet#1#2{% -\expandafter\expandafter -\expandafter\let -\expandafter\expandafter -\csname#1\endcsname -\csname#2\endcsname} - -% Trim leading and trailing spaces off a string. -% Concepts from aro-bend problem 15 (see CTAN). -{\catcode`\@=11 -\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }} -\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@} -\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @} -\def\unbrace#1{#1} -\unbrace{\gdef\trim@@@ #1 } #2@{#1} -} - -% Trim a single trailing ^^M off a string. -{\catcode`\^^M=12\catcode`\Q=3% -\gdef\eatcr #1{\eatcra #1Q^^MQ}% -\gdef\eatcra#1^^MQ{\eatcrb#1Q}% -\gdef\eatcrb#1Q#2Q{#1}% -} - -% Macro bodies are absorbed as an argument in a context where -% all characters are catcode 10, 11 or 12, except \ which is active -% (as in normal texinfo). It is necessary to change the definition of \. - -% It's necessary to have hard CRs when the macro is executed. This is -% done by making ^^M (\endlinechar) catcode 12 when reading the macro -% body, and then making it the \newlinechar in \scanmacro. - -\def\macrobodyctxt{% - \catcode`\~=12 - \catcode`\^=12 - \catcode`\_=12 - \catcode`\|=12 - \catcode`\<=12 - \catcode`\>=12 - \catcode`\+=12 - \catcode`\{=12 - \catcode`\}=12 - \catcode`\@=12 - \catcode`\^^M=12 - \usembodybackslash} - -\def\macroargctxt{% - \catcode`\~=12 - \catcode`\^=12 - \catcode`\_=12 - \catcode`\|=12 - \catcode`\<=12 - \catcode`\>=12 - \catcode`\+=12 - \catcode`\@=12 - \catcode`\\=12} - -% \mbodybackslash is the definition of \ in @macro bodies. -% It maps \foo\ => \csname macarg.foo\endcsname => #N -% where N is the macro parameter number. -% We define \csname macarg.\endcsname to be \realbackslash, so -% \\ in macro replacement text gets you a backslash. - -{\catcode`@=0 @catcode`@\=@active - @gdef@usembodybackslash{@let\=@mbodybackslash} - @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} -} -\expandafter\def\csname macarg.\endcsname{\realbackslash} - -\def\macro{\recursivefalse\parsearg\macroxxx} -\def\rmacro{\recursivetrue\parsearg\macroxxx} - -\def\macroxxx#1{% - \getargs{#1}% now \macname is the macname and \argl the arglist - \ifx\argl\empty % no arguments - \paramno=0% - \else - \expandafter\parsemargdef \argl;% - \fi - \if1\csname ismacro.\the\macname\endcsname - \message{Warning: redefining \the\macname}% - \else - \expandafter\ifx\csname \the\macname\endcsname \relax - \else \errmessage{Macro name \the\macname\space already defined}\fi - \global\cslet{macsave.\the\macname}{\the\macname}% - \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% - % Add the macroname to \macrolist - \toks0 = \expandafter{\macrolist\do}% - \xdef\macrolist{\the\toks0 - \expandafter\noexpand\csname\the\macname\endcsname}% - \fi - \begingroup \macrobodyctxt - \ifrecursive \expandafter\parsermacbody - \else \expandafter\parsemacbody - \fi} - -\def\unmacro{\parsearg\unmacroxxx} -\def\unmacroxxx#1{% - \if1\csname ismacro.#1\endcsname - \global\cslet{#1}{macsave.#1}% - \global\expandafter\let \csname ismacro.#1\endcsname=0% - % Remove the macro name from \macrolist - \begingroup - \edef\tempa{\expandafter\noexpand\csname#1\endcsname}% - \def\do##1{% - \def\tempb{##1}% - \ifx\tempa\tempb - % remove this - \else - \toks0 = \expandafter{\newmacrolist\do}% - \edef\newmacrolist{\the\toks0\expandafter\noexpand\tempa}% - \fi}% - \def\newmacrolist{}% - % Execute macro list to define \newmacrolist - \macrolist - \global\let\macrolist\newmacrolist - \endgroup - \else - \errmessage{Macro #1 not defined}% - \fi -} - -% This makes use of the obscure feature that if the last token of a -% is #, then the preceding argument is delimited by -% an opening brace, and that opening brace is not consumed. -\def\getargs#1{\getargsxxx#1{}} -\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} -\def\getmacname #1 #2\relax{\macname={#1}} -\def\getmacargs#1{\def\argl{#1}} - -% Parse the optional {params} list. Set up \paramno and \paramlist -% so \defmacro knows what to do. Define \macarg.blah for each blah -% in the params list, to be ##N where N is the position in that list. -% That gets used by \mbodybackslash (above). - -% We need to get `macro parameter char #' into several definitions. -% The technique used is stolen from LaTeX: let \hash be something -% unexpandable, insert that wherever you need a #, and then redefine -% it to # just before using the token list produced. -% -% The same technique is used to protect \eatspaces till just before -% the macro is used. - -\def\parsemargdef#1;{\paramno=0\def\paramlist{}% - \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,} -\def\parsemargdefxxx#1,{% - \if#1;\let\next=\relax - \else \let\next=\parsemargdefxxx - \advance\paramno by 1% - \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname - {\xeatspaces{\hash\the\paramno}}% - \edef\paramlist{\paramlist\hash\the\paramno,}% - \fi\next} - -% These two commands read recursive and nonrecursive macro bodies. -% (They're different since rec and nonrec macros end differently.) - -\long\def\parsemacbody#1@end macro% -{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% -\long\def\parsermacbody#1@end rmacro% -{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% - -% This defines the macro itself. There are six cases: recursive and -% nonrecursive macros of zero, one, and many arguments. -% Much magic with \expandafter here. -% \xdef is used so that macro definitions will survive the file -% they're defined in; @include reads the file inside a group. -\def\defmacro{% - \let\hash=##% convert placeholders to macro parameter chars - \ifrecursive - \ifcase\paramno - % 0 - \expandafter\xdef\csname\the\macname\endcsname{% - \noexpand\scanmacro{\temp}}% - \or % 1 - \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup\noexpand\macroargctxt - \noexpand\braceorline - \expandafter\noexpand\csname\the\macname xxx\endcsname}% - \expandafter\xdef\csname\the\macname xxx\endcsname##1{% - \egroup\noexpand\scanmacro{\temp}}% - \else % many - \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup\noexpand\macroargctxt - \noexpand\csname\the\macname xx\endcsname}% - \expandafter\xdef\csname\the\macname xx\endcsname##1{% - \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% - \expandafter\expandafter - \expandafter\xdef - \expandafter\expandafter - \csname\the\macname xxx\endcsname - \paramlist{\egroup\noexpand\scanmacro{\temp}}% - \fi - \else - \ifcase\paramno - % 0 - \expandafter\xdef\csname\the\macname\endcsname{% - \noexpand\norecurse{\the\macname}% - \noexpand\scanmacro{\temp}\egroup}% - \or % 1 - \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup\noexpand\macroargctxt - \noexpand\braceorline - \expandafter\noexpand\csname\the\macname xxx\endcsname}% - \expandafter\xdef\csname\the\macname xxx\endcsname##1{% - \egroup - \noexpand\norecurse{\the\macname}% - \noexpand\scanmacro{\temp}\egroup}% - \else % many - \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup\noexpand\macroargctxt - \expandafter\noexpand\csname\the\macname xx\endcsname}% - \expandafter\xdef\csname\the\macname xx\endcsname##1{% - \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% - \expandafter\expandafter - \expandafter\xdef - \expandafter\expandafter - \csname\the\macname xxx\endcsname - \paramlist{% - \egroup - \noexpand\norecurse{\the\macname}% - \noexpand\scanmacro{\temp}\egroup}% - \fi - \fi} - -\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} - -% \braceorline decides whether the next nonwhitespace character is a -% {. If so it reads up to the closing }, if not, it reads the whole -% line. Whatever was read is then fed to the next control sequence -% as an argument (by \parsebrace or \parsearg) -\def\braceorline#1{\let\next=#1\futurelet\nchar\braceorlinexxx} -\def\braceorlinexxx{% - \ifx\nchar\bgroup\else - \expandafter\parsearg - \fi \next} - -% We mant to disable all macros during \shipout so that they are not -% expanded by \write. -\def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}% - \edef\next{\macrolist}\expandafter\endgroup\next} - - -% @alias. -% We need some trickery to remove the optional spaces around the equal -% sign. Just make them active and then expand them all to nothing. -\def\alias{\begingroup\obeyspaces\parsearg\aliasxxx} -\def\aliasxxx #1{\aliasyyy#1\relax} -\def\aliasyyy #1=#2\relax{\ignoreactivespaces -\edef\next{\global\let\expandafter\noexpand\csname#1\endcsname=% - \expandafter\noexpand\csname#2\endcsname}% -\expandafter\endgroup\next} - - -\message{cross references,} -% @xref etc. - -\newwrite\auxfile - -\newif\ifhavexrefs % True if xref values are known. -\newif\ifwarnedxrefs % True if we warned once that they aren't known. - -% @inforef is relatively simple. -\def\inforef #1{\inforefzzz #1,,,,**} -\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, - node \samp{\ignorespaces#1{}}} - -% @node's job is to define \lastnode. -\def\node{\ENVcheck\parsearg\nodezzz} -\def\nodezzz#1{\nodexxx [#1,]} -\def\nodexxx[#1,#2]{\gdef\lastnode{#1}} -\let\nwnode=\node -\let\lastnode=\relax - -% The sectioning commands (@chapter, etc.) call these. -\def\donoderef{% - \ifx\lastnode\relax\else - \expandafter\expandafter\expandafter\setref{\lastnode}% - {Ysectionnumberandtype}% - \global\let\lastnode=\relax - \fi -} -\def\unnumbnoderef{% - \ifx\lastnode\relax\else - \expandafter\expandafter\expandafter\setref{\lastnode}{Ynothing}% - \global\let\lastnode=\relax - \fi -} -\def\appendixnoderef{% - \ifx\lastnode\relax\else - \expandafter\expandafter\expandafter\setref{\lastnode}% - {Yappendixletterandtype}% - \global\let\lastnode=\relax - \fi -} - - -% @anchor{NAME} -- define xref target at arbitrary point. -% -\newcount\savesfregister -\gdef\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} -\gdef\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} -\gdef\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} - -% \setref{NAME}{SNT} defines a cross-reference point NAME, namely -% NAME-title, NAME-pg, and NAME-SNT. Called from \foonoderef. We have -% to set \indexdummies so commands such as @code in a section title -% aren't expanded. It would be nicer not to expand the titles in the -% first place, but there's so many layers that that is hard to do. -% -\def\setref#1#2{{% - \indexdummies - \pdfmkdest{#1}% - \dosetq{#1-title}{Ytitle}% - \dosetq{#1-pg}{Ypagenumber}% - \dosetq{#1-snt}{#2}% -}} - -% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is -% the node name, #2 the name of the Info cross-reference, #3 the printed -% node name, #4 the name of the Info file, #5 the name of the printed -% manual. All but the node name can be omitted. -% -\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]} -\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]} -\def\ref#1{\xrefX[#1,,,,,,,]} -\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup - \unsepspaces - \def\printedmanual{\ignorespaces #5}% - \def\printednodename{\ignorespaces #3}% - \setbox1=\hbox{\printedmanual}% - \setbox0=\hbox{\printednodename}% - \ifdim \wd0 = 0pt - % No printed node name was explicitly given. - \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax - % Use the node name inside the square brackets. - \def\printednodename{\ignorespaces #1}% - \else - % Use the actual chapter/section title appear inside - % the square brackets. Use the real section title if we have it. - \ifdim \wd1 > 0pt - % It is in another manual, so we don't have it. - \def\printednodename{\ignorespaces #1}% - \else - \ifhavexrefs - % We know the real title if we have the xref values. - \def\printednodename{\refx{#1-title}{}}% - \else - % Otherwise just copy the Info node name. - \def\printednodename{\ignorespaces #1}% - \fi% - \fi - \fi - \fi - % - % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not - % insert empty discretionaries after hyphens, which means that it will - % not find a line break at a hyphen in a node names. Since some manuals - % are best written with fairly long node names, containing hyphens, this - % is a loss. Therefore, we give the text of the node name again, so it - % is as if TeX is seeing it for the first time. - \ifpdf - \leavevmode - \getfilename{#4}% - {\normalturnoffactive - \ifnum\filenamelength>0 - \startlink attr{/Border [0 0 0]}% - goto file{\the\filename.pdf} name{#1}% - \else - \startlink attr{/Border [0 0 0]}% - goto name{#1}% - \fi - }% - \linkcolor - \fi - % - \ifdim \wd1 > 0pt - \putwordsection{} ``\printednodename'' \putwordin{} \cite{\printedmanual}% - \else - % _ (for example) has to be the character _ for the purposes of the - % control sequence corresponding to the node, but it has to expand - % into the usual \leavevmode...\vrule stuff for purposes of - % printing. So we \turnoffactive for the \refx-snt, back on for the - % printing, back off for the \refx-pg. - {\normalturnoffactive - % Only output a following space if the -snt ref is nonempty; for - % @unnumbered and @anchor, it won't be. - \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}% - \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi - }% - % [mynode], - [\printednodename],\space - % page 3 - \turnoffactive \putwordpage\tie\refx{#1-pg}{}% - \fi - \endlink -\endgroup} - -% \dosetq is the interface for calls from other macros - -% Use \normalturnoffactive so that punctuation chars such as underscore -% and backslash work in node names. (\turnoffactive doesn't do \.) -\def\dosetq#1#2{% - {\let\folio=0% - \normalturnoffactive - \edef\next{\write\auxfile{\internalsetq{#1}{#2}}}% - \iflinks - \next - \fi - }% -} - -% \internalsetq {foo}{page} expands into -% CHARACTERS 'xrdef {foo}{...expansion of \Ypage...} -% When the aux file is read, ' is the escape character - -\def\internalsetq #1#2{'xrdef {#1}{\csname #2\endcsname}} - -% Things to be expanded by \internalsetq - -\def\Ypagenumber{\folio} - -\def\Ytitle{\thissection} - -\def\Ynothing{} - -\def\Ysectionnumberandtype{% -\ifnum\secno=0 \putwordChapter\xreftie\the\chapno % -\else \ifnum \subsecno=0 \putwordSection\xreftie\the\chapno.\the\secno % -\else \ifnum \subsubsecno=0 % -\putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno % -\else % -\putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno % -\fi \fi \fi } - -\def\Yappendixletterandtype{% -\ifnum\secno=0 \putwordAppendix\xreftie'char\the\appendixno{}% -\else \ifnum \subsecno=0 \putwordSection\xreftie'char\the\appendixno.\the\secno % -\else \ifnum \subsubsecno=0 % -\putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno % -\else % -\putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno % -\fi \fi \fi } - -\gdef\xreftie{'tie} - -% Use TeX 3.0's \inputlineno to get the line number, for better error -% messages, but if we're using an old version of TeX, don't do anything. -% -\ifx\inputlineno\thisisundefined - \let\linenumber = \empty % Non-3.0. -\else - \def\linenumber{\the\inputlineno:\space} -\fi - -% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME. -% If its value is nonempty, SUFFIX is output afterward. - -\def\refx#1#2{% - \expandafter\ifx\csname X#1\endcsname\relax - % If not defined, say something at least. - \angleleft un\-de\-fined\angleright - \iflinks - \ifhavexrefs - \message{\linenumber Undefined cross reference `#1'.}% - \else - \ifwarnedxrefs\else - \global\warnedxrefstrue - \message{Cross reference values unknown; you must run TeX again.}% - \fi - \fi - \fi - \else - % It's defined, so just use it. - \csname X#1\endcsname - \fi - #2% Output the suffix in any case. -} - -% This is the macro invoked by entries in the aux file. -% -\def\xrdef#1{\begingroup - % Reenable \ as an escape while reading the second argument. - \catcode`\\ = 0 - \afterassignment\endgroup - \expandafter\gdef\csname X#1\endcsname -} - -% Read the last existing aux file, if any. No error if none exists. -\def\readauxfile{\begingroup - \catcode`\^^@=\other - \catcode`\^^A=\other - \catcode`\^^B=\other - \catcode`\^^C=\other - \catcode`\^^D=\other - \catcode`\^^E=\other - \catcode`\^^F=\other - \catcode`\^^G=\other - \catcode`\^^H=\other - \catcode`\^^K=\other - \catcode`\^^L=\other - \catcode`\^^N=\other - \catcode`\^^P=\other - \catcode`\^^Q=\other - \catcode`\^^R=\other - \catcode`\^^S=\other - \catcode`\^^T=\other - \catcode`\^^U=\other - \catcode`\^^V=\other - \catcode`\^^W=\other - \catcode`\^^X=\other - \catcode`\^^Z=\other - \catcode`\^^[=\other - \catcode`\^^\=\other - \catcode`\^^]=\other - \catcode`\^^^=\other - \catcode`\^^_=\other - \catcode`\@=\other - \catcode`\^=\other - % It was suggested to define this as 7, which would allow ^^e4 etc. - % in xref tags, i.e., node names. But since ^^e4 notation isn't - % supported in the main text, it doesn't seem desirable. Furthermore, - % that is not enough: for node names that actually contain a ^ - % character, we would end up writing a line like this: 'xrdef {'hat - % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first - % argument, and \hat is not an expandable control sequence. It could - % all be worked out, but why? Either we support ^^ or we don't. - % - % The other change necessary for this was to define \auxhat: - % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter - % and then to call \auxhat in \setq. - % - \catcode`\~=\other - \catcode`\[=\other - \catcode`\]=\other - \catcode`\"=\other - \catcode`\_=\other - \catcode`\|=\other - \catcode`\<=\other - \catcode`\>=\other - \catcode`\$=\other - \catcode`\#=\other - \catcode`\&=\other - \catcode`+=\other % avoid \+ for paranoia even though we've turned it off - % Make the characters 128-255 be printing characters - {% - \count 1=128 - \def\loop{% - \catcode\count 1=\other - \advance\count 1 by 1 - \ifnum \count 1<256 \loop \fi - }% - }% - % The aux file uses ' as the escape (for now). - % Turn off \ as an escape so we do not lose on - % entries which were dumped with control sequences in their names. - % For example, 'xrdef {$\leq $-fun}{page ...} made by @defun ^^ - % Reference to such entries still does not work the way one would wish, - % but at least they do not bomb out when the aux file is read in. - \catcode`\{=1 - \catcode`\}=2 - \catcode`\%=\other - \catcode`\'=0 - \catcode`\\=\other - % - \openin 1 \jobname.aux - \ifeof 1 \else - \closein 1 - \input \jobname.aux - \global\havexrefstrue - \global\warnedobstrue - \fi - % Open the new aux file. TeX will close it automatically at exit. - \openout\auxfile=\jobname.aux -\endgroup} - - -% Footnotes. - -\newcount \footnoteno - -% The trailing space in the following definition for supereject is -% vital for proper filling; pages come out unaligned when you do a -% pagealignmacro call if that space before the closing brace is -% removed. (Generally, numeric constants should always be followed by a -% space to prevent strange expansion errors.) -\def\supereject{\par\penalty -20000\footnoteno =0 } - -% @footnotestyle is meaningful for info output only. -\let\footnotestyle=\comment - -\let\ptexfootnote=\footnote - -{\catcode `\@=11 -% -% Auto-number footnotes. Otherwise like plain. -\gdef\footnote{% - \global\advance\footnoteno by \@ne - \edef\thisfootno{$^{\the\footnoteno}$}% - % - % In case the footnote comes at the end of a sentence, preserve the - % extra spacing after we do the footnote number. - \let\@sf\empty - \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi - % - % Remove inadvertent blank space before typesetting the footnote number. - \unskip - \thisfootno\@sf - \footnotezzz -}% - -% Don't bother with the trickery in plain.tex to not require the -% footnote text as a parameter. Our footnotes don't need to be so general. -% -% Oh yes, they do; otherwise, @ifset and anything else that uses -% \parseargline fail inside footnotes because the tokens are fixed when -% the footnote is read. --karl, 16nov96. -% -\long\gdef\footnotezzz{\insert\footins\bgroup - % We want to typeset this text as a normal paragraph, even if the - % footnote reference occurs in (for example) a display environment. - % So reset some parameters. - \interlinepenalty\interfootnotelinepenalty - \splittopskip\ht\strutbox % top baseline for broken footnotes - \splitmaxdepth\dp\strutbox - \floatingpenalty\@MM - \leftskip\z@skip - \rightskip\z@skip - \spaceskip\z@skip - \xspaceskip\z@skip - \parindent\defaultparindent - % - \smallfonts \rm - % - % Because we use hanging indentation in footnotes, a @noindent appears - % to exdent this text, so make it be a no-op. makeinfo does not use - % hanging indentation so @noindent can still be needed within footnote - % text after an @example or the like (not that this is good style). - \let\noindent = \relax - % - % Hang the footnote text off the number. Use \everypar in case the - % footnote extends for more than one paragraph. - \everypar = {\hang}% - \textindent{\thisfootno}% - % - % Don't crash into the line above the footnote text. Since this - % expands into a box, it must come within the paragraph, lest it - % provide a place where TeX can split the footnote. - \footstrut - \futurelet\next\fo@t -} -\def\fo@t{\ifcat\bgroup\noexpand\next \let\next\f@@t - \else\let\next\f@t\fi \next} -\def\f@@t{\bgroup\aftergroup\@foot\let\next} -\def\f@t#1{#1\@foot} -\def\@foot{\strut\par\egroup} - -}%end \catcode `\@=11 - -% @| inserts a changebar to the left of the current line. It should -% surround any changed text. This approach does *not* work if the -% change spans more than two lines of output. To handle that, we would -% have adopt a much more difficult approach (putting marks into the main -% vertical list for the beginning and end of each change). -% -\def\|{% - % \vadjust can only be used in horizontal mode. - \leavevmode - % - % Append this vertical mode material after the current line in the output. - \vadjust{% - % We want to insert a rule with the height and depth of the current - % leading; that is exactly what \strutbox is supposed to record. - \vskip-\baselineskip - % - % \vadjust-items are inserted at the left edge of the type. So - % the \llap here moves out into the left-hand margin. - \llap{% - % - % For a thicker or thinner bar, change the `1pt'. - \vrule height\baselineskip width1pt - % - % This is the space between the bar and the text. - \hskip 12pt - }% - }% -} - -% For a final copy, take out the rectangles -% that mark overfull boxes (in case you have decided -% that the text looks ok even though it passes the margin). -% -\def\finalout{\overfullrule=0pt} - -% @image. We use the macros from epsf.tex to support this. -% If epsf.tex is not installed and @image is used, we complain. -% -% Check for and read epsf.tex up front. If we read it only at @image -% time, we might be inside a group, and then its definitions would get -% undone and the next image would fail. -\openin 1 = epsf.tex -\ifeof 1 \else - \closein 1 - % Do not bother showing banner with post-v2.7 epsf.tex (available in - % doc/epsf.tex until it shows up on ctan). - \def\epsfannounce{\toks0 = }% - \input epsf.tex -\fi -% -% We will only complain once about lack of epsf.tex. -\newif\ifwarnednoepsf -\newhelp\noepsfhelp{epsf.tex must be installed for images to - work. It is also included in the Texinfo distribution, or you can get - it from ftp://tug.org/tex/epsf.tex.} -% -\def\image#1{% - \ifx\epsfbox\undefined - \ifwarnednoepsf \else - \errhelp = \noepsfhelp - \errmessage{epsf.tex not found, images will be ignored}% - \global\warnednoepsftrue - \fi - \else - \imagexxx #1,,,,,\finish - \fi -} -% -% Arguments to @image: -% #1 is (mandatory) image filename; we tack on .eps extension. -% #2 is (optional) width, #3 is (optional) height. -% #4 is (ignored optional) html alt text. -% #5 is (ignored optional) extension. -% #6 is just the usual extra ignored arg for parsing this stuff. -\newif\ifimagevmode -\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup - \catcode`\^^M = 5 % in case we're inside an example - \normalturnoffactive % allow _ et al. in names - % If the image is by itself, center it. - \ifvmode - \imagevmodetrue - \nobreak\bigskip - % Usually we'll have text after the image which will insert - % \parskip glue, so insert it here too to equalize the space - % above and below. - \nobreak\vskip\parskip - \nobreak - \line\bgroup\hss - \fi - % - % Output the image. - \ifpdf - \dopdfimage{#1}{#2}{#3}% - \else - % \epsfbox itself resets \epsf?size at each figure. - \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi - \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi - \epsfbox{#1.eps}% - \fi - % - \ifimagevmode \hss \egroup \bigbreak \fi % space after the image -\endgroup} - - -\message{localization,} -% and i18n. - -% @documentlanguage is usually given very early, just after -% @setfilename. If done too late, it may not override everything -% properly. Single argument is the language abbreviation. -% It would be nice if we could set up a hyphenation file here. -% -\def\documentlanguage{\parsearg\dodocumentlanguage} -\def\dodocumentlanguage#1{% - \tex % read txi-??.tex file in plain TeX. - % Read the file if it exists. - \openin 1 txi-#1.tex - \ifeof1 - \errhelp = \nolanghelp - \errmessage{Cannot read language file txi-#1.tex}% - \let\temp = \relax - \else - \def\temp{\input txi-#1.tex }% - \fi - \temp - \endgroup -} -\newhelp\nolanghelp{The given language definition file cannot be found or -is empty. Maybe you need to install it? In the current directory -should work if nowhere else does.} - - -% @documentencoding should change something in TeX eventually, most -% likely, but for now just recognize it. -\let\documentencoding = \comment - - -% Page size parameters. -% -\newdimen\defaultparindent \defaultparindent = 15pt - -\chapheadingskip = 15pt plus 4pt minus 2pt -\secheadingskip = 12pt plus 3pt minus 2pt -\subsecheadingskip = 9pt plus 2pt minus 2pt - -% Prevent underfull vbox error messages. -\vbadness = 10000 - -% Don't be so finicky about underfull hboxes, either. -\hbadness = 2000 - -% Following George Bush, just get rid of widows and orphans. -\widowpenalty=10000 -\clubpenalty=10000 - -% Use TeX 3.0's \emergencystretch to help line breaking, but if we're -% using an old version of TeX, don't do anything. We want the amount of -% stretch added to depend on the line length, hence the dependence on -% \hsize. We call this whenever the paper size is set. -% -\def\setemergencystretch{% - \ifx\emergencystretch\thisisundefined - % Allow us to assign to \emergencystretch anyway. - \def\emergencystretch{\dimen0}% - \else - \emergencystretch = .15\hsize - \fi -} - -% Parameters in order: 1) textheight; 2) textwidth; 3) voffset; -% 4) hoffset; 5) binding offset; 6) topskip. We also call -% \setleading{\textleading}, so the caller should define \textleading. -% The caller should also set \parskip. -% -\def\internalpagesizes#1#2#3#4#5#6{% - \voffset = #3\relax - \topskip = #6\relax - \splittopskip = \topskip - % - \vsize = #1\relax - \advance\vsize by \topskip - \outervsize = \vsize - \advance\outervsize by 2\topandbottommargin - \pageheight = \vsize - % - \hsize = #2\relax - \outerhsize = \hsize - \advance\outerhsize by 0.5in - \pagewidth = \hsize - % - \normaloffset = #4\relax - \bindingoffset = #5\relax - % - \setleading{\textleading} - % - \parindent = \defaultparindent - \setemergencystretch -} - -% Use `small' versions. -% -\def\smallenvironments{% - \let\smalldisplay = \smalldisplayx - \let\smallexample = \smalllispx - \let\smallformat = \smallformatx - \let\smalllisp = \smalllispx -} - -% @letterpaper (the default). -\def\letterpaper{{\globaldefs = 1 - \parskip = 3pt plus 2pt minus 1pt - \textleading = 13.2pt - % - % If page is nothing but text, make it come out even. - \internalpagesizes{46\baselineskip}{6in}{\voffset}{.25in}{\bindingoffset}{36pt}% -}} - -% Use @smallbook to reset parameters for 7x9.5 (or so) format. -\def\smallbook{{\globaldefs = 1 - \parskip = 2pt plus 1pt - \textleading = 12pt - % - \internalpagesizes{7.5in}{5.in}{\voffset}{.25in}{\bindingoffset}{16pt}% - % - \lispnarrowing = 0.3in - \tolerance = 700 - \hfuzz = 1pt - \contentsrightmargin = 0pt - \deftypemargin = 0pt - \defbodyindent = .5cm - \smallenvironments -}} - -% Use @afourpaper to print on European A4 paper. -\def\afourpaper{{\globaldefs = 1 - \parskip = 3pt plus 2pt minus 1pt - \textleading = 12pt - % - \internalpagesizes{53\baselineskip}{160mm}{\voffset}{4mm}{\bindingoffset}{44pt}% - % - \tolerance = 700 - \hfuzz = 1pt -}} - -% Use @afivepaper to print on European A5 paper. -% From romildo@urano.iceb.ufop.br, 2 July 2000. -% He also recommends making @example and @lisp be small. -\def\afivepaper{{\globaldefs = 1 - \parskip = 2pt plus 1pt minus 0.1pt - \textleading = 12.5pt - % - \internalpagesizes{166mm}{120mm}{\voffset}{-8mm}{\bindingoffset}{8pt}% - % - \lispnarrowing = 0.2in - \tolerance = 800 - \hfuzz = 1.2pt - \contentsrightmargin = 0mm - \deftypemargin = 0pt - \defbodyindent = 2mm - \tableindent = 12mm - % - \smallenvironments -}} - -% A specific text layout, 24x15cm overall, intended for A4 paper. Top margin -% 29mm, hence bottom margin 28mm, nominal side margin 3cm. -\def\afourlatex{{\globaldefs = 1 - \textleading = 13.6pt - % - \afourpaper - \internalpagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}% - % - % Must explicitly reset to 0 because we call \afourpaper, apparently, - % although this does not entirely make sense. - \globaldefs = 0 -}} - -% Use @afourwide to print on European A4 paper in wide format. -\def\afourwide{% - \afourpaper - \internalpagesizes{6.5in}{9.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}% -} - -% @pagesizes TEXTHEIGHT[,TEXTWIDTH] -% Perhaps we should allow setting the margins, \topskip, \parskip, -% and/or leading, also. Or perhaps we should compute them somehow. -% -\def\pagesizes{\parsearg\pagesizesxxx} -\def\pagesizesxxx#1{\pagesizesyyy #1,,\finish} -\def\pagesizesyyy#1,#2,#3\finish{{% - \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi - \globaldefs = 1 - % - \parskip = 3pt plus 2pt minus 1pt - \setleading{\textleading}% - % - \internalpagesizes{#1}{\hsize}{\voffset}{\normaloffset}{\bindingoffset}{44pt}% -}} - -% Set default to letter. -% -\letterpaper - - -\message{and turning on texinfo input format.} - -% Define macros to output various characters with catcode for normal text. -\catcode`\"=\other -\catcode`\~=\other -\catcode`\^=\other -\catcode`\_=\other -\catcode`\|=\other -\catcode`\<=\other -\catcode`\>=\other -\catcode`\+=\other -\catcode`\$=\other -\def\normaldoublequote{"} -\def\normaltilde{~} -\def\normalcaret{^} -\def\normalunderscore{_} -\def\normalverticalbar{|} -\def\normalless{<} -\def\normalgreater{>} -\def\normalplus{+} -\def\normaldollar{$}%$ font-lock fix - -% This macro is used to make a character print one way in ttfont -% where it can probably just be output, and another way in other fonts, -% where something hairier probably needs to be done. -% -% #1 is what to print if we are indeed using \tt; #2 is what to print -% otherwise. Since all the Computer Modern typewriter fonts have zero -% interword stretch (and shrink), and it is reasonable to expect all -% typewriter fonts to have this, we can check that font parameter. -% -\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi} - -% Same as above, but check for italic font. Actually this also catches -% non-italic slanted fonts since it is impossible to distinguish them from -% italic fonts. But since this is only used by $ and it uses \sl anyway -% this is not a problem. -\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} - -% Turn off all special characters except @ -% (and those which the user can use as if they were ordinary). -% Most of these we simply print from the \tt font, but for some, we can -% use math or other variants that look better in normal text. - -\catcode`\"=\active -\def\activedoublequote{{\tt\char34}} -\let"=\activedoublequote -\catcode`\~=\active -\def~{{\tt\char126}} -\chardef\hat=`\^ -\catcode`\^=\active -\def^{{\tt \hat}} - -\catcode`\_=\active -\def_{\ifusingtt\normalunderscore\_} -% Subroutine for the previous macro. -\def\_{\leavevmode \kern.06em \vbox{\hrule width.3em height.1ex}} - -\catcode`\|=\active -\def|{{\tt\char124}} -\chardef \less=`\< -\catcode`\<=\active -\def<{{\tt \less}} -\chardef \gtr=`\> -\catcode`\>=\active -\def>{{\tt \gtr}} -\catcode`\+=\active -\def+{{\tt \char 43}} -\catcode`\$=\active -\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix -%\catcode 27=\active -%\def^^[{$\diamondsuit$} - -% Set up an active definition for =, but don't enable it most of the time. -{\catcode`\==\active -\global\def={{\tt \char 61}}} - -\catcode`+=\active -\catcode`\_=\active - -% If a .fmt file is being used, characters that might appear in a file -% name cannot be active until we have parsed the command line. -% So turn them off again, and have \everyjob (or @setfilename) turn them on. -% \otherifyactive is called near the end of this file. -\def\otherifyactive{\catcode`+=\other \catcode`\_=\other} - -\catcode`\@=0 - -% \rawbackslashxx output one backslash character in current font -\global\chardef\rawbackslashxx=`\\ -%{\catcode`\\=\other -%@gdef@rawbackslashxx{\}} - -% \rawbackslash redefines \ as input to do \rawbackslashxx. -{\catcode`\\=\active -@gdef@rawbackslash{@let\=@rawbackslashxx }} - -% \normalbackslash outputs one backslash in fixed width font. -\def\normalbackslash{{\tt\rawbackslashxx}} - -% \catcode 17=0 % Define control-q -\catcode`\\=\active - -% Used sometimes to turn off (effectively) the active characters -% even after parsing them. -@def@turnoffactive{@let"=@normaldoublequote -@let\=@realbackslash -@let~=@normaltilde -@let^=@normalcaret -@let_=@normalunderscore -@let|=@normalverticalbar -@let<=@normalless -@let>=@normalgreater -@let+=@normalplus -@let$=@normaldollar}%$ font-lock fix - -@def@normalturnoffactive{@let"=@normaldoublequote -@let\=@normalbackslash -@let~=@normaltilde -@let^=@normalcaret -@let_=@normalunderscore -@let|=@normalverticalbar -@let<=@normalless -@let>=@normalgreater -@let+=@normalplus -@let$=@normaldollar}%$ font-lock fix - -% Make _ and + \other characters, temporarily. -% This is canceled by @fixbackslash. -@otherifyactive - -% If a .fmt file is being used, we don't want the `\input texinfo' to show up. -% That is what \eatinput is for; after that, the `\' should revert to printing -% a backslash. -% -@gdef@eatinput input texinfo{@fixbackslash} -@global@let\ = @eatinput - -% On the other hand, perhaps the file did not have a `\input texinfo'. Then -% the first `\{ in the file would cause an error. This macro tries to fix -% that, assuming it is called before the first `\' could plausibly occur. -% Also back turn on active characters that might appear in the input -% file name, in case not using a pre-dumped format. -% -@gdef@fixbackslash{% - @ifx\@eatinput @let\ = @normalbackslash @fi - @catcode`+=@active - @catcode`@_=@active -} - -% Say @foo, not \foo, in error messages. -@escapechar = `@@ - -% These look ok in all fonts, so just make them not special. -@catcode`@& = @other -@catcode`@# = @other -@catcode`@% = @other - -@c Set initial fonts. -@textfonts -@rm - - -@c Local variables: -@c eval: (add-hook 'write-file-hooks 'time-stamp) -@c page-delimiter: "^\\\\message" -@c time-stamp-start: "def\\\\texinfoversion{" -@c time-stamp-format: "%:y-%02m-%02d.%02H" -@c time-stamp-end: "}" -@c End: diff --git a/src/bin/diffutils/configure b/src/bin/diffutils/configure deleted file mode 100755 index daa6efbf18..0000000000 --- a/src/bin/diffutils/configure +++ /dev/null @@ -1,15482 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.53 for GNU diffutils 2.8.1. -# -# Report bugs to . -# -# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - as_mkdir_p=false -fi - - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - - -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi - -# NLS nuisances. -# Support unset when possible. -if (FOO=FOO; unset FOO) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - -(set +x; test -n "`(LANG=C; export LANG) 2>&1`") && - { $as_unset LANG || test "${LANG+set}" != set; } || - { LANG=C; export LANG; } -(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && - { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || - { LC_ALL=C; export LC_ALL; } -(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && - { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || - { LC_TIME=C; export LC_TIME; } -(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && - { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || - { LC_CTYPE=C; export LC_CTYPE; } -(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && - { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || - { LANGUAGE=C; export LANGUAGE; } -(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && - { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || - { LC_COLLATE=C; export LC_COLLATE; } -(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && - { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || - { LC_NUMERIC=C; export LC_NUMERIC; } -(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && - { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || - { LC_MESSAGES=C; export LC_MESSAGES; } - - -# Name of the executable. -as_me=`(basename "$0") 2>/dev/null || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conftest.sh - echo "exit 0" >>conftest.sh - chmod +x conftest.sh - if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conftest.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | - sed ' - N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, - t loop - s,-$,, - s,^['$as_cr_digits']*\n,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } - - -# Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -exec 6>&1 - -# -# Initializations. -# -ac_default_prefix=/usr/local -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} - -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} - -# Identity of this package. -PACKAGE_NAME='GNU diffutils' -PACKAGE_TARNAME='diffutils' -PACKAGE_VERSION='2.8.1' -PACKAGE_STRING='GNU diffutils 2.8.1' -PACKAGE_BUGREPORT='bug-gnu-utils@gnu.org' - -ac_unique_file="src/diff.c" -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#if HAVE_SYS_TYPES_H -# include -#endif -#if HAVE_SYS_STAT_H -# include -#endif -#if STDC_HEADERS -# include -# include -#else -# if HAVE_STDLIB_H -# include -# endif -#endif -#if HAVE_STRING_H -# if !STDC_HEADERS && HAVE_MEMORY_H -# include -# endif -# include -#endif -#if HAVE_STRINGS_H -# include -#endif -#if HAVE_INTTYPES_H -# include -#else -# if HAVE_STDINT_H -# include -# endif -#endif -#if HAVE_UNISTD_H -# include -#endif" - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -ac_prev= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_option in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; - - -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "enable_$ac_feature='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "with_$ac_package='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } -fi - -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_confdir=`(dirname "$0") 2>/dev/null || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 - { (exit 1); exit 1; }; } - else - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } - fi -fi -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_CC_set=${CC+set} -ac_env_CC_value=$CC -ac_cv_env_CC_set=${CC+set} -ac_cv_env_CC_value=$CC -ac_env_CFLAGS_set=${CFLAGS+set} -ac_env_CFLAGS_value=$CFLAGS -ac_cv_env_CFLAGS_set=${CFLAGS+set} -ac_cv_env_CFLAGS_value=$CFLAGS -ac_env_LDFLAGS_set=${LDFLAGS+set} -ac_env_LDFLAGS_value=$LDFLAGS -ac_cv_env_LDFLAGS_set=${LDFLAGS+set} -ac_cv_env_LDFLAGS_value=$LDFLAGS -ac_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_env_CPPFLAGS_value=$CPPFLAGS -ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_cv_env_CPPFLAGS_value=$CPPFLAGS -ac_env_CPP_set=${CPP+set} -ac_env_CPP_value=$CPP -ac_cv_env_CPP_set=${CPP+set} -ac_cv_env_CPP_value=$CPP - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures GNU diffutils 2.8.1 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -_ACEOF - - cat <<_ACEOF -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data [PREFIX/share] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --infodir=DIR info documentation [PREFIX/info] - --mandir=DIR man documentation [PREFIX/man] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of GNU diffutils 2.8.1:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --disable-dependency-tracking Speeds up one-time builds - --enable-dependency-tracking Do not reject slow dependency extractors - --disable-largefile omit support for large files - --disable-nls do not use Native Language Support - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-gnu-ld assume the C compiler uses GNU ld default=no - --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib - --without-libiconv-prefix don't search for libiconv in includedir and libdir - --with-libintl-prefix=DIR search for libintl in DIR/include and DIR/lib - --without-libintl-prefix don't search for libintl in includedir and libdir - --without-included-regex don't compile regex; this is the default on - systems with version 2 of the GNU C library - (use with caution on other system) - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have - headers in a nonstandard directory - CPP C preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to . -_ACEOF -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - ac_popdir=`pwd` - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d $ac_dir || continue - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac -# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be -# absolute. -ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` -ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` -ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` -ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` - - cd $ac_dir - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_srcdir/configure.gnu; then - echo - $SHELL $ac_srcdir/configure.gnu --help=recursive - elif test -f $ac_srcdir/configure; then - echo - $SHELL $ac_srcdir/configure --help=recursive - elif test -f $ac_srcdir/configure.ac || - test -f $ac_srcdir/configure.in; then - echo - $ac_configure --help - else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi - cd $ac_popdir - done -fi - -test -n "$ac_init_help" && exit 0 -if $ac_init_version; then - cat <<\_ACEOF -GNU diffutils configure 2.8.1 -generated by GNU Autoconf 2.53 - -Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 -Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit 0 -fi -exec 5>config.log -cat >&5 <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by GNU diffutils $as_me 2.8.1, which was -generated by GNU Autoconf 2.53. Invocation command line was - - $ $0 $@ - -_ACEOF -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" -done - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Also quote any args containing shell meta-characters. -ac_configure_args= -ac_sep= -for ac_arg -do - case $ac_arg in - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n ) continue ;; - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - continue ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - ac_sep=" " ;; - esac - # Get rid of the leading space. -done - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Be sure not to use single quotes in there, as some shells, -# such as our DU 5.0 friend, will then `close' the trap. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - cat <<\_ASBOX -## ---------------- ## -## Cache variables. ## -## ---------------- ## -_ASBOX - echo - # The following way of writing the cache mishandles newlines in values, -{ - (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) - sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" - ;; - *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} - echo - if test -s confdefs.h; then - cat <<\_ASBOX -## ----------- ## -## confdefs.h. ## -## ----------- ## -_ASBOX - echo - sed "/^$/d" confdefs.h - echo - fi - test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" - } >&5 - rm -f core core.* *.core && - rm -rf conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status - ' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo >confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; - esac - fi -else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val="\$ac_cv_env_${ac_var}_value" - eval ac_new_val="\$ac_env_${ac_var}_value" - case $ac_old_set,$ac_new_set in - set,) - { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - - - - - - - - - - - - - - - -ac_aux_dir= -for ac_dir in config $srcdir/config; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f $ac_dir/shtool; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in config $srcdir/config" >&5 -echo "$as_me: error: cannot find install-sh or install.sh in config $srcdir/config" >&2;} - { (exit 1); exit 1; }; } -fi -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. - -# Add the stamp file to the list of files AC keeps track of, -# along with our hook. -ac_config_headers="$ac_config_headers config.h:config.hin" - - - -am__api_version="1.6" -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# ./install, which can be erroneously created by make from ./install.sh. -echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 -if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - done - done - ;; -esac -done - - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL=$ac_install_sh - fi -fi -echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6 - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -echo "$as_me:$LINENO: checking whether build environment is sane" >&5 -echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 -# Just in case -sleep 1 -echo timestamp > conftest.file -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftest.file` - fi - rm -f conftest.file - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" >&5 -echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" >&2;} - { (exit 1); exit 1; }; } - fi - - test "$2" = conftest.file - ) -then - # Ok. - : -else - { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! -Check your system clock" >&5 -echo "$as_me: error: newly created file is older than distributed files! -Check your system clock" >&2;} - { (exit 1); exit 1; }; } -fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -test "$program_prefix" != NONE && - program_transform_name="s,^,$program_prefix,;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s,\$,$program_suffix,;$program_transform_name" -# Double any \ or $. echo might interpret backslashes. -# By default was `s,x,x', remove it if useless. -cat <<\_ACEOF >conftest.sed -s/[\\$]/&&/g;s/;s,x,x,$// -_ACEOF -program_transform_name=`echo $program_transform_name | sed -f conftest.sed` -rm conftest.sed - - -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` - -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 -echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} -fi - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_AWK+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AWK="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - echo "$as_me:$LINENO: result: $AWK" >&5 -echo "${ECHO_T}$AWK" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$AWK" && break -done - -echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \${MAKE}" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6 -set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` -if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.make <<\_ACEOF -all: - @echo 'ac_maketemp="${MAKE}"' -_ACEOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` -if test -n "$ac_maketemp"; then - eval ac_cv_prog_make_${ac_make}_set=yes -else - eval ac_cv_prog_make_${ac_make}_set=no -fi -rm -f conftest.make -fi -if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - SET_MAKE= -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - SET_MAKE="MAKE=${MAKE-make}" -fi - - # test to see if srcdir already configured -if test "`cd $srcdir && pwd`" != "`pwd`" && - test -f $srcdir/config.status; then - { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 -echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} - { (exit 1); exit 1; }; } -fi - -# Define the identity of the package. - PACKAGE=diffutils - VERSION=2.8.1 - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF - -# Some tools Automake needs. - -ACLOCAL=${ACLOCAL-"${am_missing_run}"aclocal-${am__api_version}""} - - -AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} - - -AUTOMAKE=${AUTOMAKE-"${am_missing_run}"automake-${am__api_version}""} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - - -AMTAR=${AMTAR-"${am_missing_run}tar"} - -install_sh=${install_sh-"$am_aux_dir/install-sh"} - -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - echo "$as_me:$LINENO: result: $STRIP" >&5 -echo "${ECHO_T}$STRIP" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -echo "${ECHO_T}$ac_ct_STRIP" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - STRIP=$ac_ct_STRIP -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" - -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. - - - - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_AWK+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AWK="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - echo "$as_me:$LINENO: result: $AWK" >&5 -echo "${ECHO_T}$AWK" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$AWK" && break -done - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - set dummy "$as_dir/$ac_word" ${1+"$@"} - shift - ac_cv_prog_CC="$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$ac_ct_CC" && break -done - - CC=$ac_ct_CC -fi - -fi - - -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH" >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH" >&2;} - { (exit 1); exit 1; }; } - -# Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 - (eval $ac_compiler --version &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 - (eval $ac_compiler -v &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 - (eval $ac_compiler -V &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -echo "$as_me:$LINENO: checking for C compiler default output" >&5 -echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 -ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # Find the output, starting from the most likely. This scheme is -# not robust to junk in `.', hence go to wildcards (a.*) only as a last -# resort. - -# Be careful to initialize this variable, since it used to be cached. -# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. -ac_cv_exeext= -for ac_file in `ls a_out.exe a.exe conftest.exe 2>/dev/null; - ls a.out conftest 2>/dev/null; - ls a.* conftest.* 2>/dev/null`; do - case $ac_file in - *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb | *.xSYM ) ;; - a.out ) # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - # FIXME: I believe we export ac_cv_exeext for Libtool --akim. - export ac_cv_exeext - break;; - * ) break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -{ { echo "$as_me:$LINENO: error: C compiler cannot create executables" >&5 -echo "$as_me: error: C compiler cannot create executables" >&2;} - { (exit 77); exit 77; }; } -fi - -ac_exeext=$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6 - -# Check the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 -# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 -# If not cross compiling, check that we can run a simple program. -if test "$cross_compiling" != yes; then - if { ac_try='./$ac_file' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { echo "$as_me:$LINENO: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'." >&5 -echo "$as_me: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'." >&2;} - { (exit 1); exit 1; }; } - fi - fi -fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -rm -f a.out a.exe conftest$ac_cv_exeext -ac_clean_files=$ac_clean_files_save -# Check the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6 - -echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do - case $ac_file in - *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - export ac_cv_exeext - break;; - * ) break;; - esac -done -else - { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link" >&5 -echo "$as_me: error: cannot compute suffix of executables: cannot compile and link" >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6 - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 -if test "${ac_cv_objext+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile" >&5 -echo "$as_me: error: cannot compute suffix of object files: cannot compile" >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6 -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 -if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_compiler_gnu=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_compiler_gnu=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 -GCC=`test $ac_compiler_gnu = yes && echo yes` -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -CFLAGS="-g" -echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_prog_cc_g=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -# Some people use a C++ compiler to compile C. Since we use `exit', -# in C++ we need to declare it. In case someone uses the same compiler -# for both compiling C and C++ we need to have the C++ compiler decide -# the declaration of exit, since it's the most demanding environment. -cat >conftest.$ac_ext <<_ACEOF -#ifndef __cplusplus - choke me -#endif -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - for ac_declaration in \ - ''\ - '#include ' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -$ac_declaration -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -continue -fi -rm -f conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_declaration -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext -done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -rm -f .deps 2>/dev/null -mkdir .deps 2>/dev/null -if test -d .deps; then - DEPDIR=.deps -else - # MS-DOS does not allow filenames that begin with a dot. - DEPDIR=_deps -fi -rmdir .deps 2>/dev/null - - -ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -doit: - @echo done -END -# If we don't find an include directive, just comment out the code. -echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 -echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# We grep out `Entering directory' and `Leaving directory' -# messages which can occur if `w' ends up in MAKEFLAGS. -# In particular we don't look at `^make:' because GNU make might -# be invoked under some other name (usually "gmake"), in which -# case it prints its new name instead of `make'. -if test "`$am_make -s -f confmf 2> /dev/null | fgrep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -fi -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then - am__include=.include - am__quote="\"" - _am_result=BSD - fi -fi - - -echo "$as_me:$LINENO: result: $_am_result" >&5 -echo "${ECHO_T}$_am_result" >&6 -rm -f confinc confmf - -# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then - enableval="$enable_dependency_tracking" - -fi; -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi - - -if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - - - -depcc="$CC" am_compiler_list= - -echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 -if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - for depmode in $am_compiler_list; do - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - echo '#include "conftest.h"' > conftest.c - echo 'int i;' > conftest.h - echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf - - case $depmode in - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - none) break ;; - esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. - if depmode=$depmode \ - source=conftest.c object=conftest.o \ - depfile=conftest.Po tmpdepfile=conftest.TPo \ - $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && - grep conftest.h conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - - - - echo "$as_me:$LINENO: checking for strerror in -lcposix" >&5 -echo $ECHO_N "checking for strerror in -lcposix... $ECHO_C" >&6 -if test "${ac_cv_lib_cposix_strerror+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lcposix $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char strerror (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -strerror (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_cposix_strerror=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_cposix_strerror=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_cposix_strerror" >&5 -echo "${ECHO_T}$ac_cv_lib_cposix_strerror" >&6 -if test $ac_cv_lib_cposix_strerror = yes; then - LIBS="$LIBS -lcposix" -fi - - - - - - -echo "$as_me:$LINENO: checking for ${CC-cc} option to accept ANSI C" >&5 -echo $ECHO_N "checking for ${CC-cc} option to accept ANSI C... $ECHO_C" >&6 -if test "${am_cv_prog_cc_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - am_cv_prog_cc_stdc=no -ac_save_CC="$CC" -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX 10.20 and later -Ae -# HP-UX older versions -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ - -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - am_cv_prog_cc_stdc="$ac_arg"; break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext -done -CC="$ac_save_CC" - -fi - -if test -z "$am_cv_prog_cc_stdc"; then - echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6 -else - echo "$as_me:$LINENO: result: $am_cv_prog_cc_stdc" >&5 -echo "${ECHO_T}$am_cv_prog_cc_stdc" >&6 -fi -case "x$am_cv_prog_cc_stdc" in - x|xno) ;; - *) CC="$CC $am_cv_prog_cc_stdc" ;; -esac - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include - Syntax error -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6 -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include - Syntax error -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : -else - { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check" >&5 -echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -HELP2MAN=${HELP2MAN-"${am_missing_run}help2man"} - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# ./install, which can be erroneously created by make from ./install.sh. -echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 -if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - done - done - ;; -esac -done - - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL=$ac_install_sh - fi -fi -echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6 - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - RANLIB=$ac_ct_RANLIB -else - RANLIB="$ac_cv_prog_RANLIB" -fi - - - - # Make sure that _GNU_SOURCE is defined for all subsequent - # configure-time compile tests. - # This definition must be emitted (into confdefs.h) before any - # test that involves compilation. - cat >>confdefs.h <<\EOF -#ifndef _GNU_SOURCE -# define _GNU_SOURCE -#endif -EOF - - # Emit this code into config.h.in. - # The ifndef is to avoid redefinition warnings. - - - - -cat >>confdefs.h <<\_ACEOF -#define __EXTENSIONS__ 1 -_ACEOF - -# Check whether --enable-largefile or --disable-largefile was given. -if test "${enable_largefile+set}" = set; then - enableval="$enable_largefile" - -fi; -if test "$enable_largefile" != no; then - - echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5 -echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6 -if test "${ac_cv_sys_largefile_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_sys_largefile_CC=no - if test "$GCC" != yes; then - ac_save_CC=$CC - while :; do - # IRIX 6.2 and later do not support large files by default, - # so use the C compiler's -n32 option if that helps. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ - - ; - return 0; -} -_ACEOF - rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext - CC="$CC -n32" - rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sys_largefile_CC=' -n32'; break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext - break - done - CC=$ac_save_CC - rm -f conftest.$ac_ext - fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5 -echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6 - if test "$ac_cv_sys_largefile_CC" != no; then - CC=$CC$ac_cv_sys_largefile_CC - fi - - echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5 -echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6 -if test "${ac_cv_sys_file_offset_bits+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - while :; do - ac_cv_sys_file_offset_bits=no - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#define _FILE_OFFSET_BITS 64 -#include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sys_file_offset_bits=64; break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - break -done -fi -echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5 -echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6 -if test "$ac_cv_sys_file_offset_bits" != no; then - -cat >>confdefs.h <<_ACEOF -#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits -_ACEOF - -fi -rm -f conftest* - echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5 -echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6 -if test "${ac_cv_sys_large_files+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - while :; do - ac_cv_sys_large_files=no - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#define _LARGE_FILES 1 -#include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sys_large_files=1; break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - break -done -fi -echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5 -echo "${ECHO_T}$ac_cv_sys_large_files" >&6 -if test "$ac_cv_sys_large_files" != no; then - -cat >>confdefs.h <<_ACEOF -#define _LARGE_FILES $ac_cv_sys_large_files -_ACEOF - -fi -rm -f conftest* -fi - - -echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 -echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_prog_cc_stdc=no -ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX 10.20 and later -Ae -# HP-UX older versions -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_stdc=$ac_arg -break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext -done -rm -f conftest.$ac_ext conftest.$ac_objext -CC=$ac_save_CC - -fi - -case "x$ac_cv_prog_cc_stdc" in - x|xno) - echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6 ;; - *) - echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 - CC="$CC $ac_cv_prog_cc_stdc" ;; -esac - -echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 -echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 -if test "${ac_cv_c_const+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* FIXME: Include the comments suggested by Paul. */ -#ifndef __cplusplus - /* Ultrix mips cc rejects this. */ - typedef int charset[2]; - const charset x; - /* SunOS 4.1.1 cc rejects this. */ - char const *const *ccp; - char **p; - /* NEC SVR4.0.2 mips cc rejects this. */ - struct point {int x, y;}; - static struct point const zero = {0,0}; - /* AIX XL C 1.02.0.0 rejects this. - It does not let you subtract one const X* pointer from another in - an arm of an if-expression whose if-part is not a constant - expression */ - const char *g = "string"; - ccp = &g + (g ? g-g : 0); - /* HPUX 7.0 cc rejects these. */ - ++ccp; - p = (char**) ccp; - ccp = (char const *const *) p; - { /* SCO 3.2v4 cc rejects this. */ - char *t; - char const *s = 0 ? (char *) 0 : (char const *) 0; - - *t++ = 0; - } - { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ - int x[] = {25, 17}; - const int *foo = &x[0]; - ++foo; - } - { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ - typedef const int *iptr; - iptr p = 0; - ++p; - } - { /* AIX XL C 1.02.0.0 rejects this saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; }; - struct s *b; b->j = 5; - } - { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; - } -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_const=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_c_const=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 -echo "${ECHO_T}$ac_cv_c_const" >&6 -if test $ac_cv_c_const = no; then - -cat >>confdefs.h <<\_ACEOF -#define const -_ACEOF - -fi - -echo "$as_me:$LINENO: checking for inline" >&5 -echo $ECHO_N "checking for inline... $ECHO_C" >&6 -if test "${ac_cv_c_inline+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_c_inline=no -for ac_kw in inline __inline__ __inline; do - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#ifndef __cplusplus -static $ac_kw int static_foo () {return 0; } -$ac_kw int foo () {return 0; } -#endif - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_inline=$ac_kw; break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext -done - -fi -echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 -echo "${ECHO_T}$ac_cv_c_inline" >&6 -case $ac_cv_c_inline in - inline | yes) ;; - no) -cat >>confdefs.h <<\_ACEOF -#define inline -_ACEOF - ;; - *) cat >>confdefs.h <<_ACEOF -#define inline $ac_cv_c_inline -_ACEOF - ;; -esac - - - echo "$as_me:$LINENO: checking for variable-length arrays" >&5 -echo $ECHO_N "checking for variable-length arrays... $ECHO_C" >&6 -if test "${ac_cv_c_vararrays+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -static int x; char a[++x]; a[sizeof a - 1] = 0; return a[0]; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_vararrays=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_c_vararrays=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_c_vararrays" >&5 -echo "${ECHO_T}$ac_cv_c_vararrays" >&6 - if test $ac_cv_c_vararrays = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_C_VARARRAYS 1 -_ACEOF - - fi - - - -cat >>confdefs.h <<\_ACEOF -#define DEFAULT_DIFF_PROGRAM "diff" -_ACEOF - - - -cat >>confdefs.h <<\_ACEOF -#define DEFAULT_EDITOR_PROGRAM "ed" -_ACEOF - - -# Extract the first word of "pr", so it can be a program name with args. -set dummy pr; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_PR_PROGRAM+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $PR_PROGRAM in - [\\/]* | ?:[\\/]*) - ac_cv_path_PR_PROGRAM="$PR_PROGRAM" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_PR_PROGRAM="$as_dir/$ac_word$ac_exec_ext" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_path_PR_PROGRAM" && ac_cv_path_PR_PROGRAM="""" - ;; -esac -fi -PR_PROGRAM=$ac_cv_path_PR_PROGRAM - -if test -n "$PR_PROGRAM"; then - echo "$as_me:$LINENO: result: $PR_PROGRAM" >&5 -echo "${ECHO_T}$PR_PROGRAM" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - -cat >>confdefs.h <<_ACEOF -#define PR_PROGRAM "$PR_PROGRAM" -_ACEOF - - -echo "$as_me:$LINENO: checking for stdbool.h that conforms to C99" >&5 -echo $ECHO_N "checking for stdbool.h that conforms to C99... $ECHO_C" >&6 -if test "${ac_cv_header_stdbool_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - - #include - #ifndef bool - "error: bool is not defined" - #endif - #ifndef false - "error: false is not defined" - #endif - #ifndef true - "error: false is not defined" - #endif - #ifndef __bool_true_false_are_defined - "error: __bool_true_false_are_defined is not defined" - #endif - - struct s { _Bool s: 1; _Bool t; } s; - - char a[true == 1 ? 1 : -1]; - char b[false == 0 ? 1 : -1]; - char c[__bool_true_false_are_defined == 1 ? 1 : -1]; - char d[(bool) -0.5 == true ? 1 : -1]; - char e[(bool) &s == true ? 1 : -1]; - char f[(_Bool) -0.0 == false ? 1 : -1]; - char g[true]; - char h[sizeof (_Bool)]; - char i[sizeof s.t]; - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ - return !a + !b + !c + !d + !e + !f + !g + !h + !i; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_header_stdbool_h=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_header_stdbool_h=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdbool_h" >&5 -echo "${ECHO_T}$ac_cv_header_stdbool_h" >&6 - if test $ac_cv_header_stdbool_h = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_STDBOOL_H 1 -_ACEOF - - fi - -echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 -if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#include -#include -#include - -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_cv_header_stdc=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_header_stdc=no -fi -rm -f conftest.err conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "memchr" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "free" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -( exit $ac_status ) -ac_cv_header_stdc=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 -if test $ac_cv_header_stdc = yes; then - -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. - - - - - - - - - -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default - -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_Header=no" -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - - - - - - - - -for ac_header in fcntl.h libintl.h limits.h locale.h \ - stdlib.h string.h sys/file.h time.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_header_compiler=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc in - yes:no ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; - no:yes ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -echo "$as_me:$LINENO: checking for struct stat.st_blksize" >&5 -echo $ECHO_N "checking for struct stat.st_blksize... $ECHO_C" >&6 -if test "${ac_cv_member_struct_stat_st_blksize+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -static struct stat ac_aggr; -if (ac_aggr.st_blksize) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_member_struct_stat_st_blksize=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_member_struct_stat_st_blksize=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_blksize" >&5 -echo "${ECHO_T}$ac_cv_member_struct_stat_st_blksize" >&6 -if test $ac_cv_member_struct_stat_st_blksize = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_STAT_ST_BLKSIZE 1 -_ACEOF - - -fi - -echo "$as_me:$LINENO: checking for struct stat.st_rdev" >&5 -echo $ECHO_N "checking for struct stat.st_rdev... $ECHO_C" >&6 -if test "${ac_cv_member_struct_stat_st_rdev+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -static struct stat ac_aggr; -if (ac_aggr.st_rdev) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_member_struct_stat_st_rdev=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_member_struct_stat_st_rdev=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_rdev" >&5 -echo "${ECHO_T}$ac_cv_member_struct_stat_st_rdev" >&6 -if test $ac_cv_member_struct_stat_st_rdev = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_STAT_ST_RDEV 1 -_ACEOF - - -fi - -echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 -echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 -if test "${ac_cv_type_ptrdiff_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -if ((ptrdiff_t *) 0) - return 0; -if (sizeof (ptrdiff_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_ptrdiff_t=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_ptrdiff_t=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 -echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 -if test $ac_cv_type_ptrdiff_t = yes; then - : -else - -cat >>confdefs.h <<_ACEOF -#define ptrdiff_t int -_ACEOF - -fi - -echo "$as_me:$LINENO: checking for ssize_t" >&5 -echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6 -if test "${ac_cv_type_ssize_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -if ((ssize_t *) 0) - return 0; -if (sizeof (ssize_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_ssize_t=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_ssize_t=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5 -echo "${ECHO_T}$ac_cv_type_ssize_t" >&6 -if test $ac_cv_type_ssize_t = yes; then - : -else - -cat >>confdefs.h <<_ACEOF -#define ssize_t int -_ACEOF - -fi - - - echo "$as_me:$LINENO: checking for unsigned long long" >&5 -echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6 -if test "${ac_cv_type_unsigned_long_long+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -unsigned long long ull = 1; int i = 63; -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -unsigned long long ullmax = (unsigned long long) -1; - return ull << i | ull >> i | ullmax / ull | ullmax % ull; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_unsigned_long_long=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_unsigned_long_long=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long" >&5 -echo "${ECHO_T}$ac_cv_type_unsigned_long_long" >&6 - if test $ac_cv_type_unsigned_long_long = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_UNSIGNED_LONG_LONG 1 -_ACEOF - - fi - - - - echo "$as_me:$LINENO: checking for uintmax_t" >&5 -echo $ECHO_N "checking for uintmax_t... $ECHO_C" >&6 -if test "${ac_cv_type_uintmax_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -if ((uintmax_t *) 0) - return 0; -if (sizeof (uintmax_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_uintmax_t=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_uintmax_t=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_uintmax_t" >&5 -echo "${ECHO_T}$ac_cv_type_uintmax_t" >&6 -if test $ac_cv_type_uintmax_t = yes; then - : -else - test $ac_cv_type_unsigned_long_long = yes \ - && ac_type='unsigned long long' \ - || ac_type='unsigned long' - -cat >>confdefs.h <<_ACEOF -#define uintmax_t $ac_type -_ACEOF - -fi - - - - MKINSTALLDIRS= - if test -n "$ac_aux_dir"; then - MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" - fi - if test -z "$MKINSTALLDIRS"; then - MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" - fi - - - - - - # Extract the first word of "msgfmt", so it can be a program name with args. -set dummy msgfmt; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_MSGFMT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case "$MSGFMT" in - /*) - ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && - (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - ac_cv_path_MSGFMT="$ac_dir/$ac_word" - break - fi - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" - ;; -esac -fi -MSGFMT="$ac_cv_path_MSGFMT" -if test "$MSGFMT" != ":"; then - echo "$as_me:$LINENO: result: $MSGFMT" >&5 -echo "${ECHO_T}$MSGFMT" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - # Extract the first word of "gmsgfmt", so it can be a program name with args. -set dummy gmsgfmt; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_GMSGFMT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $GMSGFMT in - [\\/]* | ?:[\\/]*) - ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" - ;; -esac -fi -GMSGFMT=$ac_cv_path_GMSGFMT - -if test -n "$GMSGFMT"; then - echo "$as_me:$LINENO: result: $GMSGFMT" >&5 -echo "${ECHO_T}$GMSGFMT" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - - # Extract the first word of "xgettext", so it can be a program name with args. -set dummy xgettext; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_XGETTEXT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case "$XGETTEXT" in - /*) - ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && - (if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - ac_cv_path_XGETTEXT="$ac_dir/$ac_word" - break - fi - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" - ;; -esac -fi -XGETTEXT="$ac_cv_path_XGETTEXT" -if test "$XGETTEXT" != ":"; then - echo "$as_me:$LINENO: result: $XGETTEXT" >&5 -echo "${ECHO_T}$XGETTEXT" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - rm -f messages.po - - # Extract the first word of "msgmerge", so it can be a program name with args. -set dummy msgmerge; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_MSGMERGE+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case "$MSGMERGE" in - /*) - ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then - ac_cv_path_MSGMERGE="$ac_dir/$ac_word" - break - fi - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" - ;; -esac -fi -MSGMERGE="$ac_cv_path_MSGMERGE" -if test "$MSGMERGE" != ":"; then - echo "$as_me:$LINENO: result: $MSGMERGE" >&5 -echo "${ECHO_T}$MSGMERGE" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - - if test "$GMSGFMT" != ":"; then - if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && - (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` - echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 -echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6 - GMSGFMT=":" - fi - fi - - if test "$XGETTEXT" != ":"; then - if $XGETTEXT --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && - (if $XGETTEXT --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 -echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 - XGETTEXT=":" - fi - rm -f messages.po - fi - - ac_config_commands="$ac_config_commands default-1" - - - - if test "X$prefix" = "XNONE"; then - acl_final_prefix="$ac_default_prefix" - else - acl_final_prefix="$prefix" - fi - if test "X$exec_prefix" = "XNONE"; then - acl_final_exec_prefix='${prefix}' - else - acl_final_exec_prefix="$exec_prefix" - fi - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" - prefix="$acl_save_prefix" - -# Make sure we can run config.sub. -$ac_config_sub sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 -echo "$as_me: error: cannot run $ac_config_sub" >&2;} - { (exit 1); exit 1; }; } - -echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6 -if test "${ac_cv_build+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_build_alias=$build_alias -test -z "$ac_cv_build_alias" && - ac_cv_build_alias=`$ac_config_guess` -test -z "$ac_cv_build_alias" && - { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 -echo "$as_me: error: cannot guess build type; you must specify one" >&2;} - { (exit 1); exit 1; }; } -ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6 -build=$ac_cv_build -build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - -echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6 -if test "${ac_cv_host+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_host_alias=$host_alias -test -z "$ac_cv_host_alias" && - ac_cv_host_alias=$ac_cv_build_alias -ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6 -host=$ac_cv_host -host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - - -# Check whether --with-gnu-ld or --without-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then - withval="$with_gnu_ld" - test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi; -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - echo "$as_me:$LINENO: checking for ld used by GCC" >&5 -echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | [A-Za-z]:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - echo "$as_me:$LINENO: checking for GNU ld" >&5 -echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 -else - echo "$as_me:$LINENO: checking for non-GNU ld" >&5 -echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 -fi -if test "${acl_cv_path_LD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - acl_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then - test "$with_gnu_ld" != no && break - else - test "$with_gnu_ld" != yes && break - fi - fi - done - IFS="$ac_save_ifs" -else - acl_cv_path_LD="$LD" # Let the user override the test with a path. -fi -fi - -LD="$acl_cv_path_LD" -if test -n "$LD"; then - echo "$as_me:$LINENO: result: $LD" >&5 -echo "${ECHO_T}$LD" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 -echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} - { (exit 1); exit 1; }; } -echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 -echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 -if test "${acl_cv_prog_gnu_ld+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # I'd rather use --version here, but apparently some GNU ld's only accept -v. -if $LD -v 2>&1 &5; then - acl_cv_prog_gnu_ld=yes -else - acl_cv_prog_gnu_ld=no -fi -fi -echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5 -echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6 -with_gnu_ld=$acl_cv_prog_gnu_ld - - - - echo "$as_me:$LINENO: checking for shared library run path origin" >&5 -echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6 -if test "${acl_cv_rpath+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ - ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh - . ./conftest.sh - rm -f ./conftest.sh - acl_cv_rpath=done - -fi -echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5 -echo "${ECHO_T}$acl_cv_rpath" >&6 - wl="$acl_cv_wl" - libext="$acl_cv_libext" - shlibext="$acl_cv_shlibext" - hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" - hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" - hardcode_direct="$acl_cv_hardcode_direct" - hardcode_minus_L="$acl_cv_hardcode_minus_L" - sys_lib_search_path_spec="$acl_cv_sys_lib_search_path_spec" - sys_lib_dlsearch_path_spec="$acl_cv_sys_lib_dlsearch_path_spec" - - - - - - - - - - - - - echo "$as_me:$LINENO: checking whether NLS is requested" >&5 -echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 - # Check whether --enable-nls or --disable-nls was given. -if test "${enable_nls+set}" = set; then - enableval="$enable_nls" - USE_NLS=$enableval -else - USE_NLS=yes -fi; - echo "$as_me:$LINENO: result: $USE_NLS" >&5 -echo "${ECHO_T}$USE_NLS" >&6 - - - - LIBINTL= - LTLIBINTL= - POSUB= - - if test "$USE_NLS" = "yes"; then - gt_use_preinstalled_gnugettext=no - - - - - - - echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 -echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6 -if test "${gt_cv_func_gnugettext1_libc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -extern int _nl_msg_cat_cntr; -extern int *_nl_domain_bindings; -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -bindtextdomain ("", ""); -return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - gt_cv_func_gnugettext1_libc=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -gt_cv_func_gnugettext1_libc=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libc" >&5 -echo "${ECHO_T}$gt_cv_func_gnugettext1_libc" >&6 - - if test "$gt_cv_func_gnugettext1_libc" != "yes"; then - - - - - - - - - use_additional=yes - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - -# Check whether --with-libiconv-prefix or --without-libiconv-prefix was given. -if test "${with_libiconv_prefix+set}" = set; then - withval="$with_libiconv_prefix" - - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi - -fi; - LIBICONV= - LTLIBICONV= - INCICONV= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='iconv ' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" - else - : - fi - else - found_dir= - found_la= - found_so= - found_a= - if test $use_additional = yes; then - if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then - found_dir="$additional_libdir" - found_so="$additional_libdir/lib$name.$shlibext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - else - if test -f "$additional_libdir/lib$name.$libext"; then - found_dir="$additional_libdir" - found_a="$additional_libdir/lib$name.$libext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then - found_dir="$dir" - found_so="$dir/lib$name.$shlibext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - else - if test -f "$dir/lib$name.$libext"; then - found_dir="$dir" - found_a="$dir/lib$name.$libext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - if test "X$found_dir" = "X/usr/lib"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - else - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - if test "$hardcode_direct" = yes; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - else - if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - haveit= - for x in $LDFLAGS $LIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" - fi - if test "$hardcode_minus_L" != no; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - else - LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" - else - LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" - fi - fi - additional_includedir= - case "$found_dir" in - */lib | */lib/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INCICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - if test -n "$found_la"; then - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -l*) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" - ;; - esac - done - fi - else - LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$hardcode_libdir_separator"; then - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" - done - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" - else - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - for found_dir in $ltrpathdirs; do - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" - done - fi - - - am_save_CPPFLAGS="$CPPFLAGS" - - for element in $INCICONV; do - haveit= - for x in $CPPFLAGS; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" - fi - done - - - echo "$as_me:$LINENO: checking for iconv" >&5 -echo $ECHO_N "checking for iconv... $ECHO_C" >&6 -if test "${am_cv_func_iconv+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - am_cv_func_iconv="no, consider installing GNU libiconv" - am_cv_lib_iconv=no - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#include -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - am_cv_func_iconv=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - if test "$am_cv_func_iconv" != yes; then - am_save_LIBS="$LIBS" - LIBS="$LIBS $LIBICONV" - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#include -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - am_cv_lib_iconv=yes - am_cv_func_iconv=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - LIBS="$am_save_LIBS" - fi - -fi -echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 -echo "${ECHO_T}$am_cv_func_iconv" >&6 - if test "$am_cv_func_iconv" = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_ICONV 1 -_ACEOF - - fi - if test "$am_cv_lib_iconv" = yes; then - echo "$as_me:$LINENO: checking how to link with libiconv" >&5 -echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6 - echo "$as_me:$LINENO: result: $LIBICONV" >&5 -echo "${ECHO_T}$LIBICONV" >&6 - else - CPPFLAGS="$am_save_CPPFLAGS" - LIBICONV= - LTLIBICONV= - fi - - - - - - - use_additional=yes - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - -# Check whether --with-libintl-prefix or --without-libintl-prefix was given. -if test "${with_libintl_prefix+set}" = set; then - withval="$with_libintl_prefix" - - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi - -fi; - LIBINTL= - LTLIBINTL= - INCINTL= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='intl ' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" - else - : - fi - else - found_dir= - found_la= - found_so= - found_a= - if test $use_additional = yes; then - if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then - found_dir="$additional_libdir" - found_so="$additional_libdir/lib$name.$shlibext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - else - if test -f "$additional_libdir/lib$name.$libext"; then - found_dir="$additional_libdir" - found_a="$additional_libdir/lib$name.$libext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIBINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then - found_dir="$dir" - found_so="$dir/lib$name.$shlibext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - else - if test -f "$dir/lib$name.$libext"; then - found_dir="$dir" - found_a="$dir/lib$name.$libext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - if test "X$found_dir" = "X/usr/lib"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - else - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - if test "$hardcode_direct" = yes; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - else - if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - haveit= - for x in $LDFLAGS $LIBINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" - fi - if test "$hardcode_minus_L" != no; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - else - LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" - else - LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" - fi - fi - additional_includedir= - case "$found_dir" in - */lib | */lib/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INCINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - if test -n "$found_la"; then - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIBINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIBINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -l*) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" - ;; - esac - done - fi - else - LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$hardcode_libdir_separator"; then - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" - done - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" - else - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - for found_dir in $ltrpathdirs; do - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" - done - fi - - echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 -echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6 -if test "${gt_cv_func_gnugettext1_libintl+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $INCINTL" - gt_save_LIBS="$LIBS" - LIBS="$LIBS $LIBINTL" - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -extern int _nl_msg_cat_cntr; -extern int *_nl_domain_bindings; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -bindtextdomain ("", ""); -return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings + *_nl_expand_alias (0) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - gt_cv_func_gnugettext1_libintl=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -gt_cv_func_gnugettext1_libintl=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then - LIBS="$LIBS $LIBICONV" - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -extern int _nl_msg_cat_cntr; -extern int *_nl_domain_bindings; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -bindtextdomain ("", ""); -return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings + *_nl_expand_alias (0) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - LIBINTL="$LIBINTL $LIBICONV" - LTLIBINTL="$LTLIBINTL $LTLIBICONV" - gt_cv_func_gnugettext1_libintl=yes - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - fi - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS" -fi -echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libintl" >&5 -echo "${ECHO_T}$gt_cv_func_gnugettext1_libintl" >&6 - fi - - if test "$gt_cv_func_gnugettext1_libc" = "yes" \ - || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ - && test "$PACKAGE" != gettext; }; then - gt_use_preinstalled_gnugettext=yes - else - LIBINTL= - LTLIBINTL= - INCINTL= - fi - - - - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - -cat >>confdefs.h <<\_ACEOF -#define ENABLE_NLS 1 -_ACEOF - - else - USE_NLS=no - fi - fi - - if test "$USE_NLS" = "yes"; then - - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then - echo "$as_me:$LINENO: checking how to link with libintl" >&5 -echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6 - echo "$as_me:$LINENO: result: $LIBINTL" >&5 -echo "${ECHO_T}$LIBINTL" >&6 - - for element in $INCINTL; do - haveit= - for x in $CPPFLAGS; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" - fi - done - - fi - - -cat >>confdefs.h <<\_ACEOF -#define HAVE_GETTEXT 1 -_ACEOF - - -cat >>confdefs.h <<\_ACEOF -#define HAVE_DCGETTEXT 1 -_ACEOF - - fi - - POSUB=po - fi - - - - INTLLIBS="$LIBINTL" - - - - - - -XGETTEXT="AWK='$AWK' \$(SHELL) \$(top_srcdir)/exgettext $XGETTEXT" - - - - - -ac_header_dirent=no -for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do - as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 -echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#include <$ac_hdr> - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -if ((DIR *) 0) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_Header=no" -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 -_ACEOF - -ac_header_dirent=$ac_hdr; break -fi - -done -# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. -if test $ac_header_dirent = dirent.h; then - echo "$as_me:$LINENO: checking for library containing opendir" >&5 -echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 -if test "${ac_cv_search_opendir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_func_search_save_LIBS=$LIBS -ac_cv_search_opendir=no -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char opendir (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -opendir (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_opendir="none required" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -if test "$ac_cv_search_opendir" = no; then - for ac_lib in dir; do - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char opendir (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -opendir (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_opendir="-l$ac_lib" -break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - done -fi -LIBS=$ac_func_search_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 -echo "${ECHO_T}$ac_cv_search_opendir" >&6 -if test "$ac_cv_search_opendir" != no; then - test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" - -fi - -else - echo "$as_me:$LINENO: checking for library containing opendir" >&5 -echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 -if test "${ac_cv_search_opendir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_func_search_save_LIBS=$LIBS -ac_cv_search_opendir=no -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char opendir (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -opendir (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_opendir="none required" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -if test "$ac_cv_search_opendir" = no; then - for ac_lib in x; do - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char opendir (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -opendir (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_opendir="-l$ac_lib" -break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - done -fi -LIBS=$ac_func_search_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 -echo "${ECHO_T}$ac_cv_search_opendir" >&6 -if test "$ac_cv_search_opendir" != no; then - test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" - -fi - -fi - -echo "$as_me:$LINENO: checking whether stat file-mode macros are broken" >&5 -echo $ECHO_N "checking whether stat file-mode macros are broken... $ECHO_C" >&6 -if test "${ac_cv_header_stat_broken+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#include - -#if defined(S_ISBLK) && defined(S_IFDIR) -# if S_ISBLK (S_IFDIR) -You lose. -# endif -#endif - -#if defined(S_ISBLK) && defined(S_IFCHR) -# if S_ISBLK (S_IFCHR) -You lose. -# endif -#endif - -#if defined(S_ISLNK) && defined(S_IFREG) -# if S_ISLNK (S_IFREG) -You lose. -# endif -#endif - -#if defined(S_ISSOCK) && defined(S_IFREG) -# if S_ISSOCK (S_IFREG) -You lose. -# endif -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "You lose" >/dev/null 2>&1; then - ac_cv_header_stat_broken=yes -else - ac_cv_header_stat_broken=no -fi -rm -f conftest* - -fi -echo "$as_me:$LINENO: result: $ac_cv_header_stat_broken" >&5 -echo "${ECHO_T}$ac_cv_header_stat_broken" >&6 -if test $ac_cv_header_stat_broken = yes; then - -cat >>confdefs.h <<\_ACEOF -#define STAT_MACROS_BROKEN 1 -_ACEOF - -fi - -echo "$as_me:$LINENO: checking for sys/wait.h that is POSIX.1 compatible" >&5 -echo $ECHO_N "checking for sys/wait.h that is POSIX.1 compatible... $ECHO_C" >&6 -if test "${ac_cv_header_sys_wait_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#include -#ifndef WEXITSTATUS -# define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8) -#endif -#ifndef WIFEXITED -# define WIFEXITED(stat_val) (((stat_val) & 255) == 0) -#endif - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ - int s; - wait (&s); - s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_header_sys_wait_h=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_header_sys_wait_h=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5 -echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6 -if test $ac_cv_header_sys_wait_h = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_SYS_WAIT_H 1 -_ACEOF - -fi - -echo "$as_me:$LINENO: checking for nanoseconds member of struct stat.st_mtim" >&5 -echo $ECHO_N "checking for nanoseconds member of struct stat.st_mtim... $ECHO_C" >&6 -if test "${ac_cv_struct_st_mtim_nsec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_save_CPPFLAGS="$CPPFLAGS" - ac_cv_struct_st_mtim_nsec=no - # tv_nsec -- the usual case - # _tv_nsec -- Solaris 2.6, if - # (defined _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED == 1 - # && !defined __EXTENSIONS__) - # st__tim.tv_nsec -- UnixWare 2.1.2 - for ac_val in tv_nsec _tv_nsec st__tim.tv_nsec; do - CPPFLAGS="$ac_save_CPPFLAGS -DST_MTIM_NSEC=$ac_val" - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#include -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -struct stat s; s.st_mtim.ST_MTIM_NSEC; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_struct_st_mtim_nsec=$ac_val; break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - done - CPPFLAGS="$ac_save_CPPFLAGS" -fi -echo "$as_me:$LINENO: result: $ac_cv_struct_st_mtim_nsec" >&5 -echo "${ECHO_T}$ac_cv_struct_st_mtim_nsec" >&6 - - if test $ac_cv_struct_st_mtim_nsec != no; then - -cat >>confdefs.h <<_ACEOF -#define ST_MTIM_NSEC $ac_cv_struct_st_mtim_nsec -_ACEOF - - fi - - -echo "$as_me:$LINENO: checking for pid_t" >&5 -echo $ECHO_N "checking for pid_t... $ECHO_C" >&6 -if test "${ac_cv_type_pid_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -if ((pid_t *) 0) - return 0; -if (sizeof (pid_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_pid_t=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_pid_t=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 -echo "${ECHO_T}$ac_cv_type_pid_t" >&6 -if test $ac_cv_type_pid_t = yes; then - : -else - -cat >>confdefs.h <<_ACEOF -#define pid_t int -_ACEOF - -fi - -echo "$as_me:$LINENO: checking return type of signal handlers" >&5 -echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 -if test "${ac_cv_type_signal+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#include -#ifdef signal -# undef signal -#endif -#ifdef __cplusplus -extern "C" void (*signal (int, void (*)(int)))(int); -#else -void (*signal ()) (); -#endif - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -int i; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_signal=void -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_signal=int -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 -echo "${ECHO_T}$ac_cv_type_signal" >&6 - -cat >>confdefs.h <<_ACEOF -#define RETSIGTYPE $ac_cv_type_signal -_ACEOF - - - - - - - - - - - -for ac_func in diraccess dup2 gettimeofday \ - sigaction sigprocmask strchr strerror tmpnam -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - - - -for ac_func in memchr mkstemp strcasecmp waitpid -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -else - LIBOBJS="$LIBOBJS $ac_func.$ac_objext" -fi -done - - -if test $ac_cv_func_mkstemp != yes; then - LIBOBJS="$LIBOBJS tempname.$ac_objext" -fi -echo "$as_me:$LINENO: checking whether closedir returns void" >&5 -echo $ECHO_N "checking whether closedir returns void... $ECHO_C" >&6 -if test "${ac_cv_func_closedir_void+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_closedir_void=yes -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#include <$ac_header_dirent> -#ifndef __cplusplus -int closedir (); -#endif - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -exit (closedir (opendir (".")) != 0); - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_closedir_void=no -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -( exit $ac_status ) -ac_cv_func_closedir_void=yes -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_func_closedir_void" >&5 -echo "${ECHO_T}$ac_cv_func_closedir_void" >&6 -if test $ac_cv_func_closedir_void = yes; then - -cat >>confdefs.h <<\_ACEOF -#define CLOSEDIR_VOID 1 -_ACEOF - -fi - - - -for ac_header in unistd.h vfork.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_header_compiler=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc in - yes:no ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; - no:yes ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - -for ac_func in fork vfork -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -ac_cv_func_fork_works=$ac_cv_func_fork -if test "x$ac_cv_func_fork" = xyes; then - echo "$as_me:$LINENO: checking for working fork" >&5 -echo $ECHO_N "checking for working fork... $ECHO_C" >&6 -if test "${ac_cv_func_fork_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_fork_works=cross -else - cat >conftest.$ac_ext <<_ACEOF -/* By Ruediger Kuhlmann. */ - #include - #if HAVE_UNISTD_H - # include - #endif - /* Some systems only have a dummy stub for fork() */ - int main () - { - if (fork() < 0) - exit (1); - exit (0); - } -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_fork_works=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -( exit $ac_status ) -ac_cv_func_fork_works=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_func_fork_works" >&5 -echo "${ECHO_T}$ac_cv_func_fork_works" >&6 - -fi -if test "x$ac_cv_func_fork_works" = xcross; then - case $host in - *-*-amigaos* | *-*-msdosdjgpp*) - # Override, as these systems have only a dummy fork() stub - ac_cv_func_fork_works=no - ;; - *) - ac_cv_func_fork_works=yes - ;; - esac - { echo "$as_me:$LINENO: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 -echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} -fi -ac_cv_func_vfork_works=$ac_cv_func_vfork -if test "x$ac_cv_func_vfork" = xyes; then - echo "$as_me:$LINENO: checking for working vfork" >&5 -echo $ECHO_N "checking for working vfork... $ECHO_C" >&6 -if test "${ac_cv_func_vfork_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_vfork_works=cross -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* Thanks to Paul Eggert for this test. */ -#include -#include -#include -#if HAVE_UNISTD_H -# include -#endif -#if HAVE_VFORK_H -# include -#endif -/* On some sparc systems, changes by the child to local and incoming - argument registers are propagated back to the parent. The compiler - is told about this with #include , but some compilers - (e.g. gcc -O) don't grok . Test for this by using a - static variable whose address is put into a register that is - clobbered by the vfork. */ -static -#ifdef __cplusplus -sparc_address_test (int arg) -# else -sparc_address_test (arg) int arg; -#endif -{ - static pid_t child; - if (!child) { - child = vfork (); - if (child < 0) { - perror ("vfork"); - _exit(2); - } - if (!child) { - arg = getpid(); - write(-1, "", 0); - _exit (arg); - } - } -} - -int -main () -{ - pid_t parent = getpid (); - pid_t child; - - sparc_address_test (); - - child = vfork (); - - if (child == 0) { - /* Here is another test for sparc vfork register problems. This - test uses lots of local variables, at least as many local - variables as main has allocated so far including compiler - temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris - 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should - reuse the register of parent for one of the local variables, - since it will think that parent can't possibly be used any more - in this routine. Assigning to the local variable will thus - munge parent in the parent process. */ - pid_t - p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), - p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); - /* Convince the compiler that p..p7 are live; otherwise, it might - use the same hardware register for all 8 local variables. */ - if (p != p1 || p != p2 || p != p3 || p != p4 - || p != p5 || p != p6 || p != p7) - _exit(1); - - /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent - from child file descriptors. If the child closes a descriptor - before it execs or exits, this munges the parent's descriptor - as well. Test for this by closing stdout in the child. */ - _exit(close(fileno(stdout)) != 0); - } else { - int status; - struct stat st; - - while (wait(&status) != child) - ; - exit( - /* Was there some problem with vforking? */ - child < 0 - - /* Did the child fail? (This shouldn't happen.) */ - || status - - /* Did the vfork/compiler bug occur? */ - || parent != getpid() - - /* Did the file descriptor bug occur? */ - || fstat(fileno(stdout), &st) != 0 - ); - } -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_vfork_works=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -( exit $ac_status ) -ac_cv_func_vfork_works=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_func_vfork_works" >&5 -echo "${ECHO_T}$ac_cv_func_vfork_works" >&6 - -fi; -if test "x$ac_cv_func_fork_works" = xcross; then - ac_cv_func_vfork_works=ac_cv_func_vfork - { echo "$as_me:$LINENO: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 -echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} -fi - -if test "x$ac_cv_func_vfork_works" = xyes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_WORKING_VFORK 1 -_ACEOF - -else - -cat >>confdefs.h <<\_ACEOF -#define vfork fork -_ACEOF - -fi -if test "x$ac_cv_func_fork_works" = xyes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_WORKING_FORK 1 -_ACEOF - -fi - - -for ac_func in vprintf -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -echo "$as_me:$LINENO: checking for _doprnt" >&5 -echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6 -if test "${ac_cv_func__doprnt+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char _doprnt (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char _doprnt (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub__doprnt) || defined (__stub____doprnt) -choke me -#else -f = _doprnt; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func__doprnt=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func__doprnt=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5 -echo "${ECHO_T}$ac_cv_func__doprnt" >&6 -if test $ac_cv_func__doprnt = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_DOPRNT 1 -_ACEOF - -fi - -fi -done - - -echo "$as_me:$LINENO: checking whether clearerr_unlocked is declared" >&5 -echo $ECHO_N "checking whether clearerr_unlocked is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_clearerr_unlocked+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -#ifndef clearerr_unlocked - char *p = (char *) clearerr_unlocked; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_have_decl_clearerr_unlocked=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_have_decl_clearerr_unlocked=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_clearerr_unlocked" >&5 -echo "${ECHO_T}$ac_cv_have_decl_clearerr_unlocked" >&6 -if test $ac_cv_have_decl_clearerr_unlocked = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_CLEARERR_UNLOCKED 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_CLEARERR_UNLOCKED 0 -_ACEOF - - -fi -echo "$as_me:$LINENO: checking whether feof_unlocked is declared" >&5 -echo $ECHO_N "checking whether feof_unlocked is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_feof_unlocked+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -#ifndef feof_unlocked - char *p = (char *) feof_unlocked; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_have_decl_feof_unlocked=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_have_decl_feof_unlocked=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_feof_unlocked" >&5 -echo "${ECHO_T}$ac_cv_have_decl_feof_unlocked" >&6 -if test $ac_cv_have_decl_feof_unlocked = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_FEOF_UNLOCKED 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_FEOF_UNLOCKED 0 -_ACEOF - - -fi -echo "$as_me:$LINENO: checking whether ferror_unlocked is declared" >&5 -echo $ECHO_N "checking whether ferror_unlocked is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_ferror_unlocked+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -#ifndef ferror_unlocked - char *p = (char *) ferror_unlocked; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_have_decl_ferror_unlocked=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_have_decl_ferror_unlocked=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_ferror_unlocked" >&5 -echo "${ECHO_T}$ac_cv_have_decl_ferror_unlocked" >&6 -if test $ac_cv_have_decl_ferror_unlocked = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_FERROR_UNLOCKED 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_FERROR_UNLOCKED 0 -_ACEOF - - -fi -echo "$as_me:$LINENO: checking whether fflush_unlocked is declared" >&5 -echo $ECHO_N "checking whether fflush_unlocked is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_fflush_unlocked+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -#ifndef fflush_unlocked - char *p = (char *) fflush_unlocked; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_have_decl_fflush_unlocked=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_have_decl_fflush_unlocked=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_fflush_unlocked" >&5 -echo "${ECHO_T}$ac_cv_have_decl_fflush_unlocked" >&6 -if test $ac_cv_have_decl_fflush_unlocked = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_FFLUSH_UNLOCKED 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_FFLUSH_UNLOCKED 0 -_ACEOF - - -fi -echo "$as_me:$LINENO: checking whether fgets_unlocked is declared" >&5 -echo $ECHO_N "checking whether fgets_unlocked is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_fgets_unlocked+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -#ifndef fgets_unlocked - char *p = (char *) fgets_unlocked; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_have_decl_fgets_unlocked=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_have_decl_fgets_unlocked=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_fgets_unlocked" >&5 -echo "${ECHO_T}$ac_cv_have_decl_fgets_unlocked" >&6 -if test $ac_cv_have_decl_fgets_unlocked = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_FGETS_UNLOCKED 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_FGETS_UNLOCKED 0 -_ACEOF - - -fi -echo "$as_me:$LINENO: checking whether fputc_unlocked is declared" >&5 -echo $ECHO_N "checking whether fputc_unlocked is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_fputc_unlocked+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -#ifndef fputc_unlocked - char *p = (char *) fputc_unlocked; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_have_decl_fputc_unlocked=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_have_decl_fputc_unlocked=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_fputc_unlocked" >&5 -echo "${ECHO_T}$ac_cv_have_decl_fputc_unlocked" >&6 -if test $ac_cv_have_decl_fputc_unlocked = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_FPUTC_UNLOCKED 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_FPUTC_UNLOCKED 0 -_ACEOF - - -fi -echo "$as_me:$LINENO: checking whether fputs_unlocked is declared" >&5 -echo $ECHO_N "checking whether fputs_unlocked is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_fputs_unlocked+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -#ifndef fputs_unlocked - char *p = (char *) fputs_unlocked; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_have_decl_fputs_unlocked=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_have_decl_fputs_unlocked=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_fputs_unlocked" >&5 -echo "${ECHO_T}$ac_cv_have_decl_fputs_unlocked" >&6 -if test $ac_cv_have_decl_fputs_unlocked = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_FPUTS_UNLOCKED 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_FPUTS_UNLOCKED 0 -_ACEOF - - -fi -echo "$as_me:$LINENO: checking whether fread_unlocked is declared" >&5 -echo $ECHO_N "checking whether fread_unlocked is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_fread_unlocked+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -#ifndef fread_unlocked - char *p = (char *) fread_unlocked; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_have_decl_fread_unlocked=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_have_decl_fread_unlocked=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_fread_unlocked" >&5 -echo "${ECHO_T}$ac_cv_have_decl_fread_unlocked" >&6 -if test $ac_cv_have_decl_fread_unlocked = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_FREAD_UNLOCKED 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_FREAD_UNLOCKED 0 -_ACEOF - - -fi -echo "$as_me:$LINENO: checking whether fwrite_unlocked is declared" >&5 -echo $ECHO_N "checking whether fwrite_unlocked is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_fwrite_unlocked+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -#ifndef fwrite_unlocked - char *p = (char *) fwrite_unlocked; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_have_decl_fwrite_unlocked=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_have_decl_fwrite_unlocked=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_fwrite_unlocked" >&5 -echo "${ECHO_T}$ac_cv_have_decl_fwrite_unlocked" >&6 -if test $ac_cv_have_decl_fwrite_unlocked = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_FWRITE_UNLOCKED 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_FWRITE_UNLOCKED 0 -_ACEOF - - -fi -echo "$as_me:$LINENO: checking whether getc_unlocked is declared" >&5 -echo $ECHO_N "checking whether getc_unlocked is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_getc_unlocked+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -#ifndef getc_unlocked - char *p = (char *) getc_unlocked; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_have_decl_getc_unlocked=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_have_decl_getc_unlocked=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_getc_unlocked" >&5 -echo "${ECHO_T}$ac_cv_have_decl_getc_unlocked" >&6 -if test $ac_cv_have_decl_getc_unlocked = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_GETC_UNLOCKED 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_GETC_UNLOCKED 0 -_ACEOF - - -fi -echo "$as_me:$LINENO: checking whether getchar_unlocked is declared" >&5 -echo $ECHO_N "checking whether getchar_unlocked is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_getchar_unlocked+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -#ifndef getchar_unlocked - char *p = (char *) getchar_unlocked; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_have_decl_getchar_unlocked=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_have_decl_getchar_unlocked=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_getchar_unlocked" >&5 -echo "${ECHO_T}$ac_cv_have_decl_getchar_unlocked" >&6 -if test $ac_cv_have_decl_getchar_unlocked = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_GETCHAR_UNLOCKED 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_GETCHAR_UNLOCKED 0 -_ACEOF - - -fi -echo "$as_me:$LINENO: checking whether putc_unlocked is declared" >&5 -echo $ECHO_N "checking whether putc_unlocked is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_putc_unlocked+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -#ifndef putc_unlocked - char *p = (char *) putc_unlocked; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_have_decl_putc_unlocked=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_have_decl_putc_unlocked=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_putc_unlocked" >&5 -echo "${ECHO_T}$ac_cv_have_decl_putc_unlocked" >&6 -if test $ac_cv_have_decl_putc_unlocked = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_PUTC_UNLOCKED 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_PUTC_UNLOCKED 0 -_ACEOF - - -fi -echo "$as_me:$LINENO: checking whether putchar_unlocked is declared" >&5 -echo $ECHO_N "checking whether putchar_unlocked is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_putchar_unlocked+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -#ifndef putchar_unlocked - char *p = (char *) putchar_unlocked; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_have_decl_putchar_unlocked=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_have_decl_putchar_unlocked=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_putchar_unlocked" >&5 -echo "${ECHO_T}$ac_cv_have_decl_putchar_unlocked" >&6 -if test $ac_cv_have_decl_putchar_unlocked = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_PUTCHAR_UNLOCKED 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_PUTCHAR_UNLOCKED 0 -_ACEOF - - -fi - - -echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 -echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6 -if test "${ac_cv_header_time+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#include -#include - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -if ((struct tm *) 0) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_header_time=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_header_time=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 -echo "${ECHO_T}$ac_cv_header_time" >&6 -if test $ac_cv_header_time = yes; then - -cat >>confdefs.h <<\_ACEOF -#define TIME_WITH_SYS_TIME 1 -_ACEOF - -fi - -echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5 -echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6 -if test "${ac_cv_struct_tm+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#include - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -struct tm *tp; tp->tm_sec; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_struct_tm=time.h -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_struct_tm=sys/time.h -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5 -echo "${ECHO_T}$ac_cv_struct_tm" >&6 -if test $ac_cv_struct_tm = sys/time.h; then - -cat >>confdefs.h <<\_ACEOF -#define TM_IN_SYS_TIME 1 -_ACEOF - -fi - - - - - -for ac_func in localtime_r strftime -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - -for ac_header in limits.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_header_compiler=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc in - yes:no ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; - no:yes ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - - - -for ac_func in bcopy tzset mempcpy memcpy memset -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - # This defines (or not) HAVE_TZNAME and HAVE_TM_ZONE. - echo "$as_me:$LINENO: checking for struct tm.tm_zone" >&5 -echo $ECHO_N "checking for struct tm.tm_zone... $ECHO_C" >&6 -if test "${ac_cv_member_struct_tm_tm_zone+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#include <$ac_cv_struct_tm> - - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -static struct tm ac_aggr; -if (ac_aggr.tm_zone) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_member_struct_tm_tm_zone=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_member_struct_tm_tm_zone=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_zone" >&5 -echo "${ECHO_T}$ac_cv_member_struct_tm_tm_zone" >&6 -if test $ac_cv_member_struct_tm_tm_zone = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_TM_TM_ZONE 1 -_ACEOF - - -fi - -if test "$ac_cv_member_struct_tm_tm_zone" = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_TM_ZONE 1 -_ACEOF - -else - echo "$as_me:$LINENO: checking for tzname" >&5 -echo $ECHO_N "checking for tzname... $ECHO_C" >&6 -if test "${ac_cv_var_tzname+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#ifndef tzname /* For SGI. */ -extern char *tzname[]; /* RS6000 and others reject char **tzname. */ -#endif - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -atoi(*tzname); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_var_tzname=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_var_tzname=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_var_tzname" >&5 -echo "${ECHO_T}$ac_cv_var_tzname" >&6 - if test $ac_cv_var_tzname = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_TZNAME 1 -_ACEOF - - fi -fi - - - - -for ac_func in mblen mbrlen -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - echo "$as_me:$LINENO: checking for struct tm.tm_gmtoff" >&5 -echo $ECHO_N "checking for struct tm.tm_gmtoff... $ECHO_C" >&6 -if test "${ac_cv_member_struct_tm_tm_gmtoff+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -static struct tm ac_aggr; -if (ac_aggr.tm_gmtoff) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_member_struct_tm_tm_gmtoff=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_member_struct_tm_tm_gmtoff=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_gmtoff" >&5 -echo "${ECHO_T}$ac_cv_member_struct_tm_tm_gmtoff" >&6 -if test $ac_cv_member_struct_tm_tm_gmtoff = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_TM_GMTOFF 1 -_ACEOF - -fi - - - - -for ac_header in sys/time.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_header_compiler=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc in - yes:no ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; - no:yes ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -cat >>confdefs.h <<\_ACEOF -#define my_strftime nstrftime -_ACEOF - - -# No need for AC_FUNC_MEMCMP, since memcmp is used only to test for equality. - - -cat >>confdefs.h <<\_ACEOF -#define HAVE_DONE_WORKING_MALLOC_CHECK 1 -_ACEOF - - - echo "$as_me:$LINENO: checking for working malloc" >&5 -echo $ECHO_N "checking for working malloc... $ECHO_C" >&6 -if test "${jm_cv_func_working_malloc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - jm_cv_func_working_malloc=no -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - - char *malloc (); - int - main () - { - exit (malloc (0) ? 0 : 1); - } - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - jm_cv_func_working_malloc=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -( exit $ac_status ) -jm_cv_func_working_malloc=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - -fi -echo "$as_me:$LINENO: result: $jm_cv_func_working_malloc" >&5 -echo "${ECHO_T}$jm_cv_func_working_malloc" >&6 - if test $jm_cv_func_working_malloc = no; then - LIBOBJS="$LIBOBJS malloc.$ac_objext" - -cat >>confdefs.h <<\_ACEOF -#define malloc rpl_malloc -_ACEOF - - fi - - - -cat >>confdefs.h <<\_ACEOF -#define HAVE_DONE_WORKING_REALLOC_CHECK 1 -_ACEOF - - - echo "$as_me:$LINENO: checking for working realloc" >&5 -echo $ECHO_N "checking for working realloc... $ECHO_C" >&6 -if test "${jm_cv_func_working_realloc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - jm_cv_func_working_realloc=no -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - - char *realloc (); - int - main () - { - exit (realloc (0, 0) ? 0 : 1); - } - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - jm_cv_func_working_realloc=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -( exit $ac_status ) -jm_cv_func_working_realloc=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - -fi -echo "$as_me:$LINENO: result: $jm_cv_func_working_realloc" >&5 -echo "${ECHO_T}$jm_cv_func_working_realloc" >&6 - if test $jm_cv_func_working_realloc = no; then - LIBOBJS="$LIBOBJS realloc.$ac_objext" - -cat >>confdefs.h <<\_ACEOF -#define realloc rpl_realloc -_ACEOF - - fi - -# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works -# for constant arguments. Useless! -echo "$as_me:$LINENO: checking for working alloca.h" >&5 -echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 -if test "${ac_cv_working_alloca_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -char *p = (char *) alloca (2 * sizeof (int)); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_working_alloca_h=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_working_alloca_h=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 -echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 -if test $ac_cv_working_alloca_h = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_ALLOCA_H 1 -_ACEOF - -fi - -echo "$as_me:$LINENO: checking for alloca" >&5 -echo $ECHO_N "checking for alloca... $ECHO_C" >&6 -if test "${ac_cv_func_alloca_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#ifdef __GNUC__ -# define alloca __builtin_alloca -#else -# ifdef _MSC_VER -# include -# define alloca _alloca -# else -# if HAVE_ALLOCA_H -# include -# else -# ifdef _AIX - #pragma alloca -# else -# ifndef alloca /* predefined by HP cc +Olibcalls */ -char *alloca (); -# endif -# endif -# endif -# endif -#endif - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -char *p = (char *) alloca (1); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_alloca_works=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_alloca_works=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 -echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 - -if test $ac_cv_func_alloca_works = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_ALLOCA 1 -_ACEOF - -else - # The SVR3 libPW and SVR4 libucb both contain incompatible functions -# that cause trouble. Some versions do not even contain alloca or -# contain a buggy version. If you still want to use their alloca, -# use ar to extract alloca.o from them instead of compiling alloca.c. - -ALLOCA=alloca.$ac_objext - -cat >>confdefs.h <<\_ACEOF -#define C_ALLOCA 1 -_ACEOF - - -echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 -echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 -if test "${ac_cv_os_cray+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#if defined(CRAY) && ! defined(CRAY2) -webecray -#else -wenotbecray -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "webecray" >/dev/null 2>&1; then - ac_cv_os_cray=yes -else - ac_cv_os_cray=no -fi -rm -f conftest* - -fi -echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 -echo "${ECHO_T}$ac_cv_os_cray" >&6 -if test $ac_cv_os_cray = yes; then - for ac_func in _getb67 GETB67 getb67; do - as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - -cat >>confdefs.h <<_ACEOF -#define CRAY_STACKSEG_END $ac_func -_ACEOF - - break -fi - - done -fi - -echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 -echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 -if test "${ac_cv_c_stack_direction+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_c_stack_direction=0 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -int -find_stack_direction () -{ - static char *addr = 0; - auto char dummy; - if (addr == 0) - { - addr = &dummy; - return find_stack_direction (); - } - else - return (&dummy > addr) ? 1 : -1; -} - -int -main () -{ - exit (find_stack_direction () < 0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_stack_direction=1 -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -( exit $ac_status ) -ac_cv_c_stack_direction=-1 -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 -echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 - -cat >>confdefs.h <<_ACEOF -#define STACK_DIRECTION $ac_cv_c_stack_direction -_ACEOF - - -fi - -# for STACK_DIRECTION - - - echo "$as_me:$LINENO: checking for working C stack overflow detection" >&5 -echo $ECHO_N "checking for working C stack overflow detection... $ECHO_C" >&6 -if test "${ac_cv_sys_xsi_stack_overflow_heuristic+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_sys_xsi_stack_overflow_heuristic=cross-compiling -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - - #include - #include - - static union - { - char buffer[SIGSTKSZ]; - long double ld; - uintmax_t u; - void *p; - } alternate_signal_stack; - - #if STACK_DIRECTION - # define find_stack_direction(ptr) STACK_DIRECTION - #else - static int - find_stack_direction (char const *addr) - { - char dummy; - return (! addr ? find_stack_direction (&dummy) - : addr < &dummy ? 1 : -1); - } - #endif - - static void - segv_handler (int signo, siginfo_t *info, void *context) - { - if (0 < info->si_code) - { - ucontext_t const *user_context = context; - char const *stack_min = user_context->uc_stack.ss_sp; - size_t stack_size = user_context->uc_stack.ss_size; - char const *faulting_address = info->si_addr; - size_t s = faulting_address - stack_min; - size_t page_size = sysconf (_SC_PAGESIZE); - if (find_stack_direction (0) < 0) - s += page_size; - if (s < stack_size + page_size) - _exit (0); - } - - _exit (1); - } - - static int - c_stack_action (void) - { - stack_t st; - struct sigaction act; - int r; - - st.ss_flags = 0; - st.ss_sp = alternate_signal_stack.buffer; - st.ss_size = sizeof alternate_signal_stack.buffer; - r = sigaltstack (&st, 0); - if (r != 0) - return r; - - sigemptyset (&act.sa_mask); - act.sa_flags = SA_NODEFER | SA_ONSTACK | SA_RESETHAND | SA_SIGINFO; - act.sa_sigaction = segv_handler; - return sigaction (SIGSEGV, &act, 0); - } - - static int - recurse (char *p) - { - char array[500]; - array[0] = 1; - return *p + recurse (array); - } - - int - main (void) - { - c_stack_action (); - return recurse ("\1"); - } - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sys_xsi_stack_overflow_heuristic=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -( exit $ac_status ) -ac_cv_sys_xsi_stack_overflow_heuristic=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sys_xsi_stack_overflow_heuristic" >&5 -echo "${ECHO_T}$ac_cv_sys_xsi_stack_overflow_heuristic" >&6 - - if test $ac_cv_sys_xsi_stack_overflow_heuristic = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_XSI_STACK_OVERFLOW_HEURISTIC 1 -_ACEOF - - fi - - - - # for STACK_DIRECTION - - - -for ac_header in unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_header_compiler=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc in - yes:no ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; - no:yes ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - echo "$as_me:$LINENO: checking for siginfo_t" >&5 -echo $ECHO_N "checking for siginfo_t... $ECHO_C" >&6 -if test "${ac_cv_type_siginfo_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -if ((siginfo_t *) 0) - return 0; -if (sizeof (siginfo_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_siginfo_t=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_siginfo_t=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_siginfo_t" >&5 -echo "${ECHO_T}$ac_cv_type_siginfo_t" >&6 -if test $ac_cv_type_siginfo_t = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_SIGINFO_T 1 -_ACEOF - - -fi -echo "$as_me:$LINENO: checking for stack_t" >&5 -echo $ECHO_N "checking for stack_t... $ECHO_C" >&6 -if test "${ac_cv_type_stack_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -if ((stack_t *) 0) - return 0; -if (sizeof (stack_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_stack_t=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_stack_t=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_stack_t" >&5 -echo "${ECHO_T}$ac_cv_type_stack_t" >&6 -if test $ac_cv_type_stack_t = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_STACK_T 1 -_ACEOF - - -fi - - - - - -for ac_func in strerror vprintf doprnt -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - echo "$as_me:$LINENO: checking whether strerror is declared" >&5 -echo $ECHO_N "checking whether strerror is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_strerror+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -#ifndef strerror - char *p = (char *) strerror; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_have_decl_strerror=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_have_decl_strerror=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_strerror" >&5 -echo "${ECHO_T}$ac_cv_have_decl_strerror" >&6 -if test $ac_cv_have_decl_strerror = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_STRERROR 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_STRERROR 0 -_ACEOF - - -fi - - - echo "$as_me:$LINENO: checking whether strerror_r is declared" >&5 -echo $ECHO_N "checking whether strerror_r is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_strerror_r+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -#ifndef strerror_r - char *p = (char *) strerror_r; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_have_decl_strerror_r=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_have_decl_strerror_r=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_strerror_r" >&5 -echo "${ECHO_T}$ac_cv_have_decl_strerror_r" >&6 -if test $ac_cv_have_decl_strerror_r = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_STRERROR_R 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_STRERROR_R 0 -_ACEOF - - -fi - - - -for ac_func in strerror_r -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -echo "$as_me:$LINENO: checking whether strerror_r returns char *" >&5 -echo $ECHO_N "checking whether strerror_r returns char *... $ECHO_C" >&6 -if test "${ac_cv_func_strerror_r_char_p+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - ac_cv_func_strerror_r_char_p=no - if test $ac_cv_have_decl_strerror_r = yes; then - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ - - char buf[100]; - char x = *strerror_r (0, buf, sizeof buf); - char *p = strerror_r (0, buf, sizeof buf); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_strerror_r_char_p=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - else - # strerror_r is not declared. Choose between - # systems that have relatively inaccessible declarations for the - # function. BeOS and DEC UNIX 4.0 fall in this category, but the - # former has a strerror_r that returns char*, while the latter - # has a strerror_r that returns `int'. - # This test should segfault on the DEC system. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default - extern char *strerror_r (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -char buf[100]; - char x = *strerror_r (0, buf, sizeof buf); - exit (!isalpha (x)); - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_strerror_r_char_p=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - fi - -fi -echo "$as_me:$LINENO: result: $ac_cv_func_strerror_r_char_p" >&5 -echo "${ECHO_T}$ac_cv_func_strerror_r_char_p" >&6 -if test $ac_cv_func_strerror_r_char_p = yes; then - -cat >>confdefs.h <<\_ACEOF -#define STRERROR_R_CHAR_P 1 -_ACEOF - -fi - - echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 -if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#include -#include -#include - -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_cv_header_stdc=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_header_stdc=no -fi -rm -f conftest.err conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "memchr" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "free" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -( exit $ac_status ) -ac_cv_header_stdc=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 -if test $ac_cv_header_stdc = yes; then - -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF - -fi - - - - echo "$as_me:$LINENO: checking for function prototypes" >&5 -echo $ECHO_N "checking for function prototypes... $ECHO_C" >&6 -if test "$ac_cv_prog_cc_stdc" != no; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -cat >>confdefs.h <<\_ACEOF -#define PROTOTYPES 1 -_ACEOF - - -cat >>confdefs.h <<\_ACEOF -#define __PROTOTYPES 1 -_ACEOF - -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - -for ac_func in setlocale -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - - -for ac_header in locale.h stdlib.h string.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_header_compiler=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc in - yes:no ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; - no:yes ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - - -for ac_func in isascii iswprint -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - echo "$as_me:$LINENO: checking whether mbrtowc and mbstate_t are properly declared" >&5 -echo $ECHO_N "checking whether mbrtowc and mbstate_t are properly declared... $ECHO_C" >&6 -if test "${jm_cv_func_mbrtowc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -mbstate_t state; return ! (sizeof state && mbrtowc); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - jm_cv_func_mbrtowc=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -jm_cv_func_mbrtowc=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $jm_cv_func_mbrtowc" >&5 -echo "${ECHO_T}$jm_cv_func_mbrtowc" >&6 - if test $jm_cv_func_mbrtowc = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_MBRTOWC 1 -_ACEOF - - fi - - - - - - - -for ac_header in limits.h stddef.h stdlib.h string.h wchar.h wctype.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_header_compiler=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc in - yes:no ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; - no:yes ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 -if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#include -#include -#include - -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_cv_header_stdc=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_header_stdc=no -fi -rm -f conftest.err conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "memchr" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "free" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -( exit $ac_status ) -ac_cv_header_stdc=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 -if test $ac_cv_header_stdc = yes; then - -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF - -fi - - - echo "$as_me:$LINENO: checking whether backslash-a works in strings" >&5 -echo $ECHO_N "checking whether backslash-a works in strings... $ECHO_C" >&6 -if test "${ac_cv_c_backslash_a+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ - -#if '\a' == 'a' - syntax error; -#endif - char buf['\a' == 'a' ? -1 : 1]; - buf[0] = '\a'; - return buf[0] != "\a"[0]; - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_backslash_a=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_c_backslash_a=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_c_backslash_a" >&5 -echo "${ECHO_T}$ac_cv_c_backslash_a" >&6 - if test $ac_cv_c_backslash_a = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_C_BACKSLASH_A 1 -_ACEOF - - fi - - - -for ac_header in stdlib.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_header_compiler=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc in - yes:no ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; - no:yes ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - echo "$as_me:$LINENO: checking for mbstate_t" >&5 -echo $ECHO_N "checking for mbstate_t... $ECHO_C" >&6 -if test "${ac_cv_type_mbstate_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_STDLIB_H -# include -#endif -#include -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -mbstate_t x; return sizeof x; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_mbstate_t=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_mbstate_t=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_mbstate_t" >&5 -echo "${ECHO_T}$ac_cv_type_mbstate_t" >&6 - if test $ac_cv_type_mbstate_t = no; then - -cat >>confdefs.h <<\_ACEOF -#define mbstate_t int -_ACEOF - - fi - - -echo "$as_me:$LINENO: checking for function prototypes" >&5 -echo $ECHO_N "checking for function prototypes... $ECHO_C" >&6 -if test "$am_cv_prog_cc_stdc" != no; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -cat >>confdefs.h <<\_ACEOF -#define PROTOTYPES 1 -_ACEOF - - U= ANSI2KNR= -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - U=_ ANSI2KNR=./ansi2knr -fi -# Ensure some checks needed by ansi2knr itself. -echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 -if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#include -#include -#include - -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_cv_header_stdc=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_header_stdc=no -fi -rm -f conftest.err conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "memchr" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "free" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -( exit $ac_status ) -ac_cv_header_stdc=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 -if test $ac_cv_header_stdc = yes; then - -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF - -fi - - -for ac_header in string.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_header_compiler=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc in - yes:no ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; - no:yes ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - - - - - -for ac_func in bzero bcopy isascii btowc -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - - - -for ac_header in alloca.h libintl.h wctype.h wchar.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_header_compiler=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc in - yes:no ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; - no:yes ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 -if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#include -#include -#include - -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_cv_header_stdc=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_header_stdc=no -fi -rm -f conftest.err conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "memchr" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "free" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -( exit $ac_status ) -ac_cv_header_stdc=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 -if test $ac_cv_header_stdc = yes; then - -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF - -fi - - # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works -# for constant arguments. Useless! -echo "$as_me:$LINENO: checking for working alloca.h" >&5 -echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 -if test "${ac_cv_working_alloca_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -char *p = (char *) alloca (2 * sizeof (int)); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_working_alloca_h=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_working_alloca_h=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 -echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 -if test $ac_cv_working_alloca_h = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_ALLOCA_H 1 -_ACEOF - -fi - -echo "$as_me:$LINENO: checking for alloca" >&5 -echo $ECHO_N "checking for alloca... $ECHO_C" >&6 -if test "${ac_cv_func_alloca_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#ifdef __GNUC__ -# define alloca __builtin_alloca -#else -# ifdef _MSC_VER -# include -# define alloca _alloca -# else -# if HAVE_ALLOCA_H -# include -# else -# ifdef _AIX - #pragma alloca -# else -# ifndef alloca /* predefined by HP cc +Olibcalls */ -char *alloca (); -# endif -# endif -# endif -# endif -#endif - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -char *p = (char *) alloca (1); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_alloca_works=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_alloca_works=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 -echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 - -if test $ac_cv_func_alloca_works = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_ALLOCA 1 -_ACEOF - -else - # The SVR3 libPW and SVR4 libucb both contain incompatible functions -# that cause trouble. Some versions do not even contain alloca or -# contain a buggy version. If you still want to use their alloca, -# use ar to extract alloca.o from them instead of compiling alloca.c. - -ALLOCA=alloca.$ac_objext - -cat >>confdefs.h <<\_ACEOF -#define C_ALLOCA 1 -_ACEOF - - -echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 -echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 -if test "${ac_cv_os_cray+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#if defined(CRAY) && ! defined(CRAY2) -webecray -#else -wenotbecray -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "webecray" >/dev/null 2>&1; then - ac_cv_os_cray=yes -else - ac_cv_os_cray=no -fi -rm -f conftest* - -fi -echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 -echo "${ECHO_T}$ac_cv_os_cray" >&6 -if test $ac_cv_os_cray = yes; then - for ac_func in _getb67 GETB67 getb67; do - as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - -cat >>confdefs.h <<_ACEOF -#define CRAY_STACKSEG_END $ac_func -_ACEOF - - break -fi - - done -fi - -echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 -echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 -if test "${ac_cv_c_stack_direction+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_c_stack_direction=0 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -int -find_stack_direction () -{ - static char *addr = 0; - auto char dummy; - if (addr == 0) - { - addr = &dummy; - return find_stack_direction (); - } - else - return (&dummy > addr) ? 1 : -1; -} - -int -main () -{ - exit (find_stack_direction () < 0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_stack_direction=1 -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -( exit $ac_status ) -ac_cv_c_stack_direction=-1 -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 -echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 - -cat >>confdefs.h <<_ACEOF -#define STACK_DIRECTION $ac_cv_c_stack_direction -_ACEOF - - -fi - - - -cat >>confdefs.h <<\_ACEOF -#define REGEX_MALLOC 1 -_ACEOF - - - echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 -if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#include -#include -#include - -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_cv_header_stdc=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_header_stdc=no -fi -rm -f conftest.err conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "memchr" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "free" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -( exit $ac_status ) -ac_cv_header_stdc=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 -if test $ac_cv_header_stdc = yes; then - -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF - -fi - - echo "$as_me:$LINENO: checking whether stat file-mode macros are broken" >&5 -echo $ECHO_N "checking whether stat file-mode macros are broken... $ECHO_C" >&6 -if test "${ac_cv_header_stat_broken+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#include - -#if defined(S_ISBLK) && defined(S_IFDIR) -# if S_ISBLK (S_IFDIR) -You lose. -# endif -#endif - -#if defined(S_ISBLK) && defined(S_IFCHR) -# if S_ISBLK (S_IFCHR) -You lose. -# endif -#endif - -#if defined(S_ISLNK) && defined(S_IFREG) -# if S_ISLNK (S_IFREG) -You lose. -# endif -#endif - -#if defined(S_ISSOCK) && defined(S_IFREG) -# if S_ISSOCK (S_IFREG) -You lose. -# endif -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "You lose" >/dev/null 2>&1; then - ac_cv_header_stat_broken=yes -else - ac_cv_header_stat_broken=no -fi -rm -f conftest* - -fi -echo "$as_me:$LINENO: result: $ac_cv_header_stat_broken" >&5 -echo "${ECHO_T}$ac_cv_header_stat_broken" >&6 -if test $ac_cv_header_stat_broken = yes; then - -cat >>confdefs.h <<\_ACEOF -#define STAT_MACROS_BROKEN 1 -_ACEOF - -fi - - - - - -for ac_header in fcntl.h sys/time.h stdint.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_header_compiler=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc in - yes:no ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; - no:yes ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - -for ac_func in __secure_getenv gettimeofday -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - echo "$as_me:$LINENO: checking whether getenv is declared" >&5 -echo $ECHO_N "checking whether getenv is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_getenv+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -#ifndef getenv - char *p = (char *) getenv; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_have_decl_getenv=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_have_decl_getenv=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_getenv" >&5 -echo "${ECHO_T}$ac_cv_have_decl_getenv" >&6 -if test $ac_cv_have_decl_getenv = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_GETENV 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_GETENV 0 -_ACEOF - - -fi - - - - - echo "$as_me:$LINENO: checking for long long" >&5 -echo $ECHO_N "checking for long long... $ECHO_C" >&6 -if test "${ac_cv_type_long_long+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -long long ll = 1; int i = 63; -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -long long llmax = (long long) -1; - return ll << i | ll >> i | llmax / ll | llmax % ll; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_long_long=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_long_long=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 -echo "${ECHO_T}$ac_cv_type_long_long" >&6 - if test $ac_cv_type_long_long = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_LONG_LONG 1 -_ACEOF - - fi - - - - echo "$as_me:$LINENO: checking for intmax_t" >&5 -echo $ECHO_N "checking for intmax_t... $ECHO_C" >&6 -if test "${ac_cv_type_intmax_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -if ((intmax_t *) 0) - return 0; -if (sizeof (intmax_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_intmax_t=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_intmax_t=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_intmax_t" >&5 -echo "${ECHO_T}$ac_cv_type_intmax_t" >&6 -if test $ac_cv_type_intmax_t = yes; then - : -else - test $ac_cv_type_long_long = yes \ - && ac_type='long long' \ - || ac_type='long' - -cat >>confdefs.h <<_ACEOF -#define intmax_t $ac_type -_ACEOF - -fi - - - - - - - - echo "$as_me:$LINENO: checking whether strtol is declared" >&5 -echo $ECHO_N "checking whether strtol is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_strtol+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -#ifndef strtol - char *p = (char *) strtol; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_have_decl_strtol=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_have_decl_strtol=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_strtol" >&5 -echo "${ECHO_T}$ac_cv_have_decl_strtol" >&6 -if test $ac_cv_have_decl_strtol = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_STRTOL 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_STRTOL 0 -_ACEOF - - -fi -echo "$as_me:$LINENO: checking whether strtoul is declared" >&5 -echo $ECHO_N "checking whether strtoul is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_strtoul+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -#ifndef strtoul - char *p = (char *) strtoul; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_have_decl_strtoul=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_have_decl_strtoul=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_strtoul" >&5 -echo "${ECHO_T}$ac_cv_have_decl_strtoul" >&6 -if test $ac_cv_have_decl_strtoul = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_STRTOUL 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_STRTOUL 0 -_ACEOF - - -fi -echo "$as_me:$LINENO: checking whether strtoull is declared" >&5 -echo $ECHO_N "checking whether strtoull is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_strtoull+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -#ifndef strtoull - char *p = (char *) strtoull; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_have_decl_strtoull=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_have_decl_strtoull=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_strtoull" >&5 -echo "${ECHO_T}$ac_cv_have_decl_strtoull" >&6 -if test $ac_cv_have_decl_strtoull = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_STRTOULL 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_STRTOULL 0 -_ACEOF - - -fi -echo "$as_me:$LINENO: checking whether strtoimax is declared" >&5 -echo $ECHO_N "checking whether strtoimax is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_strtoimax+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -#ifndef strtoimax - char *p = (char *) strtoimax; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_have_decl_strtoimax=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_have_decl_strtoimax=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_strtoimax" >&5 -echo "${ECHO_T}$ac_cv_have_decl_strtoimax" >&6 -if test $ac_cv_have_decl_strtoimax = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_STRTOIMAX 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_STRTOIMAX 0 -_ACEOF - - -fi -echo "$as_me:$LINENO: checking whether strtoumax is declared" >&5 -echo $ECHO_N "checking whether strtoumax is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_strtoumax+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -#ifndef strtoumax - char *p = (char *) strtoumax; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_have_decl_strtoumax=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_have_decl_strtoumax=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_strtoumax" >&5 -echo "${ECHO_T}$ac_cv_have_decl_strtoumax" >&6 -if test $ac_cv_have_decl_strtoumax = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_STRTOUMAX 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_STRTOUMAX 0 -_ACEOF - - -fi - - - - - -for ac_header in limits.h stdlib.h inttypes.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_header_compiler=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc in - yes:no ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; - no:yes ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - echo "$as_me:$LINENO: checking whether defines strtoumax as a macro" >&5 -echo $ECHO_N "checking whether defines strtoumax as a macro... $ECHO_C" >&6 -if test "${jm_cv_func_strtoumax_macro+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#ifdef strtoumax - inttypes_h_defines_strtoumax -#endif -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "inttypes_h_defines_strtoumax" >/dev/null 2>&1; then - jm_cv_func_strtoumax_macro=yes -else - jm_cv_func_strtoumax_macro=no -fi -rm -f conftest* - -fi -echo "$as_me:$LINENO: result: $jm_cv_func_strtoumax_macro" >&5 -echo "${ECHO_T}$jm_cv_func_strtoumax_macro" >&6 - - if test "$jm_cv_func_strtoumax_macro" != yes; then - -for ac_func in strtoumax -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -else - LIBOBJS="$LIBOBJS $ac_func.$ac_objext" -fi -done - - - fi - - case "$jm_cv_func_strtoumax_macro,$ac_cv_func_strtoumax" in - no,no) - -for ac_func in strtoul -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -else - LIBOBJS="$LIBOBJS $ac_func.$ac_objext" -fi -done - - - - if test "$ac_cv_type_unsigned_long_long" = yes; then - -for ac_func in strtoull -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -else - LIBOBJS="$LIBOBJS $ac_func.$ac_objext" -fi -done - - - fi - ;; - esac - - -# Check for clock_gettime and its library. Solaris puts it in -lrt or -# -lposix4, but we don't want to link that library unless we have to. -diff_saved_libs=$LIBS -echo "$as_me:$LINENO: checking for library containing clock_gettime" >&5 -echo $ECHO_N "checking for library containing clock_gettime... $ECHO_C" >&6 -if test "${ac_cv_search_clock_gettime+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_func_search_save_LIBS=$LIBS -ac_cv_search_clock_gettime=no -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char clock_gettime (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -clock_gettime (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_clock_gettime="none required" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -if test "$ac_cv_search_clock_gettime" = no; then - for ac_lib in rt posix4; do - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char clock_gettime (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -clock_gettime (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_clock_gettime="-l$ac_lib" -break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - done -fi -LIBS=$ac_func_search_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_search_clock_gettime" >&5 -echo "${ECHO_T}$ac_cv_search_clock_gettime" >&6 -if test "$ac_cv_search_clock_gettime" != no; then - test "$ac_cv_search_clock_gettime" = "none required" || LIBS="$ac_cv_search_clock_gettime $LIBS" - -fi - -case $ac_cv_search_clock_gettime in -no | 'none required') - LIB_CLOCK_GETTIME=;; -*) - LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime;; -esac - - -for ac_func in clock_gettime -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -LIBS=$diff_saved_libs - -# fnmatch -echo "$as_me:$LINENO: checking for working GNU-style fnmatch" >&5 -echo $ECHO_N "checking for working GNU-style fnmatch... $ECHO_C" >&6 -if test "${ac_cv_func_fnmatch_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Some versions of Solaris, SCO, and the GNU C Library -# have a broken or incompatible fnmatch. -# So we run a test program. If we are cross-compiling, take no chance. -# Thanks to John Oleynick, Franc,ois Pinard, and Paul Eggert for this test. -if test "$cross_compiling" = yes; then - ac_cv_func_fnmatch_works=no -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -exit (fnmatch ("a*", "abc", 0) != 0 - || fnmatch ("xxXX", "xXxX", FNM_CASEFOLD) != 0 - || fnmatch ("d*/*1", "d/s/1", FNM_FILE_NAME) != FNM_NOMATCH - || fnmatch ("*", "x", FNM_FILE_NAME | FNM_LEADING_DIR) != 0 - || fnmatch ("x*", "x/y/z", FNM_FILE_NAME | FNM_LEADING_DIR) != 0 - || fnmatch ("*c*", "c/x", FNM_FILE_NAME | FNM_LEADING_DIR) != 0); - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_fnmatch_works=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -( exit $ac_status ) -ac_cv_func_fnmatch_works=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_func_fnmatch_works" >&5 -echo "${ECHO_T}$ac_cv_func_fnmatch_works" >&6 -if test $ac_cv_func_fnmatch_works = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_FNMATCH 1 -_ACEOF - -fi - -if test $ac_cv_func_fnmatch_works = yes; then - rm -f lib/fnmatch.h -else - LIBOBJS="$LIBOBJS fnmatch.$ac_objext" - ac_config_links="$ac_config_links lib/fnmatch.h:lib/fnmatch.hin" - -fi - -# regex - - - # Assume we'll default to using the included regex.c. - ac_use_included_regex=yes - - # However, if the system regex support is good enough that it passes the - # the following run test, then default to *not* using the included regex.c. - # If cross compiling, assume the test would fail and use the included - # regex.c. The first failing regular expression is from `Spencer ere - # test #75' in grep-2.3. - echo "$as_me:$LINENO: checking for working re_compile_pattern" >&5 -echo $ECHO_N "checking for working re_compile_pattern... $ECHO_C" >&6 -if test "${jm_cv_func_working_re_compile_pattern+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - jm_cv_func_working_re_compile_pattern=no -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#include - int - main () - { - static struct re_pattern_buffer regex; - const char *s; - struct re_registers regs; - re_set_syntax (RE_SYNTAX_POSIX_EGREP); - s = re_compile_pattern ("a[[:]:]]b\n", 9, ®ex); - /* This should fail with _Invalid character class name_ error. */ - if (!s) - exit (1); - - /* This should succeed, but doesn't for e.g. glibc-2.1.3. */ - s = re_compile_pattern ("{1", 2, ®ex); - - if (s) - exit (1); - - /* The following example is derived from a problem report - against gawk from Jorge Stolfi . */ - s = re_compile_pattern ("[an]*n", 7, ®ex); - if (s) - exit (1); - - /* This should match, but doesn't for e.g. glibc-2.2.1. */ - if (re_match (®ex, "an", 2, 0, ®s) != 2) - exit (1); - - exit (0); - } - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - jm_cv_func_working_re_compile_pattern=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -( exit $ac_status ) -jm_cv_func_working_re_compile_pattern=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -echo "$as_me:$LINENO: result: $jm_cv_func_working_re_compile_pattern" >&5 -echo "${ECHO_T}$jm_cv_func_working_re_compile_pattern" >&6 - if test $jm_cv_func_working_re_compile_pattern = yes; then - ac_use_included_regex=no - fi - - test -n "lib/regex.c" || { { echo "$as_me:$LINENO: error: missing argument" >&5 -echo "$as_me: error: missing argument" >&2;} - { (exit 1); exit 1; }; } - - - -# Check whether --with-included-regex or --without-included-regex was given. -if test "${with_included_regex+set}" = set; then - withval="$with_included_regex" - jm_with_regex=$withval -else - jm_with_regex=$ac_use_included_regex -fi; - if test "$jm_with_regex" = yes; then - LIBOBJS="$LIBOBJS regex.$ac_objext" - fi - - - -if test "$jm_with_regex" = yes; then - ac_config_links="$ac_config_links lib/regex.h:lib/regex.hin" - -else - rm -f lib/regex.h -fi - - - echo "$as_me:$LINENO: checking whether system is Windows or MSDOS" >&5 -echo $ECHO_N "checking whether system is Windows or MSDOS... $ECHO_C" >&6 -if test "${ac_cv_win_or_dos+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ -neither MSDOS nor Windows -#endif - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_win_or_dos=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_win_or_dos=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -fi -echo "$as_me:$LINENO: result: $ac_cv_win_or_dos" >&5 -echo "${ECHO_T}$ac_cv_win_or_dos" >&6 - - if test x"$ac_cv_win_or_dos" = xyes; then - ac_fs_accepts_drive_letter_prefix=1 - ac_fs_backslash_is_file_name_separator=1 - else - ac_fs_accepts_drive_letter_prefix=0 - ac_fs_backslash_is_file_name_separator=0 - fi - - - - - -cat >>confdefs.h <<_ACEOF -#define FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX $ac_fs_accepts_drive_letter_prefix -_ACEOF - - - - - - -cat >>confdefs.h <<_ACEOF -#define FILESYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR $ac_fs_backslash_is_file_name_separator -_ACEOF - - - - -for ac_header in fcntl.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_header_compiler=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc in - yes:no ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; - no:yes ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - echo "$as_me:$LINENO: checking for DOS-style setmode" >&5 -echo $ECHO_N "checking for DOS-style setmode... $ECHO_C" >&6 -if test "${ac_cv_func_setmode_dos+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include - #if HAVE_FCNTL_H - # include - #endif - #if HAVE_UNISTD_H - # include - #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -int ret = setmode && setmode (1, O_BINARY); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_setmode_dos=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_setmode_dos=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_setmode_dos" >&5 -echo "${ECHO_T}$ac_cv_func_setmode_dos" >&6 - if test $ac_cv_func_setmode_dos = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_SETMODE_DOS 1 -_ACEOF - - fi - -ac_config_files="$ac_config_files Makefile doc/Makefile lib/Makefile lib/posix/Makefile man/Makefile m4/Makefile ms/Makefile po/Makefile.in src/Makefile" - -ac_config_commands="$ac_config_commands default" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overriden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -{ - (set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} | - sed ' - t clear - : clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache -if cmp -s $cache_file confcache; then :; else - if test -w $cache_file; then - test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" - cat confcache >$cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -}' -fi - -DEFS=-DHAVE_CONFIG_H - -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi - -: ${CONFIG_STATUS=./config.status} -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -SHELL=\${CONFIG_SHELL-$SHELL} -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF - -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi - -# NLS nuisances. -# Support unset when possible. -if (FOO=FOO; unset FOO) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - -(set +x; test -n "`(LANG=C; export LANG) 2>&1`") && - { $as_unset LANG || test "${LANG+set}" != set; } || - { LANG=C; export LANG; } -(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && - { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || - { LC_ALL=C; export LC_ALL; } -(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && - { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || - { LC_TIME=C; export LC_TIME; } -(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && - { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || - { LC_CTYPE=C; export LC_CTYPE; } -(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && - { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || - { LANGUAGE=C; export LANGUAGE; } -(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && - { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || - { LC_COLLATE=C; export LC_COLLATE; } -(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && - { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || - { LC_NUMERIC=C; export LC_NUMERIC; } -(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && - { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || - { LC_MESSAGES=C; export LC_MESSAGES; } - - -# Name of the executable. -as_me=`(basename "$0") 2>/dev/null || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conftest.sh - echo "exit 0" >>conftest.sh - chmod +x conftest.sh - if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conftest.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 -echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | - sed ' - N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, - t loop - s,-$,, - s,^['$as_cr_digits']*\n,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 -echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } - -exec 6>&1 - -# Open the log real soon, to keep \$[0] and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. Logging --version etc. is OK. -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX -} >&5 -cat >&5 <<_CSEOF - -This file was extended by GNU diffutils $as_me 2.8.1, which was -generated by GNU Autoconf 2.53. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -_CSEOF -echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 -echo >&5 -_ACEOF - -# Files that config.status was made for. -if test -n "$ac_config_files"; then - echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_headers"; then - echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_links"; then - echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_commands"; then - echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS -fi - -cat >>$CONFIG_STATUS <<\_ACEOF - -ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. - -Usage: $0 [OPTIONS] [FILE]... - - -h, --help print this help, then exit - -V, --version print version number, then exit - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration links: -$config_links - -Configuration commands: -$config_commands - -Report bugs to ." -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF -ac_cs_version="\\ -GNU diffutils config.status 2.8.1 -configured by $0, generated by GNU Autoconf 2.53, - with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" - -Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." -srcdir=$srcdir -INSTALL="$INSTALL" -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` - shift - set dummy "$ac_option" "$ac_optarg" ${1+"$@"} - shift - ;; - -*);; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_need_defaults=false;; - esac - - case $1 in - # Handling of the options. -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion" - exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;; -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:$LINENO: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - shift - CONFIG_FILES="$CONFIG_FILES $1" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - shift - CONFIG_HEADERS="$CONFIG_HEADERS $1" - ac_need_defaults=false;; - - # This is an error. - -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; } ;; - - *) ac_config_targets="$ac_config_targets $1" ;; - - esac - shift -done - -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF -# -# INIT-COMMANDS section. -# - -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" -# Capture the value of obsolete $ALL_LINGUAS because we need it to compute - # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it - # from automake. - eval 'ALL_LINGUAS''="$ALL_LINGUAS"' - # Capture the value of LINGUAS because we need it to compute CATALOGS. - LINGUAS="${LINGUAS-%UNSET%}" - - -_ACEOF - - - -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_config_target in $ac_config_targets -do - case "$ac_config_target" in - # Handling of arguments. - "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; - "lib/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; - "lib/posix/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/posix/Makefile" ;; - "man/Makefile" ) CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; - "m4/Makefile" ) CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;; - "ms/Makefile" ) CONFIG_FILES="$CONFIG_FILES ms/Makefile" ;; - "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; - "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; - "lib/fnmatch.h" ) CONFIG_LINKS="$CONFIG_LINKS lib/fnmatch.h:lib/fnmatch.hin" ;; - "lib/regex.h" ) CONFIG_LINKS="$CONFIG_LINKS lib/regex.h:lib/regex.hin" ;; - "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; - "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; - "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.hin" ;; - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; - esac -done - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_LINKS+set}" = set || CONFIG_LINKS=$config_links - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Create a temporary directory, and hook for its removal unless debugging. -$debug || -{ - trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} - -# Create a (secure) tmp directory for tmp files. -: ${TMPDIR=/tmp} -{ - tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=$TMPDIR/cs$$-$RANDOM - (umask 077 && mkdir $tmp) -} || -{ - echo "$me: cannot create a temporary directory in $TMPDIR" >&2 - { (exit 1); exit 1; } -} - -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF - -# -# CONFIG_FILES section. -# - -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h -if test -n "\$CONFIG_FILES"; then - # Protect against being on the right side of a sed subst in config.status. - sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; - s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF -s,@SHELL@,$SHELL,;t t -s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t -s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t -s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t -s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t -s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t -s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t -s,@exec_prefix@,$exec_prefix,;t t -s,@prefix@,$prefix,;t t -s,@program_transform_name@,$program_transform_name,;t t -s,@bindir@,$bindir,;t t -s,@sbindir@,$sbindir,;t t -s,@libexecdir@,$libexecdir,;t t -s,@datadir@,$datadir,;t t -s,@sysconfdir@,$sysconfdir,;t t -s,@sharedstatedir@,$sharedstatedir,;t t -s,@localstatedir@,$localstatedir,;t t -s,@libdir@,$libdir,;t t -s,@includedir@,$includedir,;t t -s,@oldincludedir@,$oldincludedir,;t t -s,@infodir@,$infodir,;t t -s,@mandir@,$mandir,;t t -s,@build_alias@,$build_alias,;t t -s,@host_alias@,$host_alias,;t t -s,@target_alias@,$target_alias,;t t -s,@DEFS@,$DEFS,;t t -s,@ECHO_C@,$ECHO_C,;t t -s,@ECHO_N@,$ECHO_N,;t t -s,@ECHO_T@,$ECHO_T,;t t -s,@LIBS@,$LIBS,;t t -s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t -s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t -s,@INSTALL_DATA@,$INSTALL_DATA,;t t -s,@PACKAGE@,$PACKAGE,;t t -s,@VERSION@,$VERSION,;t t -s,@ACLOCAL@,$ACLOCAL,;t t -s,@AUTOCONF@,$AUTOCONF,;t t -s,@AUTOMAKE@,$AUTOMAKE,;t t -s,@AUTOHEADER@,$AUTOHEADER,;t t -s,@MAKEINFO@,$MAKEINFO,;t t -s,@AMTAR@,$AMTAR,;t t -s,@install_sh@,$install_sh,;t t -s,@STRIP@,$STRIP,;t t -s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t -s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t -s,@AWK@,$AWK,;t t -s,@SET_MAKE@,$SET_MAKE,;t t -s,@CC@,$CC,;t t -s,@CFLAGS@,$CFLAGS,;t t -s,@LDFLAGS@,$LDFLAGS,;t t -s,@CPPFLAGS@,$CPPFLAGS,;t t -s,@ac_ct_CC@,$ac_ct_CC,;t t -s,@EXEEXT@,$EXEEXT,;t t -s,@OBJEXT@,$OBJEXT,;t t -s,@DEPDIR@,$DEPDIR,;t t -s,@am__include@,$am__include,;t t -s,@am__quote@,$am__quote,;t t -s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t -s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t -s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t -s,@CCDEPMODE@,$CCDEPMODE,;t t -s,@CPP@,$CPP,;t t -s,@HELP2MAN@,$HELP2MAN,;t t -s,@RANLIB@,$RANLIB,;t t -s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t -s,@PR_PROGRAM@,$PR_PROGRAM,;t t -s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t -s,@MSGFMT@,$MSGFMT,;t t -s,@GMSGFMT@,$GMSGFMT,;t t -s,@XGETTEXT@,$XGETTEXT,;t t -s,@MSGMERGE@,$MSGMERGE,;t t -s,@build@,$build,;t t -s,@build_cpu@,$build_cpu,;t t -s,@build_vendor@,$build_vendor,;t t -s,@build_os@,$build_os,;t t -s,@host@,$host,;t t -s,@host_cpu@,$host_cpu,;t t -s,@host_vendor@,$host_vendor,;t t -s,@host_os@,$host_os,;t t -s,@USE_NLS@,$USE_NLS,;t t -s,@LIBICONV@,$LIBICONV,;t t -s,@LTLIBICONV@,$LTLIBICONV,;t t -s,@INTLLIBS@,$INTLLIBS,;t t -s,@LIBINTL@,$LIBINTL,;t t -s,@LTLIBINTL@,$LTLIBINTL,;t t -s,@POSUB@,$POSUB,;t t -s,@LIBOBJS@,$LIBOBJS,;t t -s,@ALLOCA@,$ALLOCA,;t t -s,@U@,$U,;t t -s,@ANSI2KNR@,$ANSI2KNR,;t t -s,@LIB_CLOCK_GETTIME@,$LIB_CLOCK_GETTIME,;t t -CEOF - -_ACEOF - - cat >>$CONFIG_STATUS <<\_ACEOF - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # is no need to browse any of the substitutions). - # These are the two extra sed commands mentioned above. - (echo ':t - /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat - fi -fi # test -n "$CONFIG_FILES" - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac -# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be -# absolute. -ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` -ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` -ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` -ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` - - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_builddir$INSTALL ;; - esac - - if test x"$ac_file" != x-; then - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - configure_input= - else - configure_input="$ac_file. " - fi - configure_input=$configure_input"Generated from `echo $ac_file_in | - sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo $f;; - *) # Relative - if test -f "$f"; then - # Build tree - echo $f - elif test -f "$srcdir/$f"; then - # Source tree - echo $srcdir/$f - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s,@configure_input@,$configure_input,;t t -s,@srcdir@,$ac_srcdir,;t t -s,@abs_srcdir@,$ac_abs_srcdir,;t t -s,@top_srcdir@,$ac_top_srcdir,;t t -s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t -s,@builddir@,$ac_builddir,;t t -s,@abs_builddir@,$ac_abs_builddir,;t t -s,@top_builddir@,$ac_top_builddir,;t t -s,@abs_top_builddir@,$ac_abs_top_builddir,;t t -s,@INSTALL@,$ac_INSTALL,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi - -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_HEADER section. -# - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='[ ].*$,\1#\2' -ac_dC=' ' -ac_dD=',;t' -# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='$,\1#\2define\3' -ac_uC=' ' -ac_uD=',;t' - -for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo $f;; - *) # Relative - if test -f "$f"; then - # Build tree - echo $f - elif test -f "$srcdir/$f"; then - # Source tree - echo $srcdir/$f - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - # Remove the trailing spaces. - sed 's/[ ]*$//' $ac_file_inputs >$tmp/in - -_ACEOF - -# Transform confdefs.h into two sed scripts, `conftest.defines' and -# `conftest.undefs', that substitutes the proper values into -# config.h.in to produce config.h. The first handles `#define' -# templates, and the second `#undef' templates. -# And first: Protect against being on the right side of a sed subst in -# config.status. Protect against being in an unquoted here document -# in config.status. -rm -f conftest.defines conftest.undefs -# Using a here document instead of a string reduces the quoting nightmare. -# Putting comments in sed scripts is not portable. -# -# `end' is used to avoid that the second main sed command (meant for -# 0-ary CPP macros) applies to n-ary macro definitions. -# See the Autoconf documentation for `clear'. -cat >confdef2sed.sed <<\_ACEOF -s/[\\&,]/\\&/g -s,[\\$`],\\&,g -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp -t end -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp -: end -_ACEOF -# If some macros were called several times there might be several times -# the same #defines, which is useless. Nevertheless, we may not want to -# sort them, since we want the *last* AC-DEFINE to be honored. -uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines -sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs -rm -f confdef2sed.sed - -# This sed command replaces #undef with comments. This is necessary, for -# example, in the case of _POSIX_SOURCE, which is predefined and required -# on some systems where configure will not decide to define it. -cat >>conftest.undefs <<\_ACEOF -s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, -_ACEOF - -# Break up conftest.defines because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS -echo ' if egrep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS -echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS -echo ' :' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.defines >/dev/null -do - # Write a limited-size here document to $tmp/defines.sed. - echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS - # Speed up: don't consider the non `#define' lines. - echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/defines.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail - rm -f conftest.defines - mv conftest.tail conftest.defines -done -rm -f conftest.defines -echo ' fi # egrep' >>$CONFIG_STATUS -echo >>$CONFIG_STATUS - -# Break up conftest.undefs because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #undef templates' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.undefs >/dev/null -do - # Write a limited-size here document to $tmp/undefs.sed. - echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS - # Speed up: don't consider the non `#undef' - echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/undefs.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail - rm -f conftest.undefs - mv conftest.tail conftest.undefs -done -rm -f conftest.undefs - -cat >>$CONFIG_STATUS <<\_ACEOF - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - echo "/* Generated by configure. */" >$tmp/config.h - else - echo "/* $ac_file. Generated by configure. */" >$tmp/config.h - fi - cat $tmp/in >>$tmp/config.h - rm -f $tmp/in - if test x"$ac_file" != x-; then - if cmp -s $ac_file $tmp/config.h 2>/dev/null; then - { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 -echo "$as_me: $ac_file is unchanged" >&6;} - else - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - rm -f $ac_file - mv $tmp/config.h $ac_file - fi - else - cat $tmp/config.h - rm -f $tmp/config.h - fi - # Run the commands associated with the file. - case $ac_file in - config.h ) # update the timestamp -echo 'timestamp for config.h:config.hin' >"./stamp-h1" - ;; - esac -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_LINKS section. -# - -for ac_file in : $CONFIG_LINKS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` - - { echo "$as_me:$LINENO: linking $srcdir/$ac_source to $ac_dest" >&5 -echo "$as_me: linking $srcdir/$ac_source to $ac_dest" >&6;} - - if test ! -r $srcdir/$ac_source; then - { { echo "$as_me:$LINENO: error: $srcdir/$ac_source: file not found" >&5 -echo "$as_me: error: $srcdir/$ac_source: file not found" >&2;} - { (exit 1); exit 1; }; } - fi - rm -f $ac_dest - - # Make relative symlinks. - ac_dest_dir=`(dirname "$ac_dest") 2>/dev/null || -$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_dest" : 'X\(//\)[^/]' \| \ - X"$ac_dest" : 'X\(//\)$' \| \ - X"$ac_dest" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_dest" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dest_dir" - else - as_dir="$ac_dest_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dest_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dest_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dest_dir" != .; then - ac_dir_suffix=/`echo "$ac_dest_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac -# Don't blindly perform a `cd "$ac_dest_dir"/$ac_foo && pwd` since $ac_foo can be -# absolute. -ac_abs_builddir=`cd "$ac_dest_dir" && cd $ac_builddir && pwd` -ac_abs_top_builddir=`cd "$ac_dest_dir" && cd $ac_top_builddir && pwd` -ac_abs_srcdir=`cd "$ac_dest_dir" && cd $ac_srcdir && pwd` -ac_abs_top_srcdir=`cd "$ac_dest_dir" && cd $ac_top_srcdir && pwd` - - - case $srcdir in - [\\/$]* | ?:[\\/]* ) ac_rel_source=$srcdir/$ac_source ;; - *) ac_rel_source=$ac_top_builddir$srcdir/$ac_source ;; - esac - - # Make a symlink if possible; otherwise try a hard link. - ln -s $ac_rel_source $ac_dest 2>/dev/null || - ln $srcdir/$ac_source $ac_dest || - { { echo "$as_me:$LINENO: error: cannot link $ac_dest to $srcdir/$ac_source" >&5 -echo "$as_me: error: cannot link $ac_dest to $srcdir/$ac_source" >&2;} - { (exit 1); exit 1; }; } -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_COMMANDS section. -# -for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_dir=`(dirname "$ac_dest") 2>/dev/null || -$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_dest" : 'X\(//\)[^/]' \| \ - X"$ac_dest" : 'X\(//\)$' \| \ - X"$ac_dest" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_dest" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac -# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be -# absolute. -ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` -ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` -ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` -ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` - - - { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 -echo "$as_me: executing $ac_dest commands" >&6;} - case $ac_dest in - depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - if (sed 1q $mf | fgrep 'generated by automake') > /dev/null 2>&1; then - dirpart=`(dirname "$mf") 2>/dev/null || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - else - continue - fi - grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue - # Extract the definition of DEP_FILES from the Makefile without - # running `make'. - DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` - test -z "$DEPDIR" && continue - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n -e '/^U = / s///p' < "$mf"` - test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" - # We invoke sed twice because it is the simplest approach to - # changing $(DEPDIR) to its actual value in the expansion. - for file in `sed -n -e ' - /^DEP_FILES = .*\\\\$/ { - s/^DEP_FILES = // - :loop - s/\\\\$// - p - n - /\\\\$/ b loop - p - } - /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`(dirname "$file") 2>/dev/null || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p $dirpart/$fdir - else - as_dir=$dirpart/$fdir - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 -echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} - { (exit 1); exit 1; }; }; } - - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done -done - ;; - default-1 ) - for ac_file in $CONFIG_FILES; do - # Support "outfile[:infile[:infile...]]" - case "$ac_file" in - *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - esac - # PO directories have a Makefile.in generated from Makefile.in.in. - case "$ac_file" in */Makefile.in) - # Adjust a relative srcdir. - ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" - ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - # In autoconf-2.13 it is called $ac_given_srcdir. - # In autoconf-2.50 it is called $srcdir. - test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" - case "$ac_given_srcdir" in - .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then - rm -f "$ac_dir/POTFILES" - test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" - cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" - # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend - # on $ac_dir but don't depend on user-specified configuration - # parameters. - if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then - # The LINGUAS file contains the set of available languages. - if test -n "$ALL_LINGUAS"; then - test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" - fi - ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` - # Hide the ALL_LINGUAS assigment from automake. - eval 'ALL_LINGUAS''=$ALL_LINGUAS_' - fi - case "$ac_given_srcdir" in - .) srcdirpre= ;; - *) srcdirpre='$(srcdir)/' ;; - esac - POFILES= - GMOFILES= - UPDATEPOFILES= - DUMMYPOFILES= - for lang in $ALL_LINGUAS; do - POFILES="$POFILES $srcdirpre$lang.po" - GMOFILES="$GMOFILES $srcdirpre$lang.gmo" - UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" - DUMMYPOFILES="$DUMMYPOFILES $lang.nop" - done - # CATALOGS depends on both $ac_dir and the user's LINGUAS - # environment variable. - INST_LINGUAS= - if test -n "$ALL_LINGUAS"; then - for presentlang in $ALL_LINGUAS; do - useit=no - if test "%UNSET%" != "$LINGUAS"; then - desiredlanguages="$LINGUAS" - else - desiredlanguages="$ALL_LINGUAS" - fi - for desiredlang in $desiredlanguages; do - # Use the presentlang catalog if desiredlang is - # a. equal to presentlang, or - # b. a variant of presentlang (because in this case, - # presentlang can be used as a fallback for messages - # which are not translated in the desiredlang catalog). - case "$desiredlang" in - "$presentlang"*) useit=yes;; - esac - done - if test $useit = yes; then - INST_LINGUAS="$INST_LINGUAS $presentlang" - fi - done - fi - CATALOGS= - if test -n "$INST_LINGUAS"; then - for lang in $INST_LINGUAS; do - CATALOGS="$CATALOGS $lang.gmo" - done - fi - test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" - sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" - for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do - if test -f "$f"; then - case "$f" in - *.orig | *.bak | *~) ;; - *) cat "$f" >> "$ac_dir/Makefile" ;; - esac - fi - done - fi - ;; - esac - done ;; - default ) date > stamp-h ;; - esac -done -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF - -{ (exit 0); exit 0; } -_ACEOF -chmod +x $CONFIG_STATUS -ac_clean_files=$ac_clean_files_save - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - exec 5>/dev/null - $SHELL $CONFIG_STATUS || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || { (exit 1); exit 1; } -fi - diff --git a/src/bin/diffutils/configure.ac b/src/bin/diffutils/configure.ac deleted file mode 100644 index 369257c4a0..0000000000 --- a/src/bin/diffutils/configure.ac +++ /dev/null @@ -1,135 +0,0 @@ -# Configure template for GNU Diffutils. - -# Copyright (C) 1994, 1995, 1998, 2001, 2002 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -AC_PREREQ(2.53) - -AC_INIT(GNU diffutils, 2.8.1, bug-gnu-utils@gnu.org) -AC_CONFIG_SRCDIR(src/diff.c) - -AC_CONFIG_AUX_DIR(config) -AM_CONFIG_HEADER([config.h:config.hin]) -AM_INIT_AUTOMAKE([gnits]) - -AC_PROG_AWK -AC_PROG_CC -AC_ISC_POSIX -AM_PROG_CC_STDC -AC_PROG_CPP -AM_MISSING_PROG(HELP2MAN, help2man) -AC_PROG_INSTALL -AC_PROG_RANLIB - -AC__GNU_SOURCE -AC_DEFINE([__EXTENSIONS__], 1, [Enable Solaris extensions.]) -AC_SYS_LARGEFILE - -AC_C_CONST -AC_C_INLINE -AC_C_VARARRAYS - -AC_DEFINE(DEFAULT_DIFF_PROGRAM, "diff", - [Name of "diff" program, unless overridden.]) - -AC_DEFINE(DEFAULT_EDITOR_PROGRAM, "ed", - [Name of editor program, unless overridden.]) - -AC_PATH_PROG(PR_PROGRAM, pr, "") -AC_DEFINE_UNQUOTED(PR_PROGRAM, "$PR_PROGRAM", [Name of "pr" program.]) - -AC_HEADER_STDBOOL -AC_HEADER_STDC -AC_CHECK_HEADERS(fcntl.h libintl.h limits.h locale.h \ - stdlib.h string.h sys/file.h time.h unistd.h) -AC_CHECK_MEMBERS([struct stat.st_blksize]) -AC_CHECK_MEMBERS([struct stat.st_rdev]) -AC_CHECK_TYPE(ptrdiff_t, int) -AC_CHECK_TYPE(ssize_t, int) -jm_AC_TYPE_UINTMAX_T -AM_GNU_GETTEXT([external]) -XGETTEXT="AWK='$AWK' \$(SHELL) \$(top_srcdir)/exgettext $XGETTEXT" -AC_HEADER_DIRENT -AC_HEADER_STAT -AC_HEADER_SYS_WAIT -AC_STRUCT_ST_MTIM_NSEC -AC_TYPE_PID_T -AC_TYPE_SIGNAL - -AC_CHECK_FUNCS(diraccess dup2 gettimeofday \ - sigaction sigprocmask strchr strerror tmpnam) -AC_REPLACE_FUNCS(memchr mkstemp strcasecmp waitpid) -if test $ac_cv_func_mkstemp != yes; then - AC_LIBOBJ(tempname) -fi -AC_FUNC_CLOSEDIR_VOID -AC_FUNC_FORK -AC_FUNC_VPRINTF -jm_FUNC_GLIBC_UNLOCKED_IO -jm_FUNC_GNU_STRFTIME -# No need for AC_FUNC_MEMCMP, since memcmp is used only to test for equality. -jm_FUNC_MALLOC -jm_FUNC_REALLOC -jm_PREREQ_C_STACK -jm_PREREQ_ERROR -jm_PREREQ_HARD_LOCALE -jm_PREREQ_QUOTEARG -jm_PREREQ_REGEX -AC_DEFINE([REGEX_MALLOC], 1, - [Define to 1 to avoid alloca in the regular-expression implementation.]) -jm_PREREQ_TEMPNAME -jm_AC_PREREQ_XSTRTOUMAX - -# Check for clock_gettime and its library. Solaris puts it in -lrt or -# -lposix4, but we don't want to link that library unless we have to. -diff_saved_libs=$LIBS -AC_SEARCH_LIBS(clock_gettime, [rt posix4]) -case $ac_cv_search_clock_gettime in -no | 'none required') - LIB_CLOCK_GETTIME=;; -*) - LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime;; -esac -AC_SUBST([LIB_CLOCK_GETTIME]) -AC_CHECK_FUNCS(clock_gettime) -LIBS=$diff_saved_libs - -# fnmatch -AC_FUNC_FNMATCH -if test $ac_cv_func_fnmatch_works = yes; then - rm -f lib/fnmatch.h -else - AC_LIBOBJ(fnmatch) - AC_CONFIG_LINKS(lib/fnmatch.h:lib/fnmatch.hin) -fi - -# regex -jm_INCLUDED_REGEX([lib/regex.c]) -if test "$jm_with_regex" = yes; then - AC_CONFIG_LINKS(lib/regex.h:lib/regex.hin) -else - rm -f lib/regex.h -fi - -jm_AC_DOS -AC_FUNC_SETMODE_DOS - -AC_CONFIG_FILES([Makefile doc/Makefile \ - lib/Makefile lib/posix/Makefile man/Makefile \ - m4/Makefile ms/Makefile po/Makefile.in src/Makefile]) -AC_CONFIG_COMMANDS([default], [date > stamp-h]) -AC_OUTPUT diff --git a/src/bin/diffutils/doc/Makefile b/src/bin/diffutils/doc/Makefile deleted file mode 100644 index 592eebfb73..0000000000 --- a/src/bin/diffutils/doc/Makefile +++ /dev/null @@ -1,359 +0,0 @@ -# Makefile.in generated by automake 1.6 from Makefile.am. -# doc/Makefile. Generated from Makefile.in by configure. - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - - -# Makefile for GNU diffutils documentation. - -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. -SHELL = /bin/sh - -srcdir = . -top_srcdir = .. - -prefix = /usr/local -exec_prefix = ${prefix} - -bindir = ${exec_prefix}/bin -sbindir = ${exec_prefix}/sbin -libexecdir = ${exec_prefix}/libexec -datadir = ${prefix}/share -sysconfdir = ${prefix}/etc -sharedstatedir = ${prefix}/com -localstatedir = ${prefix}/var -libdir = ${exec_prefix}/lib -infodir = ${prefix}/info -mandir = ${prefix}/man -includedir = ${prefix}/include -oldincludedir = /usr/include -pkgdatadir = $(datadir)/diffutils -pkglibdir = $(libdir)/diffutils -pkgincludedir = $(includedir)/diffutils -top_builddir = .. - -ACLOCAL = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run aclocal-1.6 -AUTOCONF = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoconf -AUTOMAKE = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run automake-1.6 -AUTOHEADER = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoheader - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = /bin/install -c -INSTALL_PROGRAM = ${INSTALL} -INSTALL_DATA = ${INSTALL} -m 644 -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -INSTALL_SCRIPT = ${INSTALL} -INSTALL_HEADER = $(INSTALL_DATA) -transform = s,x,x, -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = -host_triplet = i586-pc-beos - -EXEEXT = -OBJEXT = o -PATH_SEPARATOR = : -AMTAR = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run tar -AWK = gawk -BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ -CATOBJEXT = @CATOBJEXT@ -CC = gcc -CPP = gcc -E -DATADIRNAME = @DATADIRNAME@ -DEPDIR = .deps -GENCAT = @GENCAT@ -GLIBC21 = @GLIBC21@ -GMSGFMT = : -HAVE_LIB = @HAVE_LIB@ -HELP2MAN = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run help2man -INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s -INSTOBJEXT = @INSTOBJEXT@ -INTLBISON = @INTLBISON@ -INTLLIBS = -INTLOBJS = @INTLOBJS@ -INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -LIB = @LIB@ -LIBICONV = -LIBINTL = -LIB_CLOCK_GETTIME = -LTLIB = @LTLIB@ -LTLIBICONV = -LTLIBINTL = -MKINSTALLDIRS = config/mkinstalldirs -PACKAGE = diffutils -POSUB = -PR_PROGRAM = /bin/pr -RANLIB = ranlib -STRIP = -U = -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = no -VERSION = 2.8.1 -am__include = include -am__quote = -install_sh = /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/install-sh - -AM_MAKEINFOFLAGS = --no-split - -info_TEXINFOS = diff.texi -diff_TEXINFOS = fdl.texi - -EXTRA_DIST = diagmeet.note -subdir = doc -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -DIST_SOURCES = -TEXINFO_TEX = $(top_srcdir)/config/texinfo.tex -INFO_DEPS = diff.info -DVIS = diff.dvi -TEXINFOS = diff.texi -DIST_COMMON = $(diff_TEXINFOS) Makefile.am Makefile.in stamp-vti \ - version.texi -all: all-am - -.SUFFIXES: -.SUFFIXES: .dvi .info .ps .texi -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits doc/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) - -$(srcdir)/version.texi: $(srcdir)/stamp-vti - @: -$(srcdir)/stamp-vti: diff.texi $(top_srcdir)/configure.ac - @(set `$(SHELL) $(top_srcdir)/config/mdate-sh $(srcdir)/diff.texi`; \ - echo "@set UPDATED $$1 $$2 $$3"; \ - echo "@set UPDATED-MONTH $$2 $$3"; \ - echo "@set EDITION $(VERSION)"; \ - echo "@set VERSION $(VERSION)") > vti.tmp - @cmp -s vti.tmp $(srcdir)/version.texi \ - || (echo "Updating $(srcdir)/version.texi"; \ - cp vti.tmp $(srcdir)/version.texi) - -@rm -f vti.tmp - @cp $(srcdir)/version.texi $@ - -mostlyclean-vti: - -rm -f vti.tmp - -maintainer-clean-vti: - -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi - -diff.info: diff.texi $(srcdir)/version.texi $(diff_TEXINFOS) -diff.dvi: diff.texi $(srcdir)/version.texi $(diff_TEXINFOS) - -.texi.info: - @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] - cd $(srcdir) \ - && $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) \ - `echo $< | sed 's,.*/,,'` - -.texi.dvi: - TEXINPUTS="$(top_srcdir)/config$(PATH_SEPARATOR)$$TEXINPUTS" \ - MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ - $(TEXI2DVI) $< - -.texi: - @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] - cd $(srcdir) \ - && $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) \ - `echo $< | sed 's,.*/,,'` - -MAKEINFO = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run makeinfo -TEXI2DVI = texi2dvi -DVIPS = dvips -.dvi.ps: - $(DVIPS) $< -o $@ - -uninstall-info-am: - $(PRE_UNINSTALL) - @if (install-info --version && \ - install-info --version | fgrep -i -v debian) >/dev/null 2>&1; then \ - list='$(INFO_DEPS)'; \ - for file in $$list; do \ - echo " install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$file"; \ - install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$file; \ - done; \ - else :; fi - @$(NORMAL_UNINSTALL) - @list='$(INFO_DEPS)'; \ - for file in $$list; do \ - (if cd $(DESTDIR)$(infodir); then \ - echo " rm -f $$file $$file-[0-9] $$file-[0-9][0-9])"; \ - rm -f $$file $$file-[0-9] $$file-[0-9][0-9]; \ - else :; fi); \ - done - -dist-info: $(INFO_DEPS) - list='$(INFO_DEPS)'; \ - for base in $$list; do \ - d=$(srcdir); \ - for file in $$d/$$base*; do \ - relfile=`expr "$$file" : "$$d/\(.*\)"`; \ - test -f $(distdir)/$$relfile || \ - cp -p $$file $(distdir)/$$relfile; \ - done; \ - done - -mostlyclean-aminfo: - -rm -f diff.aux diff.cp diff.cps diff.dvi diff.fn diff.ky diff.log diff.pg \ - diff.ps diff.toc diff.tp diff.vr - -maintainer-clean-aminfo: - cd $(srcdir) && \ - for i in $(INFO_DEPS); do \ - rm -f $$i; \ - if test "`echo $$i-[0-9]*`" != "$$i-[0-9]*"; then \ - rm -f $$i-[0-9]*; \ - fi; \ - done -tags: TAGS -TAGS: - -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir)$$dir \ - || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="${top_distdir}" distdir="$(distdir)" \ - dist-info -check-am: all-am -check: check-am -all-am: Makefile $(INFO_DEPS) - -installdirs: - $(mkinstalldirs) $(DESTDIR)$(infodir) - -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic mostlyclean-am - -distclean: distclean-am - -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: $(DVIS) - -info: info-am - -info-am: $(INFO_DEPS) - -install-data-am: install-info-am - -install-exec-am: - -install-info: install-info-am - -install-info-am: $(INFO_DEPS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(infodir) - @list='$(INFO_DEPS)'; \ - for file in $$list; do \ - d=$(srcdir); \ - for ifile in echo $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9]; do \ - if test -f $$ifile; then \ - relfile=`expr "$$ifile" : "$$d/\(.*\)"`; \ - echo " $(INSTALL_DATA) $$ifile $(DESTDIR)$(infodir)/$$relfile"; \ - $(INSTALL_DATA) $$ifile $(DESTDIR)$(infodir)/$$relfile; \ - else : ; fi; \ - done; \ - done - @$(POST_INSTALL) - @if (install-info --version && \ - install-info --version | fgrep -i -v debian) >/dev/null 2>&1; then \ - list='$(INFO_DEPS)'; \ - for file in $$list; do \ - echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file";\ - install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file || :;\ - done; \ - else : ; fi -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -maintainer-clean-am: distclean-am maintainer-clean-aminfo \ - maintainer-clean-generic maintainer-clean-vti - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-aminfo mostlyclean-generic mostlyclean-vti - -uninstall-am: uninstall-info-am - -.PHONY: all all-am check check-am clean clean-generic dist-info \ - distclean distclean-generic distdir dvi dvi-am info info-am \ - install install-am install-data install-data-am install-exec \ - install-exec-am install-info install-info-am install-man \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-aminfo \ - maintainer-clean-generic maintainer-clean-vti mostlyclean \ - mostlyclean-aminfo mostlyclean-generic mostlyclean-vti \ - uninstall uninstall-am uninstall-info-am - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/bin/diffutils/doc/Makefile.am b/src/bin/diffutils/doc/Makefile.am deleted file mode 100644 index 574fdab870..0000000000 --- a/src/bin/diffutils/doc/Makefile.am +++ /dev/null @@ -1,24 +0,0 @@ -# Makefile for GNU diffutils documentation. - -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. - -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2, or (at your option) -## any later version. - -## This program is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. - -## You should have received a copy of the GNU General Public License -## along with this program; if not, write to the Free Software Foundation, -## Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -AM_MAKEINFOFLAGS = --no-split - -info_TEXINFOS = diff.texi -diff_TEXINFOS = fdl.texi - -EXTRA_DIST = diagmeet.note diff --git a/src/bin/diffutils/doc/Makefile.in b/src/bin/diffutils/doc/Makefile.in deleted file mode 100644 index 408013d8e2..0000000000 --- a/src/bin/diffutils/doc/Makefile.in +++ /dev/null @@ -1,359 +0,0 @@ -# Makefile.in generated by automake 1.6 from Makefile.am. -# @configure_input@ - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# Makefile for GNU diffutils documentation. - -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_HEADER = $(INSTALL_DATA) -transform = @program_transform_name@ -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ - -EXEEXT = @EXEEXT@ -OBJEXT = @OBJEXT@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -AMTAR = @AMTAR@ -AWK = @AWK@ -BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -CPP = @CPP@ -DATADIRNAME = @DATADIRNAME@ -DEPDIR = @DEPDIR@ -GENCAT = @GENCAT@ -GLIBC21 = @GLIBC21@ -GMSGFMT = @GMSGFMT@ -HAVE_LIB = @HAVE_LIB@ -HELP2MAN = @HELP2MAN@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTOBJEXT = @INSTOBJEXT@ -INTLBISON = @INTLBISON@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ -INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -LIB = @LIB@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ -LTLIB = @LTLIB@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -PACKAGE = @PACKAGE@ -POSUB = @POSUB@ -PR_PROGRAM = @PR_PROGRAM@ -RANLIB = @RANLIB@ -STRIP = @STRIP@ -U = @U@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -am__include = @am__include@ -am__quote = @am__quote@ -install_sh = @install_sh@ - -AM_MAKEINFOFLAGS = --no-split - -info_TEXINFOS = diff.texi -diff_TEXINFOS = fdl.texi - -EXTRA_DIST = diagmeet.note -subdir = doc -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -DIST_SOURCES = -TEXINFO_TEX = $(top_srcdir)/config/texinfo.tex -INFO_DEPS = diff.info -DVIS = diff.dvi -TEXINFOS = diff.texi -DIST_COMMON = $(diff_TEXINFOS) Makefile.am Makefile.in stamp-vti \ - version.texi -all: all-am - -.SUFFIXES: -.SUFFIXES: .dvi .info .ps .texi -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits doc/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) - -$(srcdir)/version.texi: $(srcdir)/stamp-vti - @: -$(srcdir)/stamp-vti: diff.texi $(top_srcdir)/configure.ac - @(set `$(SHELL) $(top_srcdir)/config/mdate-sh $(srcdir)/diff.texi`; \ - echo "@set UPDATED $$1 $$2 $$3"; \ - echo "@set UPDATED-MONTH $$2 $$3"; \ - echo "@set EDITION $(VERSION)"; \ - echo "@set VERSION $(VERSION)") > vti.tmp - @cmp -s vti.tmp $(srcdir)/version.texi \ - || (echo "Updating $(srcdir)/version.texi"; \ - cp vti.tmp $(srcdir)/version.texi) - -@rm -f vti.tmp - @cp $(srcdir)/version.texi $@ - -mostlyclean-vti: - -rm -f vti.tmp - -maintainer-clean-vti: - -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi - -diff.info: diff.texi $(srcdir)/version.texi $(diff_TEXINFOS) -diff.dvi: diff.texi $(srcdir)/version.texi $(diff_TEXINFOS) - -.texi.info: - @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] - cd $(srcdir) \ - && $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) \ - `echo $< | sed 's,.*/,,'` - -.texi.dvi: - TEXINPUTS="$(top_srcdir)/config$(PATH_SEPARATOR)$$TEXINPUTS" \ - MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ - $(TEXI2DVI) $< - -.texi: - @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] - cd $(srcdir) \ - && $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) \ - `echo $< | sed 's,.*/,,'` - -MAKEINFO = @MAKEINFO@ -TEXI2DVI = texi2dvi -DVIPS = dvips -.dvi.ps: - $(DVIPS) $< -o $@ - -uninstall-info-am: - $(PRE_UNINSTALL) - @if (install-info --version && \ - install-info --version | fgrep -i -v debian) >/dev/null 2>&1; then \ - list='$(INFO_DEPS)'; \ - for file in $$list; do \ - echo " install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$file"; \ - install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$file; \ - done; \ - else :; fi - @$(NORMAL_UNINSTALL) - @list='$(INFO_DEPS)'; \ - for file in $$list; do \ - (if cd $(DESTDIR)$(infodir); then \ - echo " rm -f $$file $$file-[0-9] $$file-[0-9][0-9])"; \ - rm -f $$file $$file-[0-9] $$file-[0-9][0-9]; \ - else :; fi); \ - done - -dist-info: $(INFO_DEPS) - list='$(INFO_DEPS)'; \ - for base in $$list; do \ - d=$(srcdir); \ - for file in $$d/$$base*; do \ - relfile=`expr "$$file" : "$$d/\(.*\)"`; \ - test -f $(distdir)/$$relfile || \ - cp -p $$file $(distdir)/$$relfile; \ - done; \ - done - -mostlyclean-aminfo: - -rm -f diff.aux diff.cp diff.cps diff.dvi diff.fn diff.ky diff.log diff.pg \ - diff.ps diff.toc diff.tp diff.vr - -maintainer-clean-aminfo: - cd $(srcdir) && \ - for i in $(INFO_DEPS); do \ - rm -f $$i; \ - if test "`echo $$i-[0-9]*`" != "$$i-[0-9]*"; then \ - rm -f $$i-[0-9]*; \ - fi; \ - done -tags: TAGS -TAGS: - -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir)$$dir \ - || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="${top_distdir}" distdir="$(distdir)" \ - dist-info -check-am: all-am -check: check-am -all-am: Makefile $(INFO_DEPS) - -installdirs: - $(mkinstalldirs) $(DESTDIR)$(infodir) - -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic mostlyclean-am - -distclean: distclean-am - -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: $(DVIS) - -info: info-am - -info-am: $(INFO_DEPS) - -install-data-am: install-info-am - -install-exec-am: - -install-info: install-info-am - -install-info-am: $(INFO_DEPS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(infodir) - @list='$(INFO_DEPS)'; \ - for file in $$list; do \ - d=$(srcdir); \ - for ifile in echo $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9]; do \ - if test -f $$ifile; then \ - relfile=`expr "$$ifile" : "$$d/\(.*\)"`; \ - echo " $(INSTALL_DATA) $$ifile $(DESTDIR)$(infodir)/$$relfile"; \ - $(INSTALL_DATA) $$ifile $(DESTDIR)$(infodir)/$$relfile; \ - else : ; fi; \ - done; \ - done - @$(POST_INSTALL) - @if (install-info --version && \ - install-info --version | fgrep -i -v debian) >/dev/null 2>&1; then \ - list='$(INFO_DEPS)'; \ - for file in $$list; do \ - echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file";\ - install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file || :;\ - done; \ - else : ; fi -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -maintainer-clean-am: distclean-am maintainer-clean-aminfo \ - maintainer-clean-generic maintainer-clean-vti - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-aminfo mostlyclean-generic mostlyclean-vti - -uninstall-am: uninstall-info-am - -.PHONY: all all-am check check-am clean clean-generic dist-info \ - distclean distclean-generic distdir dvi dvi-am info info-am \ - install install-am install-data install-data-am install-exec \ - install-exec-am install-info install-info-am install-man \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-aminfo \ - maintainer-clean-generic maintainer-clean-vti mostlyclean \ - mostlyclean-aminfo mostlyclean-generic mostlyclean-vti \ - uninstall uninstall-am uninstall-info-am - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/bin/diffutils/doc/diagmeet.note b/src/bin/diffutils/doc/diagmeet.note deleted file mode 100644 index 8f7242c735..0000000000 --- a/src/bin/diffutils/doc/diagmeet.note +++ /dev/null @@ -1,71 +0,0 @@ -Here is a comparison matrix which shows a case in which -it is possible for the forward and backward scan in `diag' -to meet along a nonzero length of diagonal simultaneous -(so that bdiag[d] and fdiag[d] are not equal) -even though there is no snake on that diagonal at the meeting point. - - - 85 1 1 1 159 1 1 17 - 1 2 3 4 -60 - 1 2 -1 - 2 2 3 4 -71 - 3 3 4 5 -85 - 4 3 4 5 -17 - 5 4 5 -1 - 6 4 5 6 -183 - 7 5 6 7 -10 - 8 6 7 -1 - 9 6 7 8 -12 - 7 8 9 10 -13 - 10 8 9 10 -14 - 10 9 10 -17 - 10 10 -1 - 10 9 10 -1 - 8 10 10 10 -183 - 8 7 9 9 9 -10 - 7 6 8 9 8 8 -1 - 6 5 7 7 -1 - 5 6 6 -1 - 5 5 5 -50 - 5 4 4 4 -1 - 4 3 3 -85 - 5 4 3 2 2 -1 - 2 1 -17 - 5 4 3 2 1 1 -1 - 1 0 - 85 1 1 1 159 1 1 17 - - - - - - - - - diff --git a/src/bin/diffutils/doc/diff.info b/src/bin/diffutils/doc/diff.info deleted file mode 100644 index d58accf7ea..0000000000 --- a/src/bin/diffutils/doc/diff.info +++ /dev/null @@ -1,5084 +0,0 @@ -This is diff.info, produced by makeinfo version 4.2 from diff.texi. - -This manual is for GNU Diffutils (version 2.8.1, 5 April 2002), and -documents the GNU `diff', `diff3', `sdiff', and `cmp' commands for -showing the differences between files and the GNU `patch' command for -using their output to update files. - - Copyright (C) 1992, 1993, 1994, 1998, 2001, 2002 Free Software -Foundation, Inc. - - Permission is granted to copy, distribute and/or modify this - document under the terms of the GNU Free Documentation License, - Version 1.1 or any later version published by the Free Software - Foundation; with no Invariant Sections, with the Front-Cover texts - being "A GNU Manual," and with the Back-Cover Texts as in (a) - below. A copy of the license is included in the section entitled - "GNU Free Documentation License." - - (a) The FSF's Back-Cover Text is: "You have freedom to copy and - modify this GNU Manual, like GNU software. Copies published by - the Free Software Foundation raise funds for GNU development." - -INFO-DIR-SECTION Individual utilities -START-INFO-DIR-ENTRY -* cmp: (diff)Invoking cmp. Compare 2 files byte by byte. -* diff: (diff)Invoking diff. Compare 2 files line by line. -* diff3: (diff)Invoking diff3. Compare 3 files line by line. -* patch: (diff)Invoking patch. Apply a patch to a file. -* sdiff: (diff)Invoking sdiff. Merge 2 files side-by-side. -END-INFO-DIR-ENTRY - -INFO-DIR-SECTION GNU packages -START-INFO-DIR-ENTRY -* Diff: (diff). Comparing and merging files. -END-INFO-DIR-ENTRY - - -File: diff.info, Node: Top, Next: Overview, Up: (dir) - -Comparing and Merging Files -*************************** - -This manual is for GNU Diffutils (version 2.8.1, 5 April 2002), and -documents the GNU `diff', `diff3', `sdiff', and `cmp' commands for -showing the differences between files and the GNU `patch' command for -using their output to update files. - - Copyright (C) 1992, 1993, 1994, 1998, 2001, 2002 Free Software -Foundation, Inc. - - Permission is granted to copy, distribute and/or modify this - document under the terms of the GNU Free Documentation License, - Version 1.1 or any later version published by the Free Software - Foundation; with no Invariant Sections, with the Front-Cover texts - being "A GNU Manual," and with the Back-Cover Texts as in (a) - below. A copy of the license is included in the section entitled - "GNU Free Documentation License." - - (a) The FSF's Back-Cover Text is: "You have freedom to copy and - modify this GNU Manual, like GNU software. Copies published by - the Free Software Foundation raise funds for GNU development." - -* Menu: - -* Overview:: Preliminary information. -* Comparison:: What file comparison means. - -* Output Formats:: Formats for two-way difference reports. -* Incomplete Lines:: Lines that lack trailing newlines. -* Comparing Directories:: Comparing files and directories. -* Adjusting Output:: Making `diff' output prettier. -* diff Performance:: Making `diff' smarter or faster. - -* Comparing Three Files:: Formats for three-way difference reports. -* diff3 Merging:: Merging from a common ancestor. - -* Interactive Merging:: Interactive merging with `sdiff'. - -* Merging with patch:: Using `patch' to change old files into new ones. -* Making Patches:: Tips for making and using patch distributions. - -* Invoking cmp:: Compare two files byte by byte. -* Invoking diff:: Compare two files line by line. -* Invoking diff3:: Compare three files line by line. -* Invoking patch:: Apply a diff file to an original. -* Invoking sdiff:: Side-by-side merge of file differences. - -* Standards conformance:: Conformance to the POSIX standard. -* Projects:: If you've found a bug or other shortcoming. - -* Copying This Manual:: How to make copies of this manual. -* Index:: Index. - - -File: diff.info, Node: Overview, Next: Comparison, Prev: Top, Up: Top - -Overview -******** - - Computer users often find occasion to ask how two files differ. -Perhaps one file is a newer version of the other file. Or maybe the -two files started out as identical copies but were changed by different -people. - - You can use the `diff' command to show differences between two -files, or each corresponding file in two directories. `diff' outputs -differences between files line by line in any of several formats, -selectable by command line options. This set of differences is often -called a "diff" or "patch". For files that are identical, `diff' -normally produces no output; for binary (non-text) files, `diff' -normally reports only that they are different. - - You can use the `cmp' command to show the byte and line numbers -where two files differ. `cmp' can also show all the bytes that differ -between the two files, side by side. A way to compare two files -character by character is the Emacs command `M-x compare-windows'. -*Note Other Window: (emacs)Other Window, for more information on that -command. - - You can use the `diff3' command to show differences among three -files. When two people have made independent changes to a common -original, `diff3' can report the differences between the original and -the two changed versions, and can produce a merged file that contains -both persons' changes together with warnings about conflicts. - - You can use the `sdiff' command to merge two files interactively. - - You can use the set of differences produced by `diff' to distribute -updates to text files (such as program source code) to other people. -This method is especially useful when the differences are small compared -to the complete files. Given `diff' output, you can use the `patch' -program to update, or "patch", a copy of the file. If you think of -`diff' as subtracting one file from another to produce their -difference, you can think of `patch' as adding the difference to one -file to reproduce the other. - - This manual first concentrates on making diffs, and later shows how -to use diffs to update files. - - GNU `diff' was written by Paul Eggert, Mike Haertel, David Hayes, -Richard Stallman, and Len Tower. Wayne Davison designed and -implemented the unified output format. The basic algorithm is described -in "An O(ND) Difference Algorithm and its Variations", Eugene W. Myers, -`Algorithmica' Vol. 1 No. 2, 1986, pp. 251-266; and in "A File -Comparison Program", Webb Miller and Eugene W. Myers, -`Software--Practice and Experience' Vol. 15 No. 11, 1985, pp. 1025-1040. -The algorithm was independently discovered as described in "Algorithms -for Approximate String Matching", E. Ukkonen, `Information and Control' -Vol. 64, 1985, pp. 100-118. - - GNU `diff3' was written by Randy Smith. GNU `sdiff' was written by -Thomas Lord. GNU `cmp' was written by Torbjorn Granlund and David -MacKenzie. - - `patch' was written mainly by Larry Wall and Paul Eggert; several -GNU enhancements were contributed by Wayne Davison and David MacKenzie. -Parts of this manual are adapted from a manual page written by Larry -Wall, with his permission. - - -File: diff.info, Node: Comparison, Next: Output Formats, Prev: Overview, Up: Top - -What Comparison Means -********************* - - There are several ways to think about the differences between two -files. One way to think of the differences is as a series of lines -that were deleted from, inserted in, or changed in one file to produce -the other file. `diff' compares two files line by line, finds groups of -lines that differ, and reports each group of differing lines. It can -report the differing lines in several formats, which have different -purposes. - - GNU `diff' can show whether files are different without detailing -the differences. It also provides ways to suppress certain kinds of -differences that are not important to you. Most commonly, such -differences are changes in the amount of white space between words or -lines. `diff' also provides ways to suppress differences in alphabetic -case or in lines that match a regular expression that you provide. -These options can accumulate; for example, you can ignore changes in -both white space and alphabetic case. - - Another way to think of the differences between two files is as a -sequence of pairs of bytes that can be either identical or different. -`cmp' reports the differences between two files byte by byte, instead -of line by line. As a result, it is often more useful than `diff' for -comparing binary files. For text files, `cmp' is useful mainly when -you want to know only whether two files are identical, or whether one -file is a prefix of the other. - - To illustrate the effect that considering changes byte by byte can -have compared with considering them line by line, think of what happens -if a single newline character is added to the beginning of a file. If -that file is then compared with an otherwise identical file that lacks -the newline at the beginning, `diff' will report that a blank line has -been added to the file, while `cmp' will report that almost every byte -of the two files differs. - - `diff3' normally compares three input files line by line, finds -groups of lines that differ, and reports each group of differing lines. -Its output is designed to make it easy to inspect two different sets of -changes to the same file. - -* Menu: - -* Hunks:: Groups of differing lines. -* White Space:: Suppressing differences in white space. -* Blank Lines:: Suppressing differences in blank lines. -* Case Folding:: Suppressing differences in alphabetic case. -* Specified Folding:: Suppressing differences that match regular expressions. -* Brief:: Summarizing which files are different. -* Binary:: Comparing binary files or forcing text comparisons. - - -File: diff.info, Node: Hunks, Next: White Space, Up: Comparison - -Hunks -===== - - When comparing two files, `diff' finds sequences of lines common to -both files, interspersed with groups of differing lines called "hunks". -Comparing two identical files yields one sequence of common lines and -no hunks, because no lines differ. Comparing two entirely different -files yields no common lines and one large hunk that contains all lines -of both files. In general, there are many ways to match up lines -between two given files. `diff' tries to minimize the total hunk size -by finding large sequences of common lines interspersed with small -hunks of differing lines. - - For example, suppose the file `F' contains the three lines `a', `b', -`c', and the file `G' contains the same three lines in reverse order -`c', `b', `a'. If `diff' finds the line `c' as common, then the command -`diff F G' produces this output: - - 1,2d0 - < a - < b - 3a2,3 - > b - > a - -But if `diff' notices the common line `b' instead, it produces this -output: - - 1c1 - < a - --- - > c - 3c3 - < c - --- - > a - -It is also possible to find `a' as the common line. `diff' does not -always find an optimal matching between the files; it takes shortcuts -to run faster. But its output is usually close to the shortest -possible. You can adjust this tradeoff with the `--minimal' option -(*note diff Performance::). - - -File: diff.info, Node: White Space, Next: Blank Lines, Prev: Hunks, Up: Comparison - -Suppressing Differences in Blank and Tab Spacing -================================================ - - The `-E' and `--ignore-tab-expansion' options ignore the distinction -between tabs and spaces on input. A tab is considered to be equivalent -to the number of spaces to the next tab stop. `diff' assumes that tab -stops are set every 8 print columns. - - The `-b' and `--ignore-space-change' options are stronger. They -ignore white space at line end, and consider all other sequences of one -or more white space characters to be equivalent. With these options, -`diff' considers the following two lines to be equivalent, where `$' -denotes the line end: - - Here lyeth muche rychnesse in lytell space. -- John Heywood$ - Here lyeth muche rychnesse in lytell space. -- John Heywood $ - - The `-w' and `--ignore-all-space' options are stronger still. They -ignore difference even if one line has white space where the other line -has none. "White space" characters include tab, newline, vertical tab, -form feed, carriage return, and space; some locales may define -additional characters to be white space. With these options, `diff' -considers the following two lines to be equivalent, where `$' denotes -the line end and `^M' denotes a carriage return: - - Here lyeth muche rychnesse in lytell space.-- John Heywood$ - He relyeth much erychnes seinly tells pace. --John Heywood ^M$ - - -File: diff.info, Node: Blank Lines, Next: Case Folding, Prev: White Space, Up: Comparison - -Suppressing Differences in Blank Lines -====================================== - - The `-B' and `--ignore-blank-lines' options ignore insertions or -deletions of blank lines. These options affect only lines that are -completely empty; they do not affect lines that look empty but contain -space or tab characters. With these options, for example, a file -containing - 1. A point is that which has no part. - - 2. A line is breadthless length. - -- Euclid, The Elements, I - -is considered identical to a file containing - 1. A point is that which has no part. - 2. A line is breadthless length. - - - -- Euclid, The Elements, I - - -File: diff.info, Node: Case Folding, Next: Specified Folding, Prev: Blank Lines, Up: Comparison - -Suppressing Case Differences -============================ - - GNU `diff' can treat lower case letters as equivalent to their upper -case counterparts, so that, for example, it considers `Funky Stuff', -`funky STUFF', and `fUNKy stuFf' to all be the same. To request this, -use the `-i' or `--ignore-case' option. - - -File: diff.info, Node: Specified Folding, Next: Brief, Prev: Case Folding, Up: Comparison - -Suppressing Lines Matching a Regular Expression -=============================================== - - To ignore insertions and deletions of lines that match a -`grep'-style regular expression, use the `-I REGEXP' or -`--ignore-matching-lines=REGEXP' option. You should escape regular -expressions that contain shell metacharacters to prevent the shell from -expanding them. For example, `diff -I '^[[:digit:]]'' ignores all -changes to lines beginning with a digit. - - However, `-I' only ignores the insertion or deletion of lines that -contain the regular expression if every changed line in the hunk--every -insertion and every deletion--matches the regular expression. In other -words, for each nonignorable change, `diff' prints the complete set of -changes in its vicinity, including the ignorable ones. - - You can specify more than one regular expression for lines to ignore -by using more than one `-I' option. `diff' tries to match each line -against each regular expression. - - -File: diff.info, Node: Brief, Next: Binary, Prev: Specified Folding, Up: Comparison - -Summarizing Which Files Differ -============================== - - When you only want to find out whether files are different, and you -don't care what the differences are, you can use the summary output -format. In this format, instead of showing the differences between the -files, `diff' simply reports whether files differ. The `-q' and -`--brief' options select this output format. - - This format is especially useful when comparing the contents of two -directories. It is also much faster than doing the normal line by line -comparisons, because `diff' can stop analyzing the files as soon as it -knows that there are any differences. - - You can also get a brief indication of whether two files differ by -using `cmp'. For files that are identical, `cmp' produces no output. -When the files differ, by default, `cmp' outputs the byte and line -number where the first difference occurs. You can use the `-s' option -to suppress that information, so that `cmp' produces no output and -reports whether the files differ using only its exit status (*note -Invoking cmp::). - - Unlike `diff', `cmp' cannot compare directories; it can only compare -two files. - - -File: diff.info, Node: Binary, Prev: Brief, Up: Comparison - -Binary Files and Forcing Text Comparisons -========================================= - - If `diff' thinks that either of the two files it is comparing is -binary (a non-text file), it normally treats that pair of files much as -if the summary output format had been selected (*note Brief::), and -reports only that the binary files are different. This is because line -by line comparisons are usually not meaningful for binary files. - - `diff' determines whether a file is text or binary by checking the -first few bytes in the file; the exact number of bytes is system -dependent, but it is typically several thousand. If every byte in that -part of the file is non-null, `diff' considers the file to be text; -otherwise it considers the file to be binary. - - Sometimes you might want to force `diff' to consider files to be -text. For example, you might be comparing text files that contain null -characters; `diff' would erroneously decide that those are non-text -files. Or you might be comparing documents that are in a format used -by a word processing system that uses null characters to indicate -special formatting. You can force `diff' to consider all files to be -text files, and compare them line by line, by using the `-a' or -`--text' option. If the files you compare using this option do not in -fact contain text, they will probably contain few newline characters, -and the `diff' output will consist of hunks showing differences between -long lines of whatever characters the files contain. - - You can also force `diff' to consider all files to be binary files, -and report only whether they differ (but not how). Use the `-q' or -`--brief' option for this. - - Differing binary files are considered to cause trouble because the -resulting `diff' output does not capture all the differences. This -trouble causes `diff' to exit with status 2. However, this trouble -cannot occur with the `--a' or `--text' option, or with the `-q' or -`--brief' option, as these options both cause `diff' to treat binary -files like text files. - - In operating systems that distinguish between text and binary files, -`diff' normally reads and writes all data as text. Use the `--binary' -option to force `diff' to read and write binary data instead. This -option has no effect on a POSIX-compliant system like GNU or -traditional Unix. However, many personal computer operating systems -represent the end of a line with a carriage return followed by a -newline. On such systems, `diff' normally ignores these carriage -returns on input and generates them at the end of each output line, but -with the `--binary' option `diff' treats each carriage return as just -another input character, and does not generate a carriage return at the -end of each output line. This can be useful when dealing with non-text -files that are meant to be interchanged with POSIX-compliant systems. - - The `--strip-trailing-cr' causes `diff' to treat input lines that -end in carriage return followed by newline as if they end in plain -newline. This can be useful when comparing text that is imperfectly -imported from many personal computer operating systems. This option -affects how lines are read, which in turn affects how they are compared -and output. - - If you want to compare two files byte by byte, you can use the `cmp' -program with the `-l' option to show the values of each differing byte -in the two files. With GNU `cmp', you can also use the `-b' option to -show the ASCII representation of those bytes. *Note Invoking cmp::, -for more information. - - If `diff3' thinks that any of the files it is comparing is binary (a -non-text file), it normally reports an error, because such comparisons -are usually not useful. `diff3' uses the same test as `diff' to decide -whether a file is binary. As with `diff', if the input files contain a -few non-text bytes but otherwise are like text files, you can force -`diff3' to consider all files to be text files and compare them line by -line by using the `-a' or `--text' options. - - -File: diff.info, Node: Output Formats, Next: Incomplete Lines, Prev: Comparison, Up: Top - -`diff' Output Formats -********************* - - `diff' has several mutually exclusive options for output format. -The following sections describe each format, illustrating how `diff' -reports the differences between two sample input files. - -* Menu: - -* Sample diff Input:: Sample `diff' input files for examples. -* Normal:: Showing differences without surrounding text. -* Context:: Showing differences with the surrounding text. -* Side by Side:: Showing differences in two columns. -* Scripts:: Generating scripts for other programs. -* If-then-else:: Merging files with if-then-else. - - -File: diff.info, Node: Sample diff Input, Next: Normal, Up: Output Formats - -Two Sample Input Files -====================== - - Here are two sample files that we will use in numerous examples to -illustrate the output of `diff' and how various options can change it. - - This is the file `lao': - - The Way that can be told of is not the eternal Way; - The name that can be named is not the eternal name. - The Nameless is the origin of Heaven and Earth; - The Named is the mother of all things. - Therefore let there always be non-being, - so we may see their subtlety, - And let there always be being, - so we may see their outcome. - The two are the same, - But after they are produced, - they have different names. - - This is the file `tzu': - - The Nameless is the origin of Heaven and Earth; - The named is the mother of all things. - - Therefore let there always be non-being, - so we may see their subtlety, - And let there always be being, - so we may see their outcome. - The two are the same, - But after they are produced, - they have different names. - They both may be called deep and profound. - Deeper and more profound, - The door of all subtleties! - - In this example, the first hunk contains just the first two lines of -`lao', the second hunk contains the fourth line of `lao' opposing the -second and third lines of `tzu', and the last hunk contains just the -last three lines of `tzu'. - - -File: diff.info, Node: Normal, Next: Context, Prev: Sample diff Input, Up: Output Formats - -Showing Differences Without Context -=================================== - - The "normal" `diff' output format shows each hunk of differences -without any surrounding context. Sometimes such output is the clearest -way to see how lines have changed, without the clutter of nearby -unchanged lines (although you can get similar results with the context -or unified formats by using 0 lines of context). However, this format -is no longer widely used for sending out patches; for that purpose, the -context format (*note Context Format::) and the unified format (*note -Unified Format::) are superior. Normal format is the default for -compatibility with older versions of `diff' and the POSIX standard. -Use the `--normal' option to select this output format explicitly. - -* Menu: - -* Detailed Normal:: A detailed description of normal output format. -* Example Normal:: Sample output in the normal format. - - -File: diff.info, Node: Detailed Normal, Next: Example Normal, Up: Normal - -Detailed Description of Normal Format -------------------------------------- - - The normal output format consists of one or more hunks of -differences; each hunk shows one area where the files differ. Normal -format hunks look like this: - - CHANGE-COMMAND - < FROM-FILE-LINE - < FROM-FILE-LINE... - --- - > TO-FILE-LINE - > TO-FILE-LINE... - - There are three types of change commands. Each consists of a line -number or comma-separated range of lines in the first file, a single -character indicating the kind of change to make, and a line number or -comma-separated range of lines in the second file. All line numbers are -the original line numbers in each file. The types of change commands -are: - -`LaR' - Add the lines in range R of the second file after line L of the - first file. For example, `8a12,15' means append lines 12-15 of - file 2 after line 8 of file 1; or, if changing file 2 into file 1, - delete lines 12-15 of file 2. - -`FcT' - Replace the lines in range F of the first file with lines in range - T of the second file. This is like a combined add and delete, but - more compact. For example, `5,7c8,10' means change lines 5-7 of - file 1 to read as lines 8-10 of file 2; or, if changing file 2 into - file 1, change lines 8-10 of file 2 to read as lines 5-7 of file 1. - -`RdL' - Delete the lines in range R from the first file; line L is where - they would have appeared in the second file had they not been - deleted. For example, `5,7d3' means delete lines 5-7 of file 1; - or, if changing file 2 into file 1, append lines 5-7 of file 1 - after line 3 of file 2. - - -File: diff.info, Node: Example Normal, Prev: Detailed Normal, Up: Normal - -An Example of Normal Format ---------------------------- - - Here is the output of the command `diff lao tzu' (*note Sample diff -Input::, for the complete contents of the two files). Notice that it -shows only the lines that are different between the two files. - - 1,2d0 - < The Way that can be told of is not the eternal Way; - < The name that can be named is not the eternal name. - 4c2,3 - < The Named is the mother of all things. - --- - > The named is the mother of all things. - > - 11a11,13 - > They both may be called deep and profound. - > Deeper and more profound, - > The door of all subtleties! - - -File: diff.info, Node: Context, Next: Side by Side, Prev: Normal, Up: Output Formats - -Showing Differences in Their Context -==================================== - - Usually, when you are looking at the differences between files, you -will also want to see the parts of the files near the lines that -differ, to help you understand exactly what has changed. These nearby -parts of the files are called the "context". - - GNU `diff' provides two output formats that show context around the -differing lines: "context format" and "unified format". It can -optionally show in which function or section of the file the differing -lines are found. - - If you are distributing new versions of files to other people in the -form of `diff' output, you should use one of the output formats that -show context so that they can apply the diffs even if they have made -small changes of their own to the files. `patch' can apply the diffs -in this case by searching in the files for the lines of context around -the differing lines; if those lines are actually a few lines away from -where the diff says they are, `patch' can adjust the line numbers -accordingly and still apply the diff correctly. *Note Imperfect::, for -more information on using `patch' to apply imperfect diffs. - -* Menu: - -* Context Format:: An output format that shows surrounding lines. -* Unified Format:: A more compact output format that shows context. -* Sections:: Showing which sections of the files differences are in. -* Alternate Names:: Showing alternate file names in context headers. - - -File: diff.info, Node: Context Format, Next: Unified Format, Up: Context - -Context Format --------------- - - The context output format shows several lines of context around the -lines that differ. It is the standard format for distributing updates -to source code. - - To select this output format, use the `-C LINES', -`--context[=LINES]', or `-c' option. The argument LINES that some of -these options take is the number of lines of context to show. If you -do not specify LINES, it defaults to three. For proper operation, -`patch' typically needs at least two lines of context. - -* Menu: - -* Detailed Context:: A detailed description of the context output format. -* Example Context:: Sample output in context format. -* Less Context:: Another sample with less context. - - -File: diff.info, Node: Detailed Context, Next: Example Context, Up: Context Format - -Detailed Description of Context Format -...................................... - - The context output format starts with a two-line header, which looks -like this: - - *** FROM-FILE FROM-FILE-MODIFICATION-TIME - --- TO-FILE TO-FILE-MODIFICATION TIME - -The time stamp normally looks like `2002-02-21 23:30:39.942229878 --0800' to indicate the date, time with fractional seconds, and time -zone in Internet RFC 2822 format -(ftp://ftp.isi.edu/in-notes/rfc2822.txt). However, a traditional time -stamp like `Thu Feb 21 23:30:39 2002' is used if the `LC_TIME' locale -category is either `C' or `POSIX'. - - You can change the header's content with the `--label=LABEL' option; -see *Note Alternate Names::. - - Next come one or more hunks of differences; each hunk shows one area -where the files differ. Context format hunks look like this: - - *************** - *** FROM-FILE-LINE-RANGE **** - FROM-FILE-LINE - FROM-FILE-LINE... - --- TO-FILE-LINE-RANGE ---- - TO-FILE-LINE - TO-FILE-LINE... - - The lines of context around the lines that differ start with two -space characters. The lines that differ between the two files start -with one of the following indicator characters, followed by a space -character: - -`!' - A line that is part of a group of one or more lines that changed - between the two files. There is a corresponding group of lines - marked with `!' in the part of this hunk for the other file. - -`+' - An "inserted" line in the second file that corresponds to nothing - in the first file. - -`-' - A "deleted" line in the first file that corresponds to nothing in - the second file. - - If all of the changes in a hunk are insertions, the lines of -FROM-FILE are omitted. If all of the changes are deletions, the lines -of TO-FILE are omitted. - - -File: diff.info, Node: Example Context, Next: Less Context, Prev: Detailed Context, Up: Context Format - -An Example of Context Format -............................ - - Here is the output of `diff -c lao tzu' (*note Sample diff Input::, -for the complete contents of the two files). Notice that up to three -lines that are not different are shown around each line that is -different; they are the context lines. Also notice that the first two -hunks have run together, because their contents overlap. - - *** lao 2002-02-21 23:30:39.942229878 -0800 - --- tzu 2002-02-21 23:30:50.442260588 -0800 - *************** - *** 1,7 **** - - The Way that can be told of is not the eternal Way; - - The name that can be named is not the eternal name. - The Nameless is the origin of Heaven and Earth; - ! The Named is the mother of all things. - Therefore let there always be non-being, - so we may see their subtlety, - And let there always be being, - --- 1,6 ---- - The Nameless is the origin of Heaven and Earth; - ! The named is the mother of all things. - ! - Therefore let there always be non-being, - so we may see their subtlety, - And let there always be being, - *************** - *** 9,11 **** - --- 8,13 ---- - The two are the same, - But after they are produced, - they have different names. - + They both may be called deep and profound. - + Deeper and more profound, - + The door of all subtleties! - - -File: diff.info, Node: Less Context, Prev: Example Context, Up: Context Format - -An Example of Context Format with Less Context -.............................................. - - Here is the output of `diff -C 1 lao tzu' (*note Sample diff -Input::, for the complete contents of the two files). Notice that at -most one context line is reported here. - - *** lao 2002-02-21 23:30:39.942229878 -0800 - --- tzu 2002-02-21 23:30:50.442260588 -0800 - *************** - *** 1,5 **** - - The Way that can be told of is not the eternal Way; - - The name that can be named is not the eternal name. - The Nameless is the origin of Heaven and Earth; - ! The Named is the mother of all things. - Therefore let there always be non-being, - --- 1,4 ---- - The Nameless is the origin of Heaven and Earth; - ! The named is the mother of all things. - ! - Therefore let there always be non-being, - *************** - *** 11 **** - --- 10,13 ---- - they have different names. - + They both may be called deep and profound. - + Deeper and more profound, - + The door of all subtleties! - - -File: diff.info, Node: Unified Format, Next: Sections, Prev: Context Format, Up: Context - -Unified Format --------------- - - The unified output format is a variation on the context format that -is more compact because it omits redundant context lines. To select -this output format, use the `-U LINES', `--unified[=LINES]', or `-u' -option. The argument LINES is the number of lines of context to show. -When it is not given, it defaults to three. - - At present, only GNU `diff' can produce this format and only GNU -`patch' can automatically apply diffs in this format. For proper -operation, `patch' typically needs at least three lines of context. - -* Menu: - -* Detailed Unified:: A detailed description of unified format. -* Example Unified:: Sample output in unified format. - - -File: diff.info, Node: Detailed Unified, Next: Example Unified, Up: Unified Format - -Detailed Description of Unified Format -...................................... - - The unified output format starts with a two-line header, which looks -like this: - - --- FROM-FILE FROM-FILE-MODIFICATION-TIME - +++ TO-FILE TO-FILE-MODIFICATION-TIME - -The time stamp looks like `2002-02-21 23:30:39.942229878 -0800' to -indicate the date, time with fractional seconds, and time zone. - - You can change the header's content with the `--label=LABEL' option; -see *Note Alternate Names::. - - Next come one or more hunks of differences; each hunk shows one area -where the files differ. Unified format hunks look like this: - - @@ FROM-FILE-RANGE TO-FILE-RANGE @@ - LINE-FROM-EITHER-FILE - LINE-FROM-EITHER-FILE... - - The lines common to both files begin with a space character. The -lines that actually differ between the two files have one of the -following indicator characters in the left print column: - -`+' - A line was added here to the first file. - -`-' - A line was removed here from the first file. - - -File: diff.info, Node: Example Unified, Prev: Detailed Unified, Up: Unified Format - -An Example of Unified Format -............................ - - Here is the output of the command `diff -u lao tzu' (*note Sample -diff Input::, for the complete contents of the two files): - - --- lao 2002-02-21 23:30:39.942229878 -0800 - +++ tzu 2002-02-21 23:30:50.442260588 -0800 - @@ -1,7 +1,6 @@ - -The Way that can be told of is not the eternal Way; - -The name that can be named is not the eternal name. - The Nameless is the origin of Heaven and Earth; - -The Named is the mother of all things. - +The named is the mother of all things. - + - Therefore let there always be non-being, - so we may see their subtlety, - And let there always be being, - @@ -9,3 +8,6 @@ - The two are the same, - But after they are produced, - they have different names. - +They both may be called deep and profound. - +Deeper and more profound, - +The door of all subtleties! - - -File: diff.info, Node: Sections, Next: Alternate Names, Prev: Unified Format, Up: Context - -Showing Which Sections Differences Are in ------------------------------------------ - - Sometimes you might want to know which part of the files each change -falls in. If the files are source code, this could mean which function -was changed. If the files are documents, it could mean which chapter or -appendix was changed. GNU `diff' can show this by displaying the -nearest section heading line that precedes the differing lines. Which -lines are "section headings" is determined by a regular expression. - -* Menu: - -* Specified Headings:: Showing headings that match regular expressions. -* C Function Headings:: Showing headings of C functions. - - -File: diff.info, Node: Specified Headings, Next: C Function Headings, Up: Sections - -Showing Lines That Match Regular Expressions -............................................ - - To show in which sections differences occur for files that are not -source code for C or similar languages, use the `-F REGEXP' or -`--show-function-line=REGEXP' option. `diff' considers lines that -match the `grep'-style regular expression REGEXP to be the beginning of -a section of the file. Here are suggested regular expressions for some -common languages: - -`^[[:alpha:]$_]' - C, C++, Prolog - -`^(' - Lisp - -`^@node' - Texinfo - - This option does not automatically select an output format; in order -to use it, you must select the context format (*note Context Format::) -or unified format (*note Unified Format::). In other output formats it -has no effect. - - The `-F' and `--show-function-line' options find the nearest -unchanged line that precedes each hunk of differences and matches the -given regular expression. Then they add that line to the end of the -line of asterisks in the context format, or to the `@@' line in unified -format. If no matching line exists, they leave the output for that -hunk unchanged. If that line is more than 40 characters long, they -output only the first 40 characters. You can specify more than one -regular expression for such lines; `diff' tries to match each line -against each regular expression, starting with the last one given. This -means that you can use `-p' and `-F' together, if you wish. - - -File: diff.info, Node: C Function Headings, Prev: Specified Headings, Up: Sections - -Showing C Function Headings -........................... - - To show in which functions differences occur for C and similar -languages, you can use the `-p' or `--show-c-function' option. This -option automatically defaults to the context output format (*note -Context Format::), with the default number of lines of context. You -can override that number with `-C LINES' elsewhere in the command line. -You can override both the format and the number with `-U LINES' -elsewhere in the command line. - - The `-p' and `--show-c-function' options are equivalent to `-F -'^[[:alpha:]$_]'' if the unified format is specified, otherwise `-c -F -'^[[:alpha:]$_]'' (*note Specified Headings::). GNU `diff' provides -them for the sake of convenience. - - -File: diff.info, Node: Alternate Names, Prev: Sections, Up: Context - -Showing Alternate File Names ----------------------------- - - If you are comparing two files that have meaningless or uninformative -names, you might want `diff' to show alternate names in the header of -the context and unified output formats. To do this, use the -`--label=LABEL' option. The first time you give this option, its -argument replaces the name and date of the first file in the header; -the second time, its argument replaces the name and date of the second -file. If you give this option more than twice, `diff' reports an -error. The `--label' option does not affect the file names in the `pr' -header when the `-l' or `--paginate' option is used (*note -Pagination::). - - Here are the first two lines of the output from `diff -C 2 ---label=original --label=modified lao tzu': - - *** original - --- modified - - -File: diff.info, Node: Side by Side, Next: Scripts, Prev: Context, Up: Output Formats - -Showing Differences Side by Side -================================ - - `diff' can produce a side by side difference listing of two files. -The files are listed in two columns with a gutter between them. The -gutter contains one of the following markers: - -white space - The corresponding lines are in common. That is, either the lines - are identical, or the difference is ignored because of one of the - `--ignore' options (*note White Space::). - -`|' - The corresponding lines differ, and they are either both complete - or both incomplete. - -`<' - The files differ and only the first file contains the line. - -`>' - The files differ and only the second file contains the line. - -`(' - Only the first file contains the line, but the difference is - ignored. - -`)' - Only the second file contains the line, but the difference is - ignored. - -`\' - The corresponding lines differ, and only the first line is - incomplete. - -`/' - The corresponding lines differ, and only the second line is - incomplete. - - Normally, an output line is incomplete if and only if the lines that -it contains are incomplete; *Note Incomplete Lines::. However, when an -output line represents two differing lines, one might be incomplete -while the other is not. In this case, the output line is complete, but -its the gutter is marked `\' if the first line is incomplete, `/' if -the second line is. - - Side by side format is sometimes easiest to read, but it has -limitations. It generates much wider output than usual, and truncates -lines that are too long to fit. Also, it relies on lining up output -more heavily than usual, so its output looks particularly bad if you -use varying width fonts, nonstandard tab stops, or nonprinting -characters. - - You can use the `sdiff' command to interactively merge side by side -differences. *Note Interactive Merging::, for more information on -merging files. - -* Menu: - -* Side by Side Format:: Controlling side by side output format. -* Example Side by Side:: Sample side by side output. - - -File: diff.info, Node: Side by Side Format, Next: Example Side by Side, Up: Side by Side - -Controlling Side by Side Format -------------------------------- - - The `-y' or `--side-by-side' option selects side by side format. -Because side by side output lines contain two input lines, the output -is wider than usual: normally 130 print columns, which can fit onto a -traditional printer line. You can set the width of the output with the -`-W COLUMNS' or `--width=COLUMNS' option. The output is split into two -halves of equal width, separated by a small gutter to mark differences; -the right half is aligned to a tab stop so that tabs line up. Input -lines that are too long to fit in half of an output line are truncated -for output. - - The `--left-column' option prints only the left column of two common -lines. The `--suppress-common-lines' option suppresses common lines -entirely. - - -File: diff.info, Node: Example Side by Side, Prev: Side by Side Format, Up: Side by Side - -An Example of Side by Side Format ---------------------------------- - - Here is the output of the command `diff -y -W 72 lao tzu' (*note -Sample diff Input::, for the complete contents of the two files). - - The Way that can be told of is n < - The name that can be named is no < - The Nameless is the origin of He The Nameless is the origin of He - The Named is the mother of all t | The named is the mother of all t - > - Therefore let there always be no Therefore let there always be no - so we may see their subtlety, so we may see their subtlety, - And let there always be being, And let there always be being, - so we may see their outcome. so we may see their outcome. - The two are the same, The two are the same, - But after they are produced, But after they are produced, - they have different names. they have different names. - > They both may be called deep and - > Deeper and more profound, - > The door of all subtleties! - - -File: diff.info, Node: Scripts, Next: If-then-else, Prev: Side by Side, Up: Output Formats - -Making Edit Scripts -=================== - - Several output modes produce command scripts for editing FROM-FILE -to produce TO-FILE. - -* Menu: - -* ed Scripts:: Using `diff' to produce commands for `ed'. -* Forward ed:: Making forward `ed' scripts. -* RCS:: A special `diff' output format used by RCS. - - -File: diff.info, Node: ed Scripts, Next: Forward ed, Up: Scripts - -`ed' Scripts ------------- - - `diff' can produce commands that direct the `ed' text editor to -change the first file into the second file. Long ago, this was the -only output mode that was suitable for editing one file into another -automatically; today, with `patch', it is almost obsolete. Use the -`-e' or `--ed' option to select this output format. - - Like the normal format (*note Normal::), this output format does not -show any context; unlike the normal format, it does not include the -information necessary to apply the diff in reverse (to produce the first -file if all you have is the second file and the diff). - - If the file `d' contains the output of `diff -e old new', then the -command `(cat d && echo w) | ed - old' edits `old' to make it a copy of -`new'. More generally, if `d1', `d2', ..., `dN' contain the outputs of -`diff -e old new1', `diff -e new1 new2', ..., `diff -e newN-1 newN', -respectively, then the command `(cat d1 d2 ... dN && echo w) | ed - -old' edits `old' to make it a copy of `newN'. - -* Menu: - -* Detailed ed:: A detailed description of `ed' format. -* Example ed:: A sample `ed' script. - - -File: diff.info, Node: Detailed ed, Next: Example ed, Up: ed Scripts - -Detailed Description of `ed' Format -................................... - - The `ed' output format consists of one or more hunks of differences. -The changes closest to the ends of the files come first so that -commands that change the number of lines do not affect how `ed' -interprets line numbers in succeeding commands. `ed' format hunks look -like this: - - CHANGE-COMMAND - TO-FILE-LINE - TO-FILE-LINE... - . - - Because `ed' uses a single period on a line to indicate the end of -input, GNU `diff' protects lines of changes that contain a single -period on a line by writing two periods instead, then writing a -subsequent `ed' command to change the two periods into one. The `ed' -format cannot represent an incomplete line, so if the second file ends -in a changed incomplete line, `diff' reports an error and then pretends -that a newline was appended. - - There are three types of change commands. Each consists of a line -number or comma-separated range of lines in the first file and a single -character indicating the kind of change to make. All line numbers are -the original line numbers in the file. The types of change commands -are: - -`La' - Add text from the second file after line L in the first file. For - example, `8a' means to add the following lines after line 8 of file - 1. - -`Rc' - Replace the lines in range R in the first file with the following - lines. Like a combined add and delete, but more compact. For - example, `5,7c' means change lines 5-7 of file 1 to read as the - text file 2. - -`Rd' - Delete the lines in range R from the first file. For example, - `5,7d' means delete lines 5-7 of file 1. - - -File: diff.info, Node: Example ed, Prev: Detailed ed, Up: ed Scripts - -Example `ed' Script -................... - - Here is the output of `diff -e lao tzu' (*note Sample diff Input::, -for the complete contents of the two files): - - 11a - They both may be called deep and profound. - Deeper and more profound, - The door of all subtleties! - . - 4c - The named is the mother of all things. - - . - 1,2d - - -File: diff.info, Node: Forward ed, Next: RCS, Prev: ed Scripts, Up: Scripts - -Forward `ed' Scripts --------------------- - - `diff' can produce output that is like an `ed' script, but with -hunks in forward (front to back) order. The format of the commands is -also changed slightly: command characters precede the lines they -modify, spaces separate line numbers in ranges, and no attempt is made -to disambiguate hunk lines consisting of a single period. Like `ed' -format, forward `ed' format cannot represent incomplete lines. - - Forward `ed' format is not very useful, because neither `ed' nor -`patch' can apply diffs in this format. It exists mainly for -compatibility with older versions of `diff'. Use the `-f' or -`--forward-ed' option to select it. - - -File: diff.info, Node: RCS, Prev: Forward ed, Up: Scripts - -RCS Scripts ------------ - - The RCS output format is designed specifically for use by the -Revision Control System, which is a set of free programs used for -organizing different versions and systems of files. Use the `-n' or -`--rcs' option to select this output format. It is like the forward -`ed' format (*note Forward ed::), but it can represent arbitrary -changes to the contents of a file because it avoids the forward `ed' -format's problems with lines consisting of a single period and with -incomplete lines. Instead of ending text sections with a line -consisting of a single period, each command specifies the number of -lines it affects; a combination of the `a' and `d' commands are used -instead of `c'. Also, if the second file ends in a changed incomplete -line, then the output also ends in an incomplete line. - - Here is the output of `diff -n lao tzu' (*note Sample diff Input::, -for the complete contents of the two files): - - d1 2 - d4 1 - a4 2 - The named is the mother of all things. - - a11 3 - They both may be called deep and profound. - Deeper and more profound, - The door of all subtleties! - - -File: diff.info, Node: If-then-else, Prev: Scripts, Up: Output Formats - -Merging Files with If-then-else -=============================== - - You can use `diff' to merge two files of C source code. The output -of `diff' in this format contains all the lines of both files. Lines -common to both files are output just once; the differing parts are -separated by the C preprocessor directives `#ifdef NAME' or `#ifndef -NAME', `#else', and `#endif'. When compiling the output, you select -which version to use by either defining or leaving undefined the macro -NAME. - - To merge two files, use `diff' with the `-D NAME' or `--ifdef=NAME' -option. The argument NAME is the C preprocessor identifier to use in -the `#ifdef' and `#ifndef' directives. - - For example, if you change an instance of `wait (&s)' to `waitpid -(-1, &s, 0)' and then merge the old and new files with the -`--ifdef=HAVE_WAITPID' option, then the affected part of your code -might look like this: - - do { - #ifndef HAVE_WAITPID - if ((w = wait (&s)) < 0 && errno != EINTR) - #else /* HAVE_WAITPID */ - if ((w = waitpid (-1, &s, 0)) < 0 && errno != EINTR) - #endif /* HAVE_WAITPID */ - return w; - } while (w != child); - - You can specify formats for languages other than C by using line -group formats and line formats, as described in the next sections. - -* Menu: - -* Line Group Formats:: Formats for general if-then-else line groups. -* Line Formats:: Formats for each line in a line group. -* Detailed If-then-else:: A detailed description of if-then-else format. -* Example If-then-else:: Sample if-then-else format output. - - -File: diff.info, Node: Line Group Formats, Next: Line Formats, Up: If-then-else - -Line Group Formats ------------------- - - Line group formats let you specify formats suitable for many -applications that allow if-then-else input, including programming -languages and text formatting languages. A line group format specifies -the output format for a contiguous group of similar lines. - - For example, the following command compares the TeX files `old' and -`new', and outputs a merged file in which old regions are surrounded by -`\begin{em}'-`\end{em}' lines, and new regions are surrounded by -`\begin{bf}'-`\end{bf}' lines. - - diff \ - --old-group-format='\begin{em} - %<\end{em} - ' \ - --new-group-format='\begin{bf} - %>\end{bf} - ' \ - old new - - The following command is equivalent to the above example, but it is a -little more verbose, because it spells out the default line group -formats. - - diff \ - --old-group-format='\begin{em} - %<\end{em} - ' \ - --new-group-format='\begin{bf} - %>\end{bf} - ' \ - --unchanged-group-format='%=' \ - --changed-group-format='\begin{em} - %<\end{em} - \begin{bf} - %>\end{bf} - ' \ - old new - - Here is a more advanced example, which outputs a diff listing with -headers containing line numbers in a "plain English" style. - - diff \ - --unchanged-group-format='' \ - --old-group-format='-------- %dn line%(n=1?:s) deleted at %df: - %<' \ - --new-group-format='-------- %dN line%(N=1?:s) added after %de: - %>' \ - --changed-group-format='-------- %dn line%(n=1?:s) changed at %df: - %<-------- to: - %>' \ - old new - - To specify a line group format, use `diff' with one of the options -listed below. You can specify up to four line group formats, one for -each kind of line group. You should quote FORMAT, because it typically -contains shell metacharacters. - -`--old-group-format=FORMAT' - These line groups are hunks containing only lines from the first - file. The default old group format is the same as the changed - group format if it is specified; otherwise it is a format that - outputs the line group as-is. - -`--new-group-format=FORMAT' - These line groups are hunks containing only lines from the second - file. The default new group format is same as the changed group - format if it is specified; otherwise it is a format that outputs - the line group as-is. - -`--changed-group-format=FORMAT' - These line groups are hunks containing lines from both files. The - default changed group format is the concatenation of the old and - new group formats. - -`--unchanged-group-format=FORMAT' - These line groups contain lines common to both files. The default - unchanged group format is a format that outputs the line group - as-is. - - In a line group format, ordinary characters represent themselves; -conversion specifications start with `%' and have one of the following -forms. - -`%<' - stands for the lines from the first file, including the trailing - newline. Each line is formatted according to the old line format - (*note Line Formats::). - -`%>' - stands for the lines from the second file, including the trailing - newline. Each line is formatted according to the new line format. - -`%=' - stands for the lines common to both files, including the trailing - newline. Each line is formatted according to the unchanged line - format. - -`%%' - stands for `%'. - -`%c'C'' - where C is a single character, stands for C. C may not be a - backslash or an apostrophe. For example, `%c':'' stands for a - colon, even inside the then-part of an if-then-else format, which - a colon would normally terminate. - -`%c'\O'' - where O is a string of 1, 2, or 3 octal digits, stands for the - character with octal code O. For example, `%c'\0'' stands for a - null character. - -`FN' - where F is a `printf' conversion specification and N is one of the - following letters, stands for N's value formatted with F. - - `e' - The line number of the line just before the group in the old - file. - - `f' - The line number of the first line in the group in the old - file; equals E + 1. - - `l' - The line number of the last line in the group in the old file. - - `m' - The line number of the line just after the group in the old - file; equals L + 1. - - `n' - The number of lines in the group in the old file; equals L - - F + 1. - - `E, F, L, M, N' - Likewise, for lines in the new file. - - The `printf' conversion specification can be `%d', `%o', `%x', or - `%X', specifying decimal, octal, lower case hexadecimal, or upper - case hexadecimal output respectively. After the `%' the following - options can appear in sequence: a series of zero or more flags; an - integer specifying the minimum field width; and a period followed - by an optional integer specifying the minimum number of digits. - The flags are `-' for left-justification, `'' for separating the - digit into groups as specified by the `LC_NUMERIC' locale category, - and `0' for padding with zeros instead of spaces. For example, - `%5dN' prints the number of new lines in the group in a field of - width 5 characters, using the `printf' format `"%5d"'. - -`(A=B?T:E)' - If A equals B then T else E. A and B are each either a decimal - constant or a single letter interpreted as above. This format - spec is equivalent to T if A's value equals B's; otherwise it is - equivalent to E. - - For example, `%(N=0?no:%dN) line%(N=1?:s)' is equivalent to `no - lines' if N (the number of lines in the group in the the new file) - is 0, to `1 line' if N is 1, and to `%dN lines' otherwise. - - -File: diff.info, Node: Line Formats, Next: Detailed If-then-else, Prev: Line Group Formats, Up: If-then-else - -Line Formats ------------- - - Line formats control how each line taken from an input file is -output as part of a line group in if-then-else format. - - For example, the following command outputs text with a one-character -change indicator to the left of the text. The first character of output -is `-' for deleted lines, `|' for added lines, and a space for -unchanged lines. The formats contain newline characters where newlines -are desired on output. - - diff \ - --old-line-format='-%l - ' \ - --new-line-format='|%l - ' \ - --unchanged-line-format=' %l - ' \ - old new - - To specify a line format, use one of the following options. You -should quote FORMAT, since it often contains shell metacharacters. - -`--old-line-format=FORMAT' - formats lines just from the first file. - -`--new-line-format=FORMAT' - formats lines just from the second file. - -`--unchanged-line-format=FORMAT' - formats lines common to both files. - -`--line-format=FORMAT' - formats all lines; in effect, it sets all three above options - simultaneously. - - In a line format, ordinary characters represent themselves; -conversion specifications start with `%' and have one of the following -forms. - -`%l' - stands for the contents of the line, not counting its trailing - newline (if any). This format ignores whether the line is - incomplete; *Note Incomplete Lines::. - -`%L' - stands for the contents of the line, including its trailing newline - (if any). If a line is incomplete, this format preserves its - incompleteness. - -`%%' - stands for `%'. - -`%c'C'' - where C is a single character, stands for C. C may not be a - backslash or an apostrophe. For example, `%c':'' stands for a - colon. - -`%c'\O'' - where O is a string of 1, 2, or 3 octal digits, stands for the - character with octal code O. For example, `%c'\0'' stands for a - null character. - -`Fn' - where F is a `printf' conversion specification, stands for the - line number formatted with F. For example, `%.5dn' prints the - line number using the `printf' format `"%.5d"'. *Note Line Group - Formats::, for more about printf conversion specifications. - - The default line format is `%l' followed by a newline character. - - If the input contains tab characters and it is important that they -line up on output, you should ensure that `%l' or `%L' in a line format -is just after a tab stop (e.g. by preceding `%l' or `%L' with a tab -character), or you should use the `-t' or `--expand-tabs' option. - - Taken together, the line and line group formats let you specify many -different formats. For example, the following command uses a format -similar to normal `diff' format. You can tailor this command to get -fine control over `diff' output. - - diff \ - --old-line-format='< %l - ' \ - --new-line-format='> %l - ' \ - --old-group-format='%df%(f=l?:,%dl)d%dE - %<' \ - --new-group-format='%dea%dF%(F=L?:,%dL) - %>' \ - --changed-group-format='%df%(f=l?:,%dl)c%dF%(F=L?:,%dL) - %<--- - %>' \ - --unchanged-group-format='' \ - old new - - -File: diff.info, Node: Detailed If-then-else, Next: Example If-then-else, Prev: Line Formats, Up: If-then-else - -Detailed Description of If-then-else Format -------------------------------------------- - - For lines common to both files, `diff' uses the unchanged line group -format. For each hunk of differences in the merged output format, if -the hunk contains only lines from the first file, `diff' uses the old -line group format; if the hunk contains only lines from the second -file, `diff' uses the new group format; otherwise, `diff' uses the -changed group format. - - The old, new, and unchanged line formats specify the output format of -lines from the first file, lines from the second file, and lines common -to both files, respectively. - - The option `--ifdef=NAME' is equivalent to the following sequence of -options using shell syntax: - - --old-group-format='#ifndef NAME - %<#endif /* ! NAME */ - ' \ - --new-group-format='#ifdef NAME - %>#endif /* NAME */ - ' \ - --unchanged-group-format='%=' \ - --changed-group-format='#ifndef NAME - %<#else /* NAME */ - %>#endif /* NAME */ - ' - - You should carefully check the `diff' output for proper nesting. -For example, when using the `-D NAME' or `--ifdef=NAME' option, you -should check that if the differing lines contain any of the C -preprocessor directives `#ifdef', `#ifndef', `#else', `#elif', or -`#endif', they are nested properly and match. If they don't, you must -make corrections manually. It is a good idea to carefully check the -resulting code anyway to make sure that it really does what you want it -to; depending on how the input files were produced, the output might -contain duplicate or otherwise incorrect code. - - The `patch' `-D NAME' option behaves like the `diff' `-D NAME' -option, except it operates on a file and a diff to produce a merged -file; *Note patch Options::. - - -File: diff.info, Node: Example If-then-else, Prev: Detailed If-then-else, Up: If-then-else - -An Example of If-then-else Format ---------------------------------- - - Here is the output of `diff -DTWO lao tzu' (*note Sample diff -Input::, for the complete contents of the two files): - - #ifndef TWO - The Way that can be told of is not the eternal Way; - The name that can be named is not the eternal name. - #endif /* ! TWO */ - The Nameless is the origin of Heaven and Earth; - #ifndef TWO - The Named is the mother of all things. - #else /* TWO */ - The named is the mother of all things. - - #endif /* TWO */ - Therefore let there always be non-being, - so we may see their subtlety, - And let there always be being, - so we may see their outcome. - The two are the same, - But after they are produced, - they have different names. - #ifdef TWO - They both may be called deep and profound. - Deeper and more profound, - The door of all subtleties! - #endif /* TWO */ - - -File: diff.info, Node: Incomplete Lines, Next: Comparing Directories, Prev: Output Formats, Up: Top - -Incomplete Lines -**************** - - When an input file ends in a non-newline character, its last line is -called an "incomplete line" because its last character is not a -newline. All other lines are called "full lines" and end in a newline -character. Incomplete lines do not match full lines unless differences -in white space are ignored (*note White Space::). - - An incomplete line is normally distinguished on output from a full -line by a following line that starts with `\'. However, the RCS format -(*note RCS::) outputs the incomplete line as-is, without any trailing -newline or following line. The side by side format normally represents -incomplete lines as-is, but in some cases uses a `\' or `/' gutter -marker; *Note Side by Side::. The if-then-else line format preserves a -line's incompleteness with `%L', and discards the newline with `%l'; -*Note Line Formats::. Finally, with the `ed' and forward `ed' output -formats (*note Output Formats::) `diff' cannot represent an incomplete -line, so it pretends there was a newline and reports an error. - - For example, suppose `F' and `G' are one-byte files that contain -just `f' and `g', respectively. Then `diff F G' outputs - - 1c1 - < f - \ No newline at end of file - --- - > g - \ No newline at end of file - -(The exact message may differ in non-English locales.) `diff -n F G' -outputs the following without a trailing newline: - - d1 1 - a1 1 - g - -`diff -e F G' reports two errors and outputs the following: - - 1c - g - . - - -File: diff.info, Node: Comparing Directories, Next: Adjusting Output, Prev: Incomplete Lines, Up: Top - -Comparing Directories -********************* - - You can use `diff' to compare some or all of the files in two -directory trees. When both file name arguments to `diff' are -directories, it compares each file that is contained in both -directories, examining file names in alphabetical order as specified by -the `LC_COLLATE' locale category. Normally `diff' is silent about -pairs of files that contain no differences, but if you use the `-s' or -`--report-identical-files' option, it reports pairs of identical files. -Normally `diff' reports subdirectories common to both directories -without comparing subdirectories' files, but if you use the `-r' or -`--recursive' option, it compares every corresponding pair of files in -the directory trees, as many levels deep as they go. - - For file names that are in only one of the directories, `diff' -normally does not show the contents of the file that exists; it reports -only that the file exists in that directory and not in the other. You -can make `diff' act as though the file existed but was empty in the -other directory, so that it outputs the entire contents of the file that -actually exists. (It is output as either an insertion or a deletion, -depending on whether it is in the first or the second directory given.) -To do this, use the `-N' or `--new-file' option. - - If the older directory contains one or more large files that are not -in the newer directory, you can make the patch smaller by using the -`--unidirectional-new-file' option instead of `-N'. This option is -like `-N' except that it only inserts the contents of files that appear -in the second directory but not the first (that is, files that were -added). At the top of the patch, write instructions for the user -applying the patch to remove the files that were deleted before -applying the patch. *Note Making Patches::, for more discussion of -making patches for distribution. - - To ignore some files while comparing directories, use the `-x -PATTERN' or `--exclude=PATTERN' option. This option ignores any files -or subdirectories whose base names match the shell pattern PATTERN. -Unlike in the shell, a period at the start of the base of a file name -matches a wildcard at the start of a pattern. You should enclose -PATTERN in quotes so that the shell does not expand it. For example, -the option `-x '*.[ao]'' ignores any file whose name ends with `.a' or -`.o'. - - This option accumulates if you specify it more than once. For -example, using the options `-x 'RCS' -x '*,v'' ignores any file or -subdirectory whose base name is `RCS' or ends with `,v'. - - If you need to give this option many times, you can instead put the -patterns in a file, one pattern per line, and use the `-X FILE' or -`--exclude-from=FILE' option. - - If you have been comparing two directories and stopped partway -through, later you might want to continue where you left off. You can -do this by using the `-S FILE' or `--starting-file=FILE' option. This -compares only the file FILE and all alphabetically later files in the -topmost directory level. - - If two directories differ only in that file names are lower case in -one directory and upper case in the upper, `diff' normally reports many -differences because it compares file names in a case sensitive way. -With the `--ignore-file-name-case' option, `diff' ignores case -differences in file names, so that for example the contents of the file -`Tao' in one directory are compared to the contents of the file `TAO' -in the other. The `--no-ignore-file-name-case' option cancels the -effect of the `--ignore-file-name-case' option, reverting to the default -behavior. - - If an `-x PATTERN', `--exclude=PATTERN', `-X FILE', or -`--exclude-from=FILE' option is specified while the -`--ignore-file-name-case' option is in effect, case is ignored when -excluding file names matching the specified patterns. - - -File: diff.info, Node: Adjusting Output, Next: diff Performance, Prev: Comparing Directories, Up: Top - -Making `diff' Output Prettier -***************************** - - `diff' provides several ways to adjust the appearance of its output. -These adjustments can be applied to any output format. - -* Menu: - -* Tabs:: Preserving the alignment of tab stops. -* Pagination:: Page numbering and time-stamping `diff' output. - - -File: diff.info, Node: Tabs, Next: Pagination, Up: Adjusting Output - -Preserving Tab Stop Alignment -============================= - - The lines of text in some of the `diff' output formats are preceded -by one or two characters that indicate whether the text is inserted, -deleted, or changed. The addition of those characters can cause tabs to -move to the next tab stop, throwing off the alignment of columns in the -line. GNU `diff' provides two ways to make tab-aligned columns line up -correctly. - - The first way is to have `diff' convert all tabs into the correct -number of spaces before outputting them; select this method with the -`-t' or `--expand-tabs' option. `diff' assumes that tab stops are set -every 8 print columns. To use this form of output with `patch', you -must give `patch' the `-l' or `--ignore-white-space' option (*note -Changed White Space::, for more information). - - The other method for making tabs line up correctly is to add a tab -character instead of a space after the indicator character at the -beginning of the line. This ensures that all following tab characters -are in the same position relative to tab stops that they were in the -original files, so that the output is aligned correctly. Its -disadvantage is that it can make long lines too long to fit on one line -of the screen or the paper. It also does not work with the unified -output format, which does not have a space character after the change -type indicator character. Select this method with the `-T' or -`--initial-tab' option. - - -File: diff.info, Node: Pagination, Prev: Tabs, Up: Adjusting Output - -Paginating `diff' Output -======================== - - It can be convenient to have long output page-numbered and -time-stamped. The `-l' and `--paginate' options do this by sending the -`diff' output through the `pr' program. Here is what the page header -might look like for `diff -lc lao tzu': - - 2002-02-22 14:20 diff -lc lao tzu Page 1 - - -File: diff.info, Node: diff Performance, Next: Comparing Three Files, Prev: Adjusting Output, Up: Top - -`diff' Performance Tradeoffs -**************************** - - GNU `diff' runs quite efficiently; however, in some circumstances -you can cause it to run faster or produce a more compact set of changes. - - One way to improve `diff' performance is to use hard or symbolic -links to files instead of copies. This improves performance because -`diff' normally does not need to read two hard or symbolic links to the -same file, since their contents must be identical. For example, -suppose you copy a large directory hierarchy, make a few changes to the -copy, and then often use `diff -r' to compare the original to the copy. -If the original files are read-only, you can greatly improve -performance by creating the copy using hard or symbolic links (e.g., -with GNU `cp -lR' or `cp -sR'). Before editing a file in the copy for -the first time, you should break the link and replace it with a regular -copy. - - You can also affect the performance of GNU `diff' by giving it -options that change the way it compares files. Performance has more -than one dimension. These options improve one aspect of performance at -the cost of another, or they improve performance in some cases while -hurting it in others. - - The way that GNU `diff' determines which lines have changed always -comes up with a near-minimal set of differences. Usually it is good -enough for practical purposes. If the `diff' output is large, you -might want `diff' to use a modified algorithm that sometimes produces a -smaller set of differences. The `-d' or `--minimal' option does this; -however, it can also cause `diff' to run more slowly than usual, so it -is not the default behavior. - - When the files you are comparing are large and have small groups of -changes scattered throughout them, you can use the -`--speed-large-files' option to make a different modification to the -algorithm that `diff' uses. If the input files have a constant small -density of changes, this option speeds up the comparisons without -changing the output. If not, `diff' might produce a larger set of -differences; however, the output will still be correct. - - Normally `diff' discards the prefix and suffix that is common to -both files before it attempts to find a minimal set of differences. -This makes `diff' run faster, but occasionally it may produce -non-minimal output. The `--horizon-lines=LINES' option prevents `diff' -from discarding the last LINES lines of the prefix and the first LINES -lines of the suffix. This gives `diff' further opportunities to find a -minimal output. - - Suppose a run of changed lines includes a sequence of lines at one -end and there is an identical sequence of lines just outside the other -end. The `diff' command is free to choose which identical sequence is -included in the hunk. In this case, `diff' normally shifts the hunk's -boundaries when this merges adjacent hunks, or shifts a hunk's lines -towards the end of the file. Merging hunks can make the output look -nicer in some cases. - - -File: diff.info, Node: Comparing Three Files, Next: diff3 Merging, Prev: diff Performance, Up: Top - -Comparing Three Files -********************* - - Use the program `diff3' to compare three files and show any -differences among them. (`diff3' can also merge files; see *Note diff3 -Merging::). - - The "normal" `diff3' output format shows each hunk of differences -without surrounding context. Hunks are labeled depending on whether -they are two-way or three-way, and lines are annotated by their -location in the input files. - - *Note Invoking diff3::, for more information on how to run `diff3'. - -* Menu: - -* Sample diff3 Input:: Sample `diff3' input for examples. -* Detailed diff3 Normal:: A detailed description of normal output format. -* diff3 Hunks:: The format of normal output format. -* Example diff3 Normal:: Sample output in the normal format. - - -File: diff.info, Node: Sample diff3 Input, Next: Detailed diff3 Normal, Up: Comparing Three Files - -A Third Sample Input File -========================= - - Here is a third sample file that will be used in examples to -illustrate the output of `diff3' and how various options can change it. -The first two files are the same that we used for `diff' (*note Sample -diff Input::). This is the third sample file, called `tao': - - The Way that can be told of is not the eternal Way; - The name that can be named is not the eternal name. - The Nameless is the origin of Heaven and Earth; - The named is the mother of all things. - - Therefore let there always be non-being, - so we may see their subtlety, - And let there always be being, - so we may see their result. - The two are the same, - But after they are produced, - they have different names. - - -- The Way of Lao-Tzu, tr. Wing-tsit Chan - - -File: diff.info, Node: Detailed diff3 Normal, Next: diff3 Hunks, Prev: Sample diff3 Input, Up: Comparing Three Files - -Detailed Description of `diff3' Normal Format -============================================= - - Each hunk begins with a line marked `===='. Three-way hunks have -plain `====' lines, and two-way hunks have `1', `2', or `3' appended to -specify which of the three input files differ in that hunk. The hunks -contain copies of two or three sets of input lines each preceded by one -or two commands identifying where the lines came from. - - Normally, two spaces precede each copy of an input line to -distinguish it from the commands. But with the `-T' or `--initial-tab' -option, `diff3' uses a tab instead of two spaces; this lines up tabs -correctly. *Note Tabs::, for more information. - - Commands take the following forms: - -`FILE:La' - This hunk appears after line L of file FILE, and contains no lines - in that file. To edit this file to yield the other files, one - must append hunk lines taken from the other files. For example, - `1:11a' means that the hunk follows line 11 in the first file and - contains no lines from that file. - -`FILE:Rc' - This hunk contains the lines in the range R of file FILE. The - range R is a comma-separated pair of line numbers, or just one - number if the range is a singleton. To edit this file to yield the - other files, one must change the specified lines to be the lines - taken from the other files. For example, `2:11,13c' means that - the hunk contains lines 11 through 13 from the second file. - - If the last line in a set of input lines is incomplete (*note -Incomplete Lines::), it is distinguished on output from a full line by -a following line that starts with `\'. - - -File: diff.info, Node: diff3 Hunks, Next: Example diff3 Normal, Prev: Detailed diff3 Normal, Up: Comparing Three Files - -`diff3' Hunks -============= - - Groups of lines that differ in two or three of the input files are -called "diff3 hunks", by analogy with `diff' hunks (*note Hunks::). If -all three input files differ in a `diff3' hunk, the hunk is called a -"three-way hunk"; if just two input files differ, it is a "two-way -hunk". - - As with `diff', several solutions are possible. When comparing the -files `A', `B', and `C', `diff3' normally finds `diff3' hunks by -merging the two-way hunks output by the two commands `diff A B' and -`diff A C'. This does not necessarily minimize the size of the output, -but exceptions should be rare. - - For example, suppose `F' contains the three lines `a', `b', `f', `G' -contains the lines `g', `b', `g', and `H' contains the lines `a', `b', -`h'. `diff3 F G H' might output the following: - - ====2 - 1:1c - 3:1c - a - 2:1c - g - ==== - 1:3c - f - 2:3c - g - 3:3c - h - -because it found a two-way hunk containing `a' in the first and third -files and `g' in the second file, then the single line `b' common to -all three files, then a three-way hunk containing the last line of each -file. - - -File: diff.info, Node: Example diff3 Normal, Prev: diff3 Hunks, Up: Comparing Three Files - -An Example of `diff3' Normal Format -=================================== - - Here is the output of the command `diff3 lao tzu tao' (*note Sample -diff3 Input::, for the complete contents of the files). Notice that it -shows only the lines that are different among the three files. - - ====2 - 1:1,2c - 3:1,2c - The Way that can be told of is not the eternal Way; - The name that can be named is not the eternal name. - 2:0a - ====1 - 1:4c - The Named is the mother of all things. - 2:2,3c - 3:4,5c - The named is the mother of all things. - - ====3 - 1:8c - 2:7c - so we may see their outcome. - 3:9c - so we may see their result. - ==== - 1:11a - 2:11,13c - They both may be called deep and profound. - Deeper and more profound, - The door of all subtleties! - 3:13,14c - - -- The Way of Lao-Tzu, tr. Wing-tsit Chan - - -File: diff.info, Node: diff3 Merging, Next: Interactive Merging, Prev: Comparing Three Files, Up: Top - -Merging From a Common Ancestor -****************************** - - When two people have made changes to copies of the same file, -`diff3' can produce a merged output that contains both sets of changes -together with warnings about conflicts. - - One might imagine programs with names like `diff4' and `diff5' to -compare more than three files simultaneously, but in practice the need -rarely arises. You can use `diff3' to merge three or more sets of -changes to a file by merging two change sets at a time. - - `diff3' can incorporate changes from two modified versions into a -common preceding version. This lets you merge the sets of changes -represented by the two newer files. Specify the common ancestor version -as the second argument and the two newer versions as the first and third -arguments, like this: - - diff3 MINE OLDER YOURS - -You can remember the order of the arguments by noting that they are in -alphabetical order. - - You can think of this as subtracting OLDER from YOURS and adding the -result to MINE, or as merging into MINE the changes that would turn -OLDER into YOURS. This merging is well-defined as long as MINE and -OLDER match in the neighborhood of each such change. This fails to be -true when all three input files differ or when only OLDER differs; we -call this a "conflict". When all three input files differ, we call the -conflict an "overlap". - - `diff3' gives you several ways to handle overlaps and conflicts. -You can omit overlaps or conflicts, or select only overlaps, or mark -conflicts with special `<<<<<<<' and `>>>>>>>' lines. - - `diff3' can output the merge results as an `ed' script that that can -be applied to the first file to yield the merged output. However, it -is usually better to have `diff3' generate the merged output directly; -this bypasses some problems with `ed'. - -* Menu: - -* Which Changes:: Selecting changes to incorporate. -* Marking Conflicts:: Marking conflicts. -* Bypassing ed:: Generating merged output directly. -* Merging Incomplete Lines:: How `diff3' merges incomplete lines. -* Saving the Changed File:: Emulating System V behavior. - - -File: diff.info, Node: Which Changes, Next: Marking Conflicts, Up: diff3 Merging - -Selecting Which Changes to Incorporate -====================================== - - You can select all unmerged changes from OLDER to YOURS for merging -into MINE with the `-e' or `--ed' option. You can select only the -nonoverlapping unmerged changes with `-3' or `--easy-only', and you can -select only the overlapping changes with `-x' or `--overlap-only'. - - The `-e', `-3' and `-x' options select only "unmerged changes", i.e. -changes where MINE and YOURS differ; they ignore changes from OLDER to -YOURS where MINE and YOURS are identical, because they assume that such -changes have already been merged. If this assumption is not a safe -one, you can use the `-A' or `--show-all' option (*note Marking -Conflicts::). - - Here is the output of the command `diff3' with each of these three -options (*note Sample diff3 Input::, for the complete contents of the -files). Notice that `-e' outputs the union of the disjoint sets of -changes output by `-3' and `-x'. - - Output of `diff3 -e lao tzu tao': - 11a - - -- The Way of Lao-Tzu, tr. Wing-tsit Chan - . - 8c - so we may see their result. - . - - Output of `diff3 -3 lao tzu tao': - 8c - so we may see their result. - . - - Output of `diff3 -x lao tzu tao': - 11a - - -- The Way of Lao-Tzu, tr. Wing-tsit Chan - . - - -File: diff.info, Node: Marking Conflicts, Next: Bypassing ed, Prev: Which Changes, Up: diff3 Merging - -Marking Conflicts -================= - - `diff3' can mark conflicts in the merged output by bracketing them -with special marker lines. A conflict that comes from two files A and -B is marked as follows: - - <<<<<<< A - lines from A - ======= - lines from B - >>>>>>> B - - A conflict that comes from three files A, B and C is marked as -follows: - - <<<<<<< A - lines from A - ||||||| B - lines from B - ======= - lines from C - >>>>>>> C - - The `-A' or `--show-all' option acts like the `-e' option, except -that it brackets conflicts, and it outputs all changes from OLDER to -YOURS, not just the unmerged changes. Thus, given the sample input -files (*note Sample diff3 Input::), `diff3 -A lao tzu tao' puts -brackets around the conflict where only `tzu' differs: - - <<<<<<< tzu - ======= - The Way that can be told of is not the eternal Way; - The name that can be named is not the eternal name. - >>>>>>> tao - - And it outputs the three-way conflict as follows: - - <<<<<<< lao - ||||||| tzu - They both may be called deep and profound. - Deeper and more profound, - The door of all subtleties! - ======= - - -- The Way of Lao-Tzu, tr. Wing-tsit Chan - >>>>>>> tao - - The `-E' or `--show-overlap' option outputs less information than -the `-A' or `--show-all' option, because it outputs only unmerged -changes, and it never outputs the contents of the second file. Thus -the `-E' option acts like the `-e' option, except that it brackets the -first and third files from three-way overlapping changes. Similarly, -`-X' acts like `-x', except it brackets all its (necessarily -overlapping) changes. For example, for the three-way overlapping -change above, the `-E' and `-X' options output the following: - - <<<<<<< lao - ======= - - -- The Way of Lao-Tzu, tr. Wing-tsit Chan - >>>>>>> tao - - If you are comparing files that have meaningless or uninformative -names, you can use the `-L LABEL' or `--label=LABEL' option to show -alternate names in the `<<<<<<<', `|||||||' and `>>>>>>>' brackets. -This option can be given up to three times, once for each input file. -Thus `diff3 -A -L X -L Y -L Z A B C' acts like `diff3 -A A B C', except -that the output looks like it came from files named `X', `Y' and `Z' -rather than from files named `A', `B' and `C'. - - -File: diff.info, Node: Bypassing ed, Next: Merging Incomplete Lines, Prev: Marking Conflicts, Up: diff3 Merging - -Generating the Merged Output Directly -===================================== - - With the `-m' or `--merge' option, `diff3' outputs the merged file -directly. This is more efficient than using `ed' to generate it, and -works even with non-text files that `ed' would reject. If you specify -`-m' without an `ed' script option, `-A' (`--show-all') is assumed. - - For example, the command `diff3 -m lao tzu tao' (*note Sample diff3 -Input:: for a copy of the input files) would output the following: - - <<<<<<< tzu - ======= - The Way that can be told of is not the eternal Way; - The name that can be named is not the eternal name. - >>>>>>> tao - The Nameless is the origin of Heaven and Earth; - The Named is the mother of all things. - Therefore let there always be non-being, - so we may see their subtlety, - And let there always be being, - so we may see their result. - The two are the same, - But after they are produced, - they have different names. - <<<<<<< lao - ||||||| tzu - They both may be called deep and profound. - Deeper and more profound, - The door of all subtleties! - ======= - - -- The Way of Lao-Tzu, tr. Wing-tsit Chan - >>>>>>> tao - - -File: diff.info, Node: Merging Incomplete Lines, Next: Saving the Changed File, Prev: Bypassing ed, Up: diff3 Merging - -How `diff3' Merges Incomplete Lines -=================================== - - With `-m', incomplete lines (*note Incomplete Lines::) are simply -copied to the output as they are found; if the merged output ends in an -conflict and one of the input files ends in an incomplete line, -succeeding `|||||||', `=======' or `>>>>>>>' brackets appear somewhere -other than the start of a line because they are appended to the -incomplete line. - - Without `-m', if an `ed' script option is specified and an -incomplete line is found, `diff3' generates a warning and acts as if a -newline had been present. - - -File: diff.info, Node: Saving the Changed File, Prev: Merging Incomplete Lines, Up: diff3 Merging - -Saving the Changed File -======================= - - Traditional Unix `diff3' generates an `ed' script without the -trailing `w' and `q' commands that save the changes. System V `diff3' -generates these extra commands. GNU `diff3' normally behaves like -traditional Unix `diff3', but with the `-i' option it behaves like -System V `diff3' and appends the `w' and `q' commands. - - The `-i' option requires one of the `ed' script options `-AeExX3', -and is incompatible with the merged output option `-m'. - - -File: diff.info, Node: Interactive Merging, Next: Merging with patch, Prev: diff3 Merging, Up: Top - -Interactive Merging with `sdiff' -******************************** - - With `sdiff', you can merge two files interactively based on a -side-by-side `-y' format comparison (*note Side by Side::). Use `-o -FILE' or `--output=FILE' to specify where to put the merged text. -*Note Invoking sdiff::, for more details on the options to `sdiff'. - - Another way to merge files interactively is to use the Emacs Lisp -package `emerge'. *Note emerge: (emacs)emerge, for more information. - -* Menu: - -* sdiff Option Summary:: Summary of `sdiff' options. -* Merge Commands:: Merging two files interactively. - - -File: diff.info, Node: sdiff Option Summary, Next: Merge Commands, Up: Interactive Merging - -Specifying `diff' Options to `sdiff' -==================================== - - The following `sdiff' options have the same meaning as for `diff'. -*Note diff Options::, for the use of these options. - - -a -b -d -i -t -v - -B -E -I REGEXP - - --ignore-blank-lines --ignore-case - --ignore-matching-lines=REGEXP --ignore-space-change - --ignore-tab-expansion - --left-column --minimal --speed-large-files - --strip-trailing-cr --suppress-common-lines --expand-tabs - --text --version --width=COLUMNS - - For historical reasons, `sdiff' has alternate names for some -options. The `-l' option is equivalent to the `--left-column' option, -and similarly `-s' is equivalent to `--suppress-common-lines'. The -meaning of the `sdiff' `-w' and `-W' options is interchanged from that -of `diff': with `sdiff', `-w COLUMNS' is equivalent to -`--width=COLUMNS', and `-W' is equivalent to `--ignore-all-space'. -`sdiff' without the `-o' option is equivalent to `diff' with the `-y' -or `--side-by-side' option (*note Side by Side::). - - -File: diff.info, Node: Merge Commands, Prev: sdiff Option Summary, Up: Interactive Merging - -Merge Commands -============== - - Groups of common lines, with a blank gutter, are copied from the -first file to the output. After each group of differing lines, `sdiff' -prompts with `%' and pauses, waiting for one of the following commands. -Follow each command with . - -`e' - Discard both versions. Invoke a text editor on an empty temporary - file, then copy the resulting file to the output. - -`eb' - Concatenate the two versions, edit the result in a temporary file, - then copy the edited result to the output. - -`ed' - Like `eb', except precede each version with a header that shows - what file and lines the version came from. - -`el' - Edit a copy of the left version, then copy the result to the - output. - -`er' - Edit a copy of the right version, then copy the result to the - output. - -`l' - Copy the left version to the output. - -`q' - Quit. - -`r' - Copy the right version to the output. - -`s' - Silently copy common lines. - -`v' - Verbosely copy common lines. This is the default. - - The text editor invoked is specified by the `EDITOR' environment -variable if it is set. The default is system-dependent. - - -File: diff.info, Node: Merging with patch, Next: Making Patches, Prev: Interactive Merging, Up: Top - -Merging with `patch' -******************** - - `patch' takes comparison output produced by `diff' and applies the -differences to a copy of the original file, producing a patched -version. With `patch', you can distribute just the changes to a set of -files instead of distributing the entire file set; your correspondents -can apply `patch' to update their copy of the files with your changes. -`patch' automatically determines the diff format, skips any leading or -trailing headers, and uses the headers to determine which file to -patch. This lets your correspondents feed a mail message containing a -difference listing directly to `patch'. - - `patch' detects and warns about common problems like forward -patches. It saves any patches that it could not apply. It can also -maintain a `patchlevel.h' file to ensure that your correspondents apply -diffs in the proper order. - - `patch' accepts a series of diffs in its standard input, usually -separated by headers that specify which file to patch. It applies -`diff' hunks (*note Hunks::) one by one. If a hunk does not exactly -match the original file, `patch' uses heuristics to try to patch the -file as well as it can. If no approximate match can be found, `patch' -rejects the hunk and skips to the next hunk. `patch' normally replaces -each file F with its new version, putting reject hunks (if any) into -`F.rej'. - - *Note Invoking patch::, for detailed information on the options to -`patch'. - -* Menu: - -* patch Input:: Selecting the type of `patch' input. -* Revision Control:: Getting files from RCS, SCCS, etc. -* Imperfect:: Dealing with imperfect patches. -* Creating and Removing:: Creating and removing files with a patch. -* Patching Time Stamps:: Updating time stamps on patched files. -* Multiple Patches:: Handling multiple patches in a file. -* patch Directories:: Changing directory and stripping directories. -* Backups:: Whether backup files are made. -* Backup Names:: Backup file names. -* Reject Names:: Reject file names. -* patch Messages:: Messages and questions `patch' can produce. -* patch and POSIX:: Conformance to the POSIX standard. -* patch and Tradition:: GNU versus traditional `patch'. - - -File: diff.info, Node: patch Input, Next: Revision Control, Up: Merging with patch - -Selecting the `patch' Input Format -================================== - - `patch' normally determines which `diff' format the patch file uses -by examining its contents. For patch files that contain particularly -confusing leading text, you might need to use one of the following -options to force `patch' to interpret the patch file as a certain -format of diff. The output formats listed here are the only ones that -`patch' can understand. - -`-c' -`--context' - context diff. - -`-e' -`--ed' - `ed' script. - -`-n' -`--normal' - normal diff. - -`-u' -`--unified' - unified diff. - - -File: diff.info, Node: Revision Control, Next: Imperfect, Prev: patch Input, Up: Merging with patch - -Revision Control -================ - - If a nonexistent input file is under a revision control system -supported by `patch', `patch' normally asks the user whether to get (or -check out) the file from the revision control system. Patch currently -supports RCS, ClearCase and SCCS. Under RCS and SCCS, `patch' also -asks when the input file is read-only and matches the default version -in the revision control system. - - The `-g NUM' or `--get=NUM' affects access to files under supported -revision control systems. If NUM is positive, `patch' gets the file -without asking the user; if zero, `patch' neither asks the user nor -gets the file; and if negative, `patch' asks the user before getting -the file. The default value of NUM is given by the value of the -`PATCH_GET' environment variable if it is set; if not, the default -value is zero if `patch' is conforming to POSIX, negative otherwise. -*Note patch and POSIX::. - - The choice of revision control system is unaffected by the -`VERSION_CONTROL' environment variable (*note Backup Names::). - - -File: diff.info, Node: Imperfect, Next: Creating and Removing, Prev: Revision Control, Up: Merging with patch - -Applying Imperfect Patches -========================== - - `patch' tries to skip any leading text in the patch file, apply the -diff, and then skip any trailing text. Thus you can feed a mail -message directly to `patch', and it should work. If the entire diff is -indented by a constant amount of white space, `patch' automatically -ignores the indentation. If a context diff contains trailing carriage -return on each line, `patch' automatically ignores the carriage return. -If a context diff has been encapsulated by prepending `- ' to lines -beginning with `-' as per Internet RFC 934 -(ftp://ftp.isi.edu/in-notes/rfc934.txt), `patch' automatically -unencapsulates the input. - - However, certain other types of imperfect input require user -intervention or testing. - -* Menu: - -* Changed White Space:: When tabs and spaces don't match exactly. -* Reversed Patches:: Applying reversed patches correctly. -* Inexact:: Helping `patch' find close matches. -* Dry Runs:: Predicting what `patch' will do. - - -File: diff.info, Node: Changed White Space, Next: Reversed Patches, Up: Imperfect - -Applying Patches with Changed White Space ------------------------------------------ - - Sometimes mailers, editors, or other programs change spaces into -tabs, or vice versa. If this happens to a patch file or an input file, -the files might look the same, but `patch' will not be able to match -them properly. If this problem occurs, use the `-l' or -`--ignore-white-space' option, which makes `patch' compare blank -characters (i.e. spaces and tabs) loosely so that any nonempty sequence -of blanks in the patch file matches any nonempty sequence of blanks in -the input files. Non-blank characters must still match exactly. Each -line of the context must still match a line in the input file. - - -File: diff.info, Node: Reversed Patches, Next: Inexact, Prev: Changed White Space, Up: Imperfect - -Applying Reversed Patches -------------------------- - - Sometimes people run `diff' with the new file first instead of -second. This creates a diff that is "reversed". To apply such -patches, give `patch' the `-R' or `--reverse' option. `patch' then -attempts to swap each hunk around before applying it. Rejects come out -in the swapped format. - - Often `patch' can guess that the patch is reversed. If the first -hunk of a patch fails, `patch' reverses the hunk to see if it can apply -it that way. If it can, `patch' asks you if you want to have the `-R' -option set; if it can't, `patch' continues to apply the patch normally. -This method cannot detect a reversed patch if it is a normal diff and -the first command is an append (which should have been a delete) since -appends always succeed, because a null context matches anywhere. But -most patches add or change lines rather than delete them, so most -reversed normal diffs begin with a delete, which fails, and `patch' -notices. - - If you apply a patch that you have already applied, `patch' thinks -it is a reversed patch and offers to un-apply the patch. This could be -construed as a feature. If you did this inadvertently and you don't -want to un-apply the patch, just answer `n' to this offer and to the -subsequent "apply anyway" question--or type `C-c' to kill the `patch' -process. - - -File: diff.info, Node: Inexact, Next: Dry Runs, Prev: Reversed Patches, Up: Imperfect - -Helping `patch' Find Inexact Matches ------------------------------------- - - For context diffs, and to a lesser extent normal diffs, `patch' can -detect when the line numbers mentioned in the patch are incorrect, and -it attempts to find the correct place to apply each hunk of the patch. -As a first guess, it takes the line number mentioned in the hunk, plus -or minus any offset used in applying the previous hunk. If that is not -the correct place, `patch' scans both forward and backward for a set of -lines matching the context given in the hunk. - - First `patch' looks for a place where all lines of the context -match. If it cannot find such a place, and it is reading a context or -unified diff, and the maximum fuzz factor is set to 1 or more, then -`patch' makes another scan, ignoring the first and last line of -context. If that fails, and the maximum fuzz factor is set to 2 or -more, it makes another scan, ignoring the first two and last two lines -of context are ignored. It continues similarly if the maximum fuzz -factor is larger. - - The `-F LINES' or `--fuzz=LINES' option sets the maximum fuzz factor -to LINES. This option only applies to context and unified diffs; it -ignores up to LINES lines while looking for the place to install a -hunk. Note that a larger fuzz factor increases the odds of making a -faulty patch. The default fuzz factor is 2; there is no point to -setting it to more than the number of lines of context in the diff, -ordinarily 3. - - If `patch' cannot find a place to install a hunk of the patch, it -writes the hunk out to a reject file (*note Reject Names::, for -information on how reject files are named). It writes out rejected -hunks in context format no matter what form the input patch is in. If -the input is a normal or `ed' diff, many of the contexts are simply -null. The line numbers on the hunks in the reject file may be -different from those in the patch file: they show the approximate -location where `patch' thinks the failed hunks belong in the new file -rather than in the old one. - - If the `--verbose' option is given, then as it completes each hunk -`patch' tells you whether the hunk succeeded or failed, and if it -failed, on which line (in the new file) `patch' thinks the hunk should -go. If this is different from the line number specified in the diff, -it tells you the offset. A single large offset _may_ indicate that -`patch' installed a hunk in the wrong place. `patch' also tells you if -it used a fuzz factor to make the match, in which case you should also -be slightly suspicious. - - `patch' cannot tell if the line numbers are off in an `ed' script, -and can only detect wrong line numbers in a normal diff when it finds a -change or delete command. It may have the same problem with a context -diff using a fuzz factor equal to or greater than the number of lines -of context shown in the diff (typically 3). In these cases, you should -probably look at a context diff between your original and patched input -files to see if the changes make sense. Compiling without errors is a -pretty good indication that the patch worked, but not a guarantee. - - A patch against an empty file applies to a nonexistent file, and vice -versa. *Note Creating and Removing::. - - `patch' usually produces the correct results, even when it must make -many guesses. However, the results are guaranteed only when the patch -is applied to an exact copy of the file that the patch was generated -from. - - -File: diff.info, Node: Dry Runs, Prev: Inexact, Up: Imperfect - -Predicting what `patch' will do -------------------------------- - - It may not be obvious in advance what `patch' will do with a -complicated or poorly formatted patch. If you are concerned that the -input might cause `patch' to modify the wrong files, you can use the -`--dry-run' option, which causes `patch' to print the results of -applying patches without actually changing any files. You can then -inspect the diagnostics generated by the dry run to see whether `patch' -will modify the files that you expect. If the patch does not do what -you want, you can modify the patch (or the other options to `patch') -and try another dry run. Once you are satisfied with the proposed -patch you can apply it by invoking `patch' as before, but this time -without the `--dry-run' option. - - -File: diff.info, Node: Creating and Removing, Next: Patching Time Stamps, Prev: Imperfect, Up: Merging with patch - -Creating and Removing Files -=========================== - - Sometimes when comparing two directories, a file may exist in one -directory but not the other. If you give `diff' the `-N' or -`--new-file' option, or if you supply an old or new file that is named -`/dev/null' or is empty and is dated the Epoch (1970-01-01 00:00:00 -UTC), `diff' outputs a patch that adds or deletes the contents of this -file. When given such a patch, `patch' normally creates a new file or -removes the old file. However, when conforming to POSIX (*note patch -and POSIX::), `patch' does not remove the old file, but leaves it empty. -The `-E' or `--remove-empty-files' option causes `patch' to remove -output files that are empty after applying a patch, even if the patch -does not appear to be one that removed the file. - - If the patch appears to create a file that already exists, `patch' -asks for confirmation before applying the patch. - - -File: diff.info, Node: Patching Time Stamps, Next: Multiple Patches, Prev: Creating and Removing, Up: Merging with patch - -Updating Time Stamps on Patched Files -===================================== - - When `patch' updates a file, it normally sets the file's -last-modified time stamp to the current time of day. If you are using -`patch' to track a software distribution, this can cause `make' to -incorrectly conclude that a patched file is out of date. For example, -if `syntax.c' depends on `syntax.y', and `patch' updates `syntax.c' and -then `syntax.y', then `syntax.c' will normally appear to be out of date -with respect to `syntax.y' even though its contents are actually up to -date. - - The `-Z' or `--set-utc' option causes `patch' to set a patched -file's modification and access times to the time stamps given in -context diff headers. If the context diff headers do not specify a -time zone, they are assumed to use Coordinated Universal Time (UTC, -often known as GMT). - - The `-T' or `--set-time' option acts like `-Z' or `--set-utc', -except that it assumes that the context diff headers' time stamps use -local time instead of UTC. This option is not recommended, because -patches using local time cannot easily be used by people in other time -zones, and because local time stamps are ambiguous when local clocks -move backwards during daylight-saving time adjustments. If the context -diff headers specify a time zone, this option is equivalent to `-Z' or -`--set-utc'. - - `patch' normally refrains from setting a file's time stamps if the -file's original last-modified time stamp does not match the time given -in the diff header, of if the file's contents do not exactly match the -patch. However, if the `-f' or `--force' option is given, the file's -time stamps are set regardless. - - Due to the limitations of the current `diff' format, `patch' cannot -update the times of files whose contents have not changed. Also, if -you set file time stamps to values other than the current time of day, -you should also remove (e.g., with `make clean') all files that depend -on the patched files, so that later invocations of `make' do not get -confused by the patched files' times. - - -File: diff.info, Node: Multiple Patches, Next: patch Directories, Prev: Patching Time Stamps, Up: Merging with patch - -Multiple Patches in a File -========================== - - If the patch file contains more than one patch, and if you do not -specify an input file on the command line, `patch' tries to apply each -patch as if they came from separate patch files. This means that it -determines the name of the file to patch for each patch, and that it -examines the leading text before each patch for file names and -prerequisite revision level (*note Making Patches::, for more on that -topic). - - `patch' uses the following rules to intuit a file name from the -leading text before a patch. First, `patch' takes an ordered list of -candidate file names as follows: - - * If the header is that of a context diff, `patch' takes the old and - new file names in the header. A name is ignored if it does not - have enough slashes to satisfy the `-pNUM' or `--strip=NUM' - option. The name `/dev/null' is also ignored. - - * If there is an `Index:' line in the leading garbage and if either - the old and new names are both absent or if `patch' is conforming - to POSIX, `patch' takes the name in the `Index:' line. - - * For the purpose of the following rules, the candidate file names - are considered to be in the order (old, new, index), regardless of - the order that they appear in the header. - -Then `patch' selects a file name from the candidate list as follows: - - * If some of the named files exist, `patch' selects the first name - if conforming to POSIX, and the best name otherwise. - - * If `patch' is not ignoring RCS, ClearCase, and SCCS (*note - Revision Control::), and no named files exist but an RCS, - ClearCase, or SCCS master is found, `patch' selects the first - named file with an RCS, ClearCase, or SCCS master. - - * If no named files exist, no RCS, ClearCase, or SCCS master was - found, some names are given, `patch' is not conforming to POSIX, - and the patch appears to create a file, `patch' selects the best - name requiring the creation of the fewest directories. - - * If no file name results from the above heuristics, you are asked - for the name of the file to patch, and `patch' selects that name. - - To determine the "best" of a nonempty list of file names, `patch' -first takes all the names with the fewest path name components; of -those, it then takes all the names with the shortest basename; of -those, it then takes all the shortest names; finally, it takes the -first remaining name. - - *Note patch and POSIX::, to see whether `patch' is conforming to -POSIX. - - -File: diff.info, Node: patch Directories, Next: Backups, Prev: Multiple Patches, Up: Merging with patch - -Applying Patches in Other Directories -===================================== - - The `-d DIRECTORY' or `--directory=DIRECTORY' option to `patch' -makes directory DIRECTORY the current directory for interpreting both -file names in the patch file, and file names given as arguments to -other options (such as `-B' and `-o'). For example, while in a mail -reading program, you can patch a file in the `/usr/src/emacs' directory -directly from a message containing the patch like this: - - | patch -d /usr/src/emacs - - Sometimes the file names given in a patch contain leading -directories, but you keep your files in a directory different from the -one given in the patch. In those cases, you can use the `-pNUMBER' or -`--strip=NUMBER' option to set the file name strip count to NUMBER. -The strip count tells `patch' how many slashes, along with the directory -names between them, to strip from the front of file names. A sequence -of one or more adjacent slashes is counted as a single slash. By -default, `patch' strips off all leading directories, leaving just the -base file names. - - For example, suppose the file name in the patch file is -`/gnu/src/emacs/etc/NEWS'. Using `-p0' gives the entire file name -unmodified, `-p1' gives `gnu/src/emacs/etc/NEWS' (no leading slash), -`-p4' gives `etc/NEWS', and not specifying `-p' at all gives `NEWS'. - - `patch' looks for each file (after any slashes have been stripped) -in the current directory, or if you used the `-d DIRECTORY' option, in -that directory. - - -File: diff.info, Node: Backups, Next: Backup Names, Prev: patch Directories, Up: Merging with patch - -Backup Files -============ - - Normally, `patch' creates a backup file if the patch does not -exactly match the original input file, because in that case the -original data might not be recovered if you undo the patch with `patch --R' (*note Reversed Patches::). However, when conforming to POSIX, -`patch' does not create backup files by default. *Note patch and -POSIX::. - - The `-b' or `--backup' option causes `patch' to make a backup file -regardless of whether the patch matches the original input. The -`--backup-if-mismatch' option causes `patch' to create backup files for -mismatches files; this is the default when not conforming to POSIX. The -`--no-backup-if-mismatch' option causes `patch' to not create backup -files, even for mismatched patches; this is the default when conforming -to POSIX. - - When backing up a file that does not exist, an empty, unreadable -backup file is created as a placeholder to represent the nonexistent -file. - - -File: diff.info, Node: Backup Names, Next: Reject Names, Prev: Backups, Up: Merging with patch - -Backup File Names -================= - - Normally, `patch' renames an original input file into a backup file -by appending to its name the extension `.orig', or `~' if using `.orig' -would make the backup file name too long.(1) The `-z BACKUP-SUFFIX' or -`--suffix=BACKUP-SUFFIX' option causes `patch' to use BACKUP-SUFFIX as -the backup extension instead. - - Alternately, you can specify the extension for backup files with the -`SIMPLE_BACKUP_SUFFIX' environment variable, which the options override. - - `patch' can also create numbered backup files the way GNU Emacs -does. With this method, instead of having a single backup of each file, -`patch' makes a new backup file name each time it patches a file. For -example, the backups of a file named `sink' would be called, -successively, `sink.~1~', `sink.~2~', `sink.~3~', etc. - - The `-V BACKUP-STYLE' or `--version-control=BACKUP-STYLE' option -takes as an argument a method for creating backup file names. You can -alternately control the type of backups that `patch' makes with the -`PATCH_VERSION_CONTROL' environment variable, which the `-V' option -overrides. If `PATCH_VERSION_CONTROL' is not set, the -`VERSION_CONTROL' environment variable is used instead. Please note -that these options and variables control backup file names; they do not -affect the choice of revision control system (*note Revision Control::). - - The values of these environment variables and the argument to the -`-V' option are like the GNU Emacs `version-control' variable (*note -Backup Names: (emacs)Backup Names., for more information on backup -versions in Emacs). They also recognize synonyms that are more -descriptive. The valid values are listed below; unique abbreviations -are acceptable. - -`t' -`numbered' - Always make numbered backups. - -`nil' -`existing' - Make numbered backups of files that already have them, simple - backups of the others. This is the default. - -`never' -`simple' - Always make simple backups. - - You can also tell `patch' to prepend a prefix, such as a directory -name, to produce backup file names. The `-B PREFIX' or -`--prefix=PREFIX' option makes backup files by prepending PREFIX to -them. The `-Y PREFIX' or `--basename-prefix=PREFIX' prepends PREFIX to -the last file name component of backup file names instead; for example, -`-Y ~' causes the backup name for `dir/file.c' to be `dir/~file.c'. If -you use either of these prefix options, the suffix-based options are -ignored. - - If you specify the output file with the `-o' option, that file is -the one that is backed up, not the input file. - - Options that affect the names of backup files do not affect whether -backups are made. For example, if you specify the -`--no-backup-if-mismatch' option, none of the options described in this -section have any affect, because no backups are made. - - ---------- Footnotes ---------- - - (1) A coding error in GNU `patch' version 2.5.4 causes it to always -use `~', but this should be fixed in the next release. - - -File: diff.info, Node: Reject Names, Next: patch Messages, Prev: Backup Names, Up: Merging with patch - -Reject File Names -================= - - The names for reject files (files containing patches that `patch' -could not find a place to apply) are normally the name of the output -file with `.rej' appended (or `#' if if using `.rej' would make the -backup file name too long). - - Alternatively, you can tell `patch' to place all of the rejected -patches in a single file. The `-r REJECT-FILE' or -`--reject-file=REJECT-FILE' option uses REJECT-FILE as the reject file -name. - - -File: diff.info, Node: patch Messages, Next: patch and POSIX, Prev: Reject Names, Up: Merging with patch - -Messages and Questions from `patch' -=================================== - - `patch' can produce a variety of messages, especially if it has -trouble decoding its input. In a few situations where it's not sure -how to proceed, `patch' normally prompts you for more information from -the keyboard. There are options to produce more or fewer messages, to -have it not ask for keyboard input, and to affect the way that file -names are quoted in messages. - -* Menu: - -* More or Fewer Messages:: Controlling the verbosity of `patch'. -* patch and Keyboard Input:: Inhibiting keyboard input. -* patch Quoting Style:: Quoting file names in diagnostics. - - `patch' exits with status 0 if all hunks are applied successfully, 1 -if some hunks cannot be applied, and 2 if there is more serious trouble. -When applying a set of patches in a loop, you should check the exit -status, so you don't apply a later patch to a partially patched file. - - -File: diff.info, Node: More or Fewer Messages, Next: patch and Keyboard Input, Up: patch Messages - -Controlling the Verbosity of `patch' ------------------------------------- - - You can cause `patch' to produce more messages by using the -`--verbose' option. For example, when you give this option, the -message `Hmm...' indicates that `patch' is reading text in the patch -file, attempting to determine whether there is a patch in that text, -and if so, what kind of patch it is. - - You can inhibit all terminal output from `patch', unless an error -occurs, by using the `-s', `--quiet', or `--silent' option. - - -File: diff.info, Node: patch and Keyboard Input, Next: patch Quoting Style, Prev: More or Fewer Messages, Up: patch Messages - -Inhibiting Keyboard Input -------------------------- - - There are two ways you can prevent `patch' from asking you any -questions. The `-f' or `--force' option assumes that you know what you -are doing. It causes `patch' to do the following: - - * Skip patches that do not contain file names in their headers. - - * Patch files even though they have the wrong version for the - `Prereq:' line in the patch; - - * Assume that patches are not reversed even if they look like they - are. - -The `-t' or `--batch' option is similar to `-f', in that it suppresses -questions, but it makes somewhat different assumptions: - - * Skip patches that do not contain file names in their headers (the - same as `-f'). - - * Skip patches for which the file has the wrong version for the - `Prereq:' line in the patch; - - * Assume that patches are reversed if they look like they are. - - -File: diff.info, Node: patch Quoting Style, Prev: patch and Keyboard Input, Up: patch Messages - -`patch' Quoting Style ---------------------- - - When `patch' outputs a file name in a diagnostic message, it can -format the name in any of several ways. This can be useful to output -file names unambiguously, even if they contain punctuation or special -characters like newlines. The `--quoting-style=WORD' option controls -how names are output. The WORD should be one of the following: - -`literal' - Output names as-is. - -`shell' - Quote names for the shell if they contain shell metacharacters or - would cause ambiguous output. - -`shell-always' - Quote names for the shell, even if they would normally not require - quoting. - -`c' - Quote names as for a C language string. - -`escape' - Quote as with `c' except omit the surrounding double-quote - characters. - - You can specify the default value of the `--quoting-style' option -with the environment variable `QUOTING_STYLE'. If that environment -variable is not set, the default value is `shell', but this default may -change in a future version of `patch'. - - -File: diff.info, Node: patch and POSIX, Next: patch and Tradition, Prev: patch Messages, Up: Merging with patch - -`patch' and the POSIX Standard -============================== - - If you specify the `--posix' option, or set the `POSIXLY_CORRECT' -environment variable, `patch' conforms more strictly to the POSIX -standard, as follows: - - * Take the first existing file from the list (old, new, index) when - intuiting file names from diff headers. *Note Multiple Patches::. - - * Do not remove files that are removed by a diff. *Note Creating - and Removing::. - - * Do not ask whether to get files from RCS, ClearCase, or SCCS. - *Note Revision Control::. - - * Require that all options precede the files in the command line. - - * Do not backup files, even when there is a mismatch. *Note - Backups::. - - - -File: diff.info, Node: patch and Tradition, Prev: patch and POSIX, Up: Merging with patch - -GNU `patch' and Traditional `patch' -=================================== - - The current version of GNU `patch' normally follows the POSIX -standard. *Note patch and POSIX::, for the few exceptions to this -general rule. - - Unfortunately, POSIX redefined the behavior of `patch' in several -important ways. You should be aware of the following differences if -you must interoperate with traditional `patch', or with GNU `patch' -version 2.1 and earlier. - - * In traditional `patch', the `-p' option's operand was optional, - and a bare `-p' was equivalent to `-p0'. The `-p' option now - requires an operand, and `-p 0' is now equivalent to `-p0'. For - maximum compatibility, use options like `-p0' and `-p1'. - - Also, traditional `patch' simply counted slashes when stripping - path prefixes; `patch' now counts pathname components. That is, a - sequence of one or more adjacent slashes now counts as a single - slash. For maximum portability, avoid sending patches containing - `//' in file names. - - * In traditional `patch', backups were enabled by default. This - behavior is now enabled with the `-b' or `--backup' option. - - Conversely, in POSIX `patch', backups are never made, even when - there is a mismatch. In GNU `patch', this behavior is enabled - with the `--no-backup-if-mismatch' option, or by conforming to - POSIX. - - The `-b SUFFIX' option of traditional `patch' is equivalent to the - `-b -z SUFFIX' options of GNU `patch'. - - * Traditional `patch' used a complicated (and incompletely - documented) method to intuit the name of the file to be patched - from the patch header. This method did not conform to POSIX, and - had a few gotchas. Now `patch' uses a different, equally - complicated (but better documented) method that is optionally - POSIX-conforming; we hope it has fewer gotchas. The two methods - are compatible if the file names in the context diff header and the - `Index:' line are all identical after prefix-stripping. Your - patch is normally compatible if each header's file names all - contain the same number of slashes. - - * When traditional `patch' asked the user a question, it sent the - question to standard error and looked for an answer from the first - file in the following list that was a terminal: standard error, - standard output, `/dev/tty', and standard input. Now `patch' - sends questions to standard output and gets answers from - `/dev/tty'. Defaults for some answers have been changed so that - `patch' never goes into an infinite loop when using default - answers. - - * Traditional `patch' exited with a status value that counted the - number of bad hunks, or with status 1 if there was real trouble. - Now `patch' exits with status 1 if some hunks failed, or with 2 if - there was real trouble. - - * Limit yourself to the following options when sending instructions - meant to be executed by anyone running GNU `patch', traditional - `patch', or a `patch' that conforms to POSIX. Spaces are - significant in the following list, and operands are required. - - `-c' - `-d DIR' - `-D DEFINE' - `-e' - `-l' - `-n' - `-N' - `-o OUTFILE' - `-pNUM' - `-R' - `-r REJECTFILE' - - - -File: diff.info, Node: Making Patches, Next: Invoking cmp, Prev: Merging with patch, Up: Top - -Tips for Making and Using Patches -********************************* - - Use some common sense when making and using patches. For example, -when sending bug fixes to a program's maintainer, send several small -patches, one per independent subject, instead of one large, -harder-to-digest patch that covers all the subjects. - - Here are some other things you should keep in mind if you are going -to distribute patches for updating a software package. - -* Menu: - -* Tips for Patch Producers:: Advice for making patches. -* Tips for Patch Consumers:: Advice for using patches. -* Avoiding Common Mistakes:: Avoiding common mistakes when using `patch'. -* Generating Smaller Patches:: How to generate smaller patches. - - -File: diff.info, Node: Tips for Patch Producers, Next: Tips for Patch Consumers, Up: Making Patches - -Tips for Patch Producers -======================== - - To create a patch that changes an older version of a package into a -newer version, first make a copy of the older and newer versions in -adjacent subdirectories. It is common to do that by unpacking `tar' -archives of the two versions. - - To generate the patch, use the command `diff -Naur OLD NEW' where -OLD and NEW identify the old and new directories. The names OLD and -NEW should not contain any slashes. The `-N' option lets the patch -create and remove files; `-a' lets the patch update non-text files; `-u' -generates useful time stamps and enough context; and `-r' lets the -patch update subdirectories. Here is an example command, using Bourne -shell syntax: - - diff -Naur gcc-3.0.3 gcc-3.0.4 - - Tell your recipients how to apply the patches. This should include -which working directory to use, and which `patch' options to use; the -option `-p1' is recommended. Test your procedure by pretending to be a -recipient and applying your patches to a copy of the original files. - - *Note Avoiding Common Mistakes::, for how to avoid common mistakes -when generating a patch. - - -File: diff.info, Node: Tips for Patch Consumers, Next: Avoiding Common Mistakes, Prev: Tips for Patch Producers, Up: Making Patches - -Tips for Patch Consumers -======================== - - A patch producer should tell recipients how to apply the patches, so -the first rule of thumb for a patch consumer is to follow the -instructions supplied with the patch. - - GNU `diff' can analyze files with arbitrarily long lines and files -that end in incomplete lines. However, older versions of `patch' -cannot patch such files. If you are having trouble applying such -patches, try upgrading to a recent version of GNU `patch'. - - -File: diff.info, Node: Avoiding Common Mistakes, Next: Generating Smaller Patches, Prev: Tips for Patch Consumers, Up: Making Patches - -Avoiding Common Mistakes -======================== - - When producing a patch for multiple files, apply `diff' to -directories whose names do not have slashes. This reduces confusion -when the patch consumer specifies the `-pNUMBER' option, since this -option can have surprising results when the old and new file names have -different numbers of slashes. For example, do not send a patch with a -header that looks like this: - - diff -Naur v2.0.29/prog/README prog/README - --- v2.0.29/prog/README 2002-03-10 23:30:39.942229878 -0800 - +++ prog/README 2002-03-17 20:49:32.442260588 -0800 - -because the two file names have different numbers of slashes, and -different versions of `patch' interpret the file names differently. To -avoid confusion, send output that looks like this instead: - - diff -Naur v2.0.29/prog/README v2.0.30/prog/README - --- v2.0.29/prog/README 2002-03-10 23:30:39.942229878 -0800 - +++ v2.0.30/prog/README 2002-03-17 20:49:32.442260588 -0800 - - Make sure you have specified the file names correctly, either in a -context diff header or with an `Index:' line. Take care to not send out -reversed patches, since these make people wonder whether they have -already applied the patch. - - Avoid sending patches that compare backup file names like -`README.orig' or `README~', since this might confuse `patch' into -patching a backup file instead of the real file. Instead, send patches -that compare the same base file names in different directories, e.g. -`old/README' and `new/README'. - - To save people from partially applying a patch before other patches -that should have gone before it, you can make the first patch in the -patch file update a file with a name like `patchlevel.h' or -`version.c', which contains a patch level or version number. If the -input file contains the wrong version number, `patch' will complain -immediately. - - An even clearer way to prevent this problem is to put a `Prereq:' -line before the patch. If the leading text in the patch file contains a -line that starts with `Prereq:', `patch' takes the next word from that -line (normally a version number) and checks whether the next input file -contains that word, preceded and followed by either white space or a -newline. If not, `patch' prompts you for confirmation before -proceeding. This makes it difficult to accidentally apply patches in -the wrong order. - - -File: diff.info, Node: Generating Smaller Patches, Prev: Avoiding Common Mistakes, Up: Making Patches - -Generating Smaller Patches -========================== - - The simplest way to generate a patch is to use `diff -Naur' (*note -Tips for Patch Producers::), but you might be able to reduce the size -of the patch by renaming or removing some files before making the -patch. If the older version of the package contains any files that the -newer version does not, or if any files have been renamed between the -two versions, make a list of `rm' and `mv' commands for the user to -execute in the old version directory before applying the patch. Then -run those commands yourself in the scratch directory. - - If there are any files that you don't need to include in the patch -because they can easily be rebuilt from other files (for example, -`TAGS' and output from `yacc' and `makeinfo'), exclude them from the -patch by giving `diff' the `-x PATTERN' option (*note Comparing -Directories::). If you want your patch to modify a derived file -because your recipients lack tools to build it, make sure that the -patch for the derived file follows any patches for files that it -depends on, so that the recipients' time stamps will not confuse `make'. - - Now you can create the patch using `diff -Naur'. Make sure to -specify the scratch directory first and the newer directory second. - - Add to the top of the patch a note telling the user any `rm' and -`mv' commands to run before applying the patch. Then you can remove -the scratch directory. - - You can also shrink the patch size by using fewer lines of context, -but bear in mind that `patch' typically needs at least two lines for -proper operation when patches do not exactly match the input files. - - -File: diff.info, Node: Invoking cmp, Next: Invoking diff, Prev: Making Patches, Up: Top - -Invoking `cmp' -************** - - The `cmp' command compares two files, and if they differ, tells the -first byte and line number where they differ. Bytes and lines are -numbered starting with 1. The arguments of `cmp' are as follows: - - cmp OPTIONS... FROM-FILE [TO-FILE [FROM-SKIP [TO-SKIP]]] - - The file name `-' is always the standard input. `cmp' also uses the -standard input if one file name is omitted. The FROM-SKIP and TO-SKIP -operands specify how many bytes to ignore at the start of each file; -they are equivalent to the `--ignore-initial=FROM-SKIP:TO-SKIP' option. - - An exit status of 0 means no differences were found, 1 means some -differences were found, and 2 means trouble. - -* Menu: - -* cmp Options:: Summary of options to `cmp'. - - -File: diff.info, Node: cmp Options, Up: Invoking cmp - -Options to `cmp' -================ - - Below is a summary of all of the options that GNU `cmp' accepts. -Most options have two equivalent names, one of which is a single letter -preceded by `-', and the other of which is a long name preceded by -`--'. Multiple single letter options (unless they take an argument) -can be combined into a single command line word: `-bl' is equivalent to -`-b -l'. - -`-b' -`--print-bytes' - Print the differing bytes. Display control bytes as a `^' - followed by a letter of the alphabet and precede bytes that have - the high bit set with `M-' (which stands for "meta"). - -`--help' - Output a summary of usage and then exit. - -`-i SKIP' -`--ignore-initial=SKIP' - Ignore any differences in the first SKIP bytes of the input files. - Treat files with fewer than SKIP bytes as if they are empty. If - SKIP is of the form `FROM-SKIP:TO-SKIP', skip the first FROM-SKIP - bytes of the first input file and the first TO-SKIP bytes of the - second. - -`-l' -`--verbose' - Print the (decimal) byte numbers and (octal) values of all - differing bytes. - -`-n COUNT' -`--bytes=COUNT' - Compare at most COUNT input bytes. - -`-s' -`--quiet' -`--silent' - Do not print anything; only return an exit status indicating - whether the files differ. - -`-v' -`--version' - Output version information and then exit. - - In the above table, operands that are byte counts are normally -decimal, but may be preceded by `0' for octal and `0x' for hexadecimal. - - A byte count can be followed by a suffix to specify a multiple of -that count; in this case an omitted integer is understood to be 1. A -bare size letter, or one followed by `iB', specifies a multiple using -powers of 1024. A size letter followed by `B' specifies powers of 1000 -instead. For example, `-n 4M' and `-n 4MiB' are equivalent to `-n -4194304', whereas `-n 4MB' is equivalent to `-n 4000000'. This -notation is upward compatible with the SI prefixes -(http://www.bipm.fr/enus/3_SI/si-prefixes.html) for decimal multiples -and with the IEC 60027-2 prefixes for binary multiples -(http://physics.nist.gov/cuu/Units/binary.html). - - The following suffixes are defined. Large sizes like `1Y' may be -rejected by your computer due to limitations of its arithmetic. - -`kB' - kilobyte: 10^3 = 1000. - -`k' -`K' -`KiB' - kibibyte: 2^10 = 1024. `K' is special: the SI prefix is `k' and - the IEC 60027-2 prefix is `Ki', but tradition and POSIX use `k' to - mean `KiB'. - -`MB' - megabyte: 10^6 = 1,000,000. - -`M' -`MiB' - mebibyte: 2^20 = 1,048,576. - -`GB' - gigabyte: 10^9 = 1,000,000,000. - -`G' -`GiB' - gibibyte: 2^30 = 1,073,741,824. - -`TB' - terabyte: 10^12 = 1,000,000,000,000. - -`T' -`TiB' - tebibyte: 2^40 = 1,099,511,627,776. - -`PB' - petabyte: 10^15 = 1,000,000,000,000,000. - -`P' -`PiB' - pebibyte: 2^50 = 1,125,899,906,842,624. - -`EB' - exabyte: 10^18 = 1,000,000,000,000,000,000. - -`E' -`EiB' - exbibyte: 2^60 = 1,152,921,504,606,846,976. - -`ZB' - zettabyte: 10^21 = 1,000,000,000,000,000,000,000 - -`Z' -`ZiB' - 2^70 = 1,180,591,620,717,411,303,424. (`Zi' is a GNU extension to - IEC 60027-2.) - -`YB' - yottabyte: 10^24 = 1,000,000,000,000,000,000,000,000. - -`Y' -`YiB' - 2^80 = 1,208,925,819,614,629,174,706,176. (`Yi' is a GNU - extension to IEC 60027-2.) - - -File: diff.info, Node: Invoking diff, Next: Invoking diff3, Prev: Invoking cmp, Up: Top - -Invoking `diff' -*************** - - The format for running the `diff' command is: - - diff OPTIONS... FILES... - - In the simplest case, two file names FROM-FILE and TO-FILE are -given, and `diff' compares the contents of FROM-FILE and TO-FILE. A -file name of `-' stands for text read from the standard input. As a -special case, `diff - -' compares a copy of standard input to itself. - - If one file is a directory and the other is not, `diff' compares the -file in the directory whose name is that of the non-directory. The -non-directory file must not be `-'. - - If two file names are given and both are directories, `diff' -compares corresponding files in both directories, in alphabetical -order; this comparison is not recursive unless the `-r' or -`--recursive' option is given. `diff' never compares the actual -contents of a directory as if it were a file. The file that is fully -specified may not be standard input, because standard input is nameless -and the notion of "file with the same name" does not apply. - - If the `--from-file=FILE' option is given, the number of file names -is arbitrary, and FILE is compared to each named file. Similarly, if -the `--to-file=FILE' option is given, each named file is compared to -FILE. - - `diff' options begin with `-', so normally file names may not begin -with `-'. However, `--' as an argument by itself treats the remaining -arguments as file names even if they begin with `-'. - - An exit status of 0 means no differences were found, 1 means some -differences were found, and 2 means trouble. - -* Menu: - -* diff Options:: Summary of options to `diff'. - - -File: diff.info, Node: diff Options, Up: Invoking diff - -Options to `diff' -================= - - Below is a summary of all of the options that GNU `diff' accepts. -Most options have two equivalent names, one of which is a single letter -preceded by `-', and the other of which is a long name preceded by -`--'. Multiple single letter options (unless they take an argument) -can be combined into a single command line word: `-ac' is equivalent to -`-a -c'. Long named options can be abbreviated to any unique prefix of -their name. Brackets ([ and ]) indicate that an option takes an -optional argument. - -`-a' -`--text' - Treat all files as text and compare them line-by-line, even if they - do not seem to be text. *Note Binary::. - -`-b' -`--ignore-space-change' - Ignore changes in amount of white space. *Note White Space::. - -`-B' -`--ignore-blank-lines' - Ignore changes that just insert or delete blank lines. *Note - Blank Lines::. - -`--binary' - Read and write data in binary mode. *Note Binary::. - -`-c' - Use the context output format, showing three lines of context. - *Note Context Format::. - -`-C LINES' -`--context[=LINES]' - Use the context output format, showing LINES (an integer) lines of - context, or three if LINES is not given. *Note Context Format::. - For proper operation, `patch' typically needs at least two lines of - context. - - On older systems, `diff' supports an obsolete option `-LINES' that - has effect when combined with `-c' or `-p'. POSIX 1003.1-2001 - (*note Standards conformance::) does not allow this; use `-C LINES' - instead. - -`--changed-group-format=FORMAT' - Use FORMAT to output a line group containing differing lines from - both files in if-then-else format. *Note Line Group Formats::. - -`-d' -`--minimal' - Change the algorithm perhaps find a smaller set of changes. This - makes `diff' slower (sometimes much slower). *Note diff - Performance::. - -`-D NAME' -`--ifdef=NAME' - Make merged `#ifdef' format output, conditional on the preprocessor - macro NAME. *Note If-then-else::. - -`-e' -`--ed' - Make output that is a valid `ed' script. *Note ed Scripts::. - -`-E' -`--ignore-tab-expansion' - Ignore changes due to tab expansion. *Note White Space::. - -`-f' -`--forward-ed' - Make output that looks vaguely like an `ed' script but has changes - in the order they appear in the file. *Note Forward ed::. - -`-F REGEXP' -`--show-function-line=REGEXP' - In context and unified format, for each hunk of differences, show - some of the last preceding line that matches REGEXP. *Note - Specified Headings::. - -`--from-file=FILE' - Compare FILE to each operand; FILE may be a directory. - -`--help' - Output a summary of usage and then exit. - -`--horizon-lines=LINES' - Do not discard the last LINES lines of the common prefix and the - first LINES lines of the common suffix. *Note diff Performance::. - -`-i' -`--ignore-case' - Ignore changes in case; consider upper- and lower-case letters - equivalent. *Note Case Folding::. - -`-I REGEXP' -`--ignore-matching-lines=REGEXP' - Ignore changes that just insert or delete lines that match REGEXP. - *Note Specified Folding::. - -`--ignore-file-name-case' - Ignore case when comparing file names during recursive comparison. - *Note Comparing Directories::. - -`-l' -`--paginate' - Pass the output through `pr' to paginate it. *Note Pagination::. - -`--label=LABEL' - Use LABEL instead of the file name in the context format (*note - Context Format::) and unified format (*note Unified Format::) - headers. *Note RCS::. - -`--left-column' - Print only the left column of two common lines in side by side - format. *Note Side by Side Format::. - -`--line-format=FORMAT' - Use FORMAT to output all input lines in if-then-else format. - *Note Line Formats::. - -`-n' -`--rcs' - Output RCS-format diffs; like `-f' except that each command - specifies the number of lines affected. *Note RCS::. - -`-N' -`--new-file' - In directory comparison, if a file is found in only one directory, - treat it as present but empty in the other directory. *Note - Comparing Directories::. - -`--new-group-format=FORMAT' - Use FORMAT to output a group of lines taken from just the second - file in if-then-else format. *Note Line Group Formats::. - -`--new-line-format=FORMAT' - Use FORMAT to output a line taken from just the second file in - if-then-else format. *Note Line Formats::. - -`--old-group-format=FORMAT' - Use FORMAT to output a group of lines taken from just the first - file in if-then-else format. *Note Line Group Formats::. - -`--old-line-format=FORMAT' - Use FORMAT to output a line taken from just the first file in - if-then-else format. *Note Line Formats::. - -`-p' -`--show-c-function' - Show which C function each change is in. *Note C Function - Headings::. - -`-q' -`--brief' - Report only whether the files differ, not the details of the - differences. *Note Brief::. - -`-r' -`--recursive' - When comparing directories, recursively compare any subdirectories - found. *Note Comparing Directories::. - -`-s' -`--report-identical-files' - Report when two files are the same. *Note Comparing Directories::. - -`-S FILE' -`--starting-file=FILE' - When comparing directories, start with the file FILE. This is - used for resuming an aborted comparison. *Note Comparing - Directories::. - -`--speed-large-files' - Use heuristics to speed handling of large files that have numerous - scattered small changes. *Note diff Performance::. - -`--strip-trailing-cr' - Strip any trailing carriage return at the end of an input line. - *Note Binary::. - -`--suppress-common-lines' - Do not print common lines in side by side format. *Note Side by - Side Format::. - -`-t' -`--expand-tabs' - Expand tabs to spaces in the output, to preserve the alignment of - tabs in the input files. *Note Tabs::. - -`-T' -`--initial-tab' - Output a tab rather than a space before the text of a line in - normal or context format. This causes the alignment of tabs in - the line to look normal. *Note Tabs::. - -`--to-file=FILE' - Compare each operand to FILE; FILE may be a directory. - -`-u' - Use the unified output format, showing three lines of context. - *Note Unified Format::. - -`--unchanged-group-format=FORMAT' - Use FORMAT to output a group of common lines taken from both files - in if-then-else format. *Note Line Group Formats::. - -`--unchanged-line-format=FORMAT' - Use FORMAT to output a line common to both files in if-then-else - format. *Note Line Formats::. - -`--unidirectional-new-file' - When comparing directories, if a file appears only in the second - directory of the two, treat it as present but empty in the other. - *Note Comparing Directories::. - -`-U LINES' -`--unified[=LINES]' - Use the unified output format, showing LINES (an integer) lines of - context, or three if LINES is not given. *Note Unified Format::. - For proper operation, `patch' typically needs at least two lines of - context. - - On older systems, `diff' supports an obsolete option `-LINES' that - has effect when combined with `-u'. POSIX 1003.1-2001 (*note - Standards conformance::) does not allow this; use `-U LINES' - instead. - -`-v' -`--version' - Output version information and then exit. - -`-w' -`--ignore-all-space' - Ignore white space when comparing lines. *Note White Space::. - -`-W COLUMNS' -`--width=COLUMNS' - Output at most COLUMNS (default 130) print columns per line in - side by side format. *Note Side by Side Format::. - -`-x PATTERN' -`--exclude=PATTERN' - When comparing directories, ignore files and subdirectories whose - basenames match PATTERN. *Note Comparing Directories::. - -`-X FILE' -`--exclude-from=FILE' - When comparing directories, ignore files and subdirectories whose - basenames match any pattern contained in FILE. *Note Comparing - Directories::. - -`-y' -`--side-by-side' - Use the side by side output format. *Note Side by Side Format::. - - -File: diff.info, Node: Invoking diff3, Next: Invoking patch, Prev: Invoking diff, Up: Top - -Invoking `diff3' -**************** - - The `diff3' command compares three files and outputs descriptions of -their differences. Its arguments are as follows: - - diff3 OPTIONS... MINE OLDER YOURS - - The files to compare are MINE, OLDER, and YOURS. At most one of -these three file names may be `-', which tells `diff3' to read the -standard input for that file. - - An exit status of 0 means `diff3' was successful, 1 means some -conflicts were found, and 2 means trouble. - -* Menu: - -* diff3 Options:: Summary of options to `diff3'. - - -File: diff.info, Node: diff3 Options, Up: Invoking diff3 - -Options to `diff3' -================== - - Below is a summary of all of the options that GNU `diff3' accepts. -Multiple single letter options (unless they take an argument) can be -combined into a single command line argument. - -`-a' -`--text' - Treat all files as text and compare them line-by-line, even if they - do not appear to be text. *Note Binary::. - -`-A' -`--show-all' - Incorporate all unmerged changes from OLDER to YOURS into MINE, - surrounding conflicts with bracket lines. *Note Marking - Conflicts::. - -`--diff-program=PROGRAM' - Use the compatible comparison program PROGRAM to compare files - instead of `diff'. - -`-e' -`--ed' - Generate an `ed' script that incorporates all the changes from - OLDER to YOURS into MINE. *Note Which Changes::. - -`-E' -`--show-overlap' - Like `-e', except bracket lines from overlapping changes' first - and third files. *Note Marking Conflicts::. With `-E', an - overlapping change looks like this: - - <<<<<<< MINE - lines from MINE - ======= - lines from YOURS - >>>>>>> YOURS - -`--help' - Output a summary of usage and then exit. - -`-i' - Generate `w' and `q' commands at the end of the `ed' script for - System V compatibility. This option must be combined with one of - the `-AeExX3' options, and may not be combined with `-m'. *Note - Saving the Changed File::. - -`-L LABEL' -`--label=LABEL' - Use the label LABEL for the brackets output by the `-A', `-E' and - `-X' options. This option may be given up to three times, one for - each input file. The default labels are the names of the input - files. Thus `diff3 -L X -L Y -L Z -m A B C' acts like `diff3 -m A - B C', except that the output looks like it came from files named - `X', `Y' and `Z' rather than from files named `A', `B' and `C'. - *Note Marking Conflicts::. - -`-m' -`--merge' - Apply the edit script to the first file and send the result to - standard output. Unlike piping the output from `diff3' to `ed', - this works even for binary files and incomplete lines. `-A' is - assumed if no edit script option is specified. *Note Bypassing - ed::. - -`-T' -`--initial-tab' - Output a tab rather than two spaces before the text of a line in - normal format. This causes the alignment of tabs in the line to - look normal. *Note Tabs::. - -`-v' -`--version' - Output version information and then exit. - -`-x' -`--overlap-only' - Like `-e', except output only the overlapping changes. *Note - Which Changes::. - -`-X' - Like `-E', except output only the overlapping changes. In other - words, like `-x', except bracket changes as in `-E'. *Note - Marking Conflicts::. - -`-3' -`--easy-only' - Like `-e', except output only the nonoverlapping changes. *Note - Which Changes::. - - -File: diff.info, Node: Invoking patch, Next: Invoking sdiff, Prev: Invoking diff3, Up: Top - -Invoking `patch' -**************** - - Normally `patch' is invoked like this: - - patch -to coordinate with other volunteers. - -* Menu: - -* Shortcomings:: Suggested projects for improvements. -* Bugs:: Reporting bugs. - - -File: diff.info, Node: Shortcomings, Next: Bugs, Up: Projects - -Suggested Projects for Improving GNU `diff' and `patch' -======================================================= - - One should be able to use GNU `diff' to generate a patch from any -pair of directory trees, and given the patch and a copy of one such -tree, use `patch' to generate a faithful copy of the other. -Unfortunately, some changes to directory trees cannot be expressed using -current patch formats; also, `patch' does not handle some of the -existing formats. These shortcomings motivate the following suggested -projects. - -* Menu: - -* Internationalization:: Handling multibyte and varying-width characters. -* Changing Structure:: Handling changes to the directory structure. -* Special Files:: Handling symbolic links, device special files, etc. -* Unusual File Names:: Handling file names that contain unusual characters. -* Time Stamp Order:: Outputting diffs in time stamp order. -* Ignoring Changes:: Ignoring certain changes while showing others. -* Speedups:: Improving performance. - - -File: diff.info, Node: Internationalization, Next: Changing Structure, Up: Shortcomings - -Handling Multibyte and Varying-Width Characters ------------------------------------------------ - - `diff', `diff3' and `sdiff' treat each line of input as a string of -unibyte characters. This can mishandle multibyte characters in some -cases. For example, when asked to ignore spaces, `diff' does not -properly ignore a multibyte space character. - - Also, `diff' currently assumes that each byte is one column wide, -and this assumption is incorrect in some locales, e.g., locales that -use UTF-8 encoding. This causes problems with the `-y' or -`--side-by-side' option of `diff'. - - These problems need to be fixed without unduly affecting the -performance of the utilities in unibyte environments. - - The IBM GNU/Linux Technology Center Internationalization Team has -proposed some patches to support internationalized `diff' -`http://oss.software.ibm.com/developer/opensource/linux/patches/i18n/diffutils-2.7.2-i18n-0.1.patch.gz'. -Unfortunately, these patches are incomplete and are to an older version -of `diff', so more work needs to be done in this area. - - -File: diff.info, Node: Changing Structure, Next: Special Files, Prev: Internationalization, Up: Shortcomings - -Handling Changes to the Directory Structure -------------------------------------------- - - `diff' and `patch' do not handle some changes to directory -structure. For example, suppose one directory tree contains a directory -named `D' with some subsidiary files, and another contains a file with -the same name `D'. `diff -r' does not output enough information for -`patch' to transform the directory subtree into the file. - - There should be a way to specify that a file has been removed without -having to include its entire contents in the patch file. There should -also be a way to tell `patch' that a file was renamed, even if there is -no way for `diff' to generate such information. There should be a way -to tell `patch' that a file's time stamp has changed, even if its -contents have not changed. - - These problems can be fixed by extending the `diff' output format to -represent changes in directory structure, and extending `patch' to -understand these extensions. - - -File: diff.info, Node: Special Files, Next: Unusual File Names, Prev: Changing Structure, Up: Shortcomings - -Files that are Neither Directories Nor Regular Files ----------------------------------------------------- - - Some files are neither directories nor regular files: they are -unusual files like symbolic links, device special files, named pipes, -and sockets. Currently, `diff' treats symbolic links like regular -files; it treats other special files like regular files if they are -specified at the top level, but simply reports their presence when -comparing directories. This means that `patch' cannot represent changes -to such files. For example, if you change which file a symbolic link -points to, `diff' outputs the difference between the two files, instead -of the change to the symbolic link. - - `diff' should optionally report changes to special files specially, -and `patch' should be extended to understand these extensions. - - -File: diff.info, Node: Unusual File Names, Next: Time Stamp Order, Prev: Special Files, Up: Shortcomings - -File Names that Contain Unusual Characters ------------------------------------------- - - When a file name contains an unusual character like a newline or -white space, `diff -r' generates a patch that `patch' cannot parse. -The problem is with format of `diff' output, not just with `patch', -because with odd enough file names one can cause `diff' to generate a -patch that is syntactically correct but patches the wrong files. The -format of `diff' output should be extended to handle all possible file -names. - - -File: diff.info, Node: Time Stamp Order, Next: Ignoring Changes, Prev: Unusual File Names, Up: Shortcomings - -Outputting Diffs in Time Stamp Order ------------------------------------- - - Applying `patch' to a multiple-file diff can result in files whose -time stamps are out of order. GNU `patch' has options to restore the -time stamps of the updated files (*note Patching Time Stamps::), but -sometimes it is useful to generate a patch that works even if the -recipient does not have GNU patch, or does not use these options. One -way to do this would be to implement a `diff' option to output diffs in -time stamp order. - - -File: diff.info, Node: Ignoring Changes, Next: Speedups, Prev: Time Stamp Order, Up: Shortcomings - -Ignoring Certain Changes ------------------------- - - It would be nice to have a feature for specifying two strings, one in -FROM-FILE and one in TO-FILE, which should be considered to match. -Thus, if the two strings are `foo' and `bar', then if two lines differ -only in that `foo' in file 1 corresponds to `bar' in file 2, the lines -are treated as identical. - - It is not clear how general this feature can or should be, or what -syntax should be used for it. - - A partial substitute is to filter one or both files before comparing, -e.g.: - - sed 's/foo/bar/g' file1 | diff - file2 - - However, this outputs the filtered text, not the original. - - -File: diff.info, Node: Speedups, Prev: Ignoring Changes, Up: Shortcomings - -Improving Performance ---------------------- - - When comparing two large directory structures, one of which was -originally copied from the other with time stamps preserved (e.g., with -`cp -pR'), it would greatly improve performance if an option told -`diff' to assume that two files with the same size and time stamps have -the same content. *Note diff Performance::. - - -File: diff.info, Node: Bugs, Prev: Shortcomings, Up: Projects - -Reporting Bugs -============== - - If you think you have found a bug in GNU `cmp', `diff', `diff3', or -`sdiff', please report it by electronic mail to the GNU utilities bug -report mailing list -(http://mail.gnu.org/mailman/listinfo/bug-gnu-utils) -. Please send bug reports for GNU `patch' to -. Send as precise a description of the problem as -you can, including the output of the `--version' option and sample -input files that produce the bug, if applicable. If you have a -nontrivial fix for the bug, please send it as well. If you have a -patch, please send it too. It may simplify the maintainer's job if the -patch is relative to a recent test release, which you can find in the -directory `ftp://alpha.gnu.org/gnu/diffutils/'. - - -File: diff.info, Node: Copying This Manual, Next: Index, Prev: Projects, Up: Top - -Copying This Manual -******************* - -* Menu: - -* GNU Free Documentation License:: License for copying this manual. - - -File: diff.info, Node: GNU Free Documentation License, Up: Copying This Manual - -GNU Free Documentation License -============================== - - Version 1.1, March 2000 - Copyright (C) 2000 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - 0. PREAMBLE - - The purpose of this License is to make a manual, textbook, or other - written document "free" in the sense of freedom: to assure everyone - the effective freedom to copy and redistribute it, with or without - modifying it, either commercially or noncommercially. Secondarily, - this License preserves for the author and publisher a way to get - credit for their work, while not being considered responsible for - modifications made by others. - - This License is a kind of "copyleft", which means that derivative - works of the document must themselves be free in the same sense. - It complements the GNU General Public License, which is a copyleft - license designed for free software. - - We have designed this License in order to use it for manuals for - free software, because free software needs free documentation: a - free program should come with manuals providing the same freedoms - that the software does. But this License is not limited to - software manuals; it can be used for any textual work, regardless - of subject matter or whether it is published as a printed book. - We recommend this License principally for works whose purpose is - instruction or reference. - - 1. APPLICABILITY AND DEFINITIONS - - This License applies to any manual or other work that contains a - notice placed by the copyright holder saying it can be distributed - under the terms of this License. The "Document", below, refers to - any such manual or work. Any member of the public is a licensee, - and is addressed as "you". - - A "Modified Version" of the Document means any work containing the - Document or a portion of it, either copied verbatim, or with - modifications and/or translated into another language. - - A "Secondary Section" is a named appendix or a front-matter - section of the Document that deals exclusively with the - relationship of the publishers or authors of the Document to the - Document's overall subject (or to related matters) and contains - nothing that could fall directly within that overall subject. - (For example, if the Document is in part a textbook of - mathematics, a Secondary Section may not explain any mathematics.) - The relationship could be a matter of historical connection with - the subject or with related matters, or of legal, commercial, - philosophical, ethical or political position regarding them. - - The "Invariant Sections" are certain Secondary Sections whose - titles are designated, as being those of Invariant Sections, in - the notice that says that the Document is released under this - License. - - The "Cover Texts" are certain short passages of text that are - listed, as Front-Cover Texts or Back-Cover Texts, in the notice - that says that the Document is released under this License. - - A "Transparent" copy of the Document means a machine-readable copy, - represented in a format whose specification is available to the - general public, whose contents can be viewed and edited directly - and straightforwardly with generic text editors or (for images - composed of pixels) generic paint programs or (for drawings) some - widely available drawing editor, and that is suitable for input to - text formatters or for automatic translation to a variety of - formats suitable for input to text formatters. A copy made in an - otherwise Transparent file format whose markup has been designed - to thwart or discourage subsequent modification by readers is not - Transparent. A copy that is not "Transparent" is called "Opaque". - - Examples of suitable formats for Transparent copies include plain - ASCII without markup, Texinfo input format, LaTeX input format, - SGML or XML using a publicly available DTD, and - standard-conforming simple HTML designed for human modification. - Opaque formats include PostScript, PDF, proprietary formats that - can be read and edited only by proprietary word processors, SGML - or XML for which the DTD and/or processing tools are not generally - available, and the machine-generated HTML produced by some word - processors for output purposes only. - - The "Title Page" means, for a printed book, the title page itself, - plus such following pages as are needed to hold, legibly, the - material this License requires to appear in the title page. For - works in formats which do not have any title page as such, "Title - Page" means the text near the most prominent appearance of the - work's title, preceding the beginning of the body of the text. - - 2. VERBATIM COPYING - - You may copy and distribute the Document in any medium, either - commercially or noncommercially, provided that this License, the - copyright notices, and the license notice saying this License - applies to the Document are reproduced in all copies, and that you - add no other conditions whatsoever to those of this License. You - may not use technical measures to obstruct or control the reading - or further copying of the copies you make or distribute. However, - you may accept compensation in exchange for copies. If you - distribute a large enough number of copies you must also follow - the conditions in section 3. - - You may also lend copies, under the same conditions stated above, - and you may publicly display copies. - - 3. COPYING IN QUANTITY - - If you publish printed copies of the Document numbering more than - 100, and the Document's license notice requires Cover Texts, you - must enclose the copies in covers that carry, clearly and legibly, - all these Cover Texts: Front-Cover Texts on the front cover, and - Back-Cover Texts on the back cover. Both covers must also clearly - and legibly identify you as the publisher of these copies. The - front cover must present the full title with all words of the - title equally prominent and visible. You may add other material - on the covers in addition. Copying with changes limited to the - covers, as long as they preserve the title of the Document and - satisfy these conditions, can be treated as verbatim copying in - other respects. - - If the required texts for either cover are too voluminous to fit - legibly, you should put the first ones listed (as many as fit - reasonably) on the actual cover, and continue the rest onto - adjacent pages. - - If you publish or distribute Opaque copies of the Document - numbering more than 100, you must either include a - machine-readable Transparent copy along with each Opaque copy, or - state in or with each Opaque copy a publicly-accessible - computer-network location containing a complete Transparent copy - of the Document, free of added material, which the general - network-using public has access to download anonymously at no - charge using public-standard network protocols. If you use the - latter option, you must take reasonably prudent steps, when you - begin distribution of Opaque copies in quantity, to ensure that - this Transparent copy will remain thus accessible at the stated - location until at least one year after the last time you - distribute an Opaque copy (directly or through your agents or - retailers) of that edition to the public. - - It is requested, but not required, that you contact the authors of - the Document well before redistributing any large number of - copies, to give them a chance to provide you with an updated - version of the Document. - - 4. MODIFICATIONS - - You may copy and distribute a Modified Version of the Document - under the conditions of sections 2 and 3 above, provided that you - release the Modified Version under precisely this License, with - the Modified Version filling the role of the Document, thus - licensing distribution and modification of the Modified Version to - whoever possesses a copy of it. In addition, you must do these - things in the Modified Version: - - A. Use in the Title Page (and on the covers, if any) a title - distinct from that of the Document, and from those of - previous versions (which should, if there were any, be listed - in the History section of the Document). You may use the - same title as a previous version if the original publisher of - that version gives permission. - - B. List on the Title Page, as authors, one or more persons or - entities responsible for authorship of the modifications in - the Modified Version, together with at least five of the - principal authors of the Document (all of its principal - authors, if it has less than five). - - C. State on the Title page the name of the publisher of the - Modified Version, as the publisher. - - D. Preserve all the copyright notices of the Document. - - E. Add an appropriate copyright notice for your modifications - adjacent to the other copyright notices. - - F. Include, immediately after the copyright notices, a license - notice giving the public permission to use the Modified - Version under the terms of this License, in the form shown in - the Addendum below. - - G. Preserve in that license notice the full lists of Invariant - Sections and required Cover Texts given in the Document's - license notice. - - H. Include an unaltered copy of this License. - - I. Preserve the section entitled "History", and its title, and - add to it an item stating at least the title, year, new - authors, and publisher of the Modified Version as given on - the Title Page. If there is no section entitled "History" in - the Document, create one stating the title, year, authors, - and publisher of the Document as given on its Title Page, - then add an item describing the Modified Version as stated in - the previous sentence. - - J. Preserve the network location, if any, given in the Document - for public access to a Transparent copy of the Document, and - likewise the network locations given in the Document for - previous versions it was based on. These may be placed in - the "History" section. You may omit a network location for a - work that was published at least four years before the - Document itself, or if the original publisher of the version - it refers to gives permission. - - K. In any section entitled "Acknowledgments" or "Dedications", - preserve the section's title, and preserve in the section all - the substance and tone of each of the contributor - acknowledgments and/or dedications given therein. - - L. Preserve all the Invariant Sections of the Document, - unaltered in their text and in their titles. Section numbers - or the equivalent are not considered part of the section - titles. - - M. Delete any section entitled "Endorsements". Such a section - may not be included in the Modified Version. - - N. Do not retitle any existing section as "Endorsements" or to - conflict in title with any Invariant Section. - - If the Modified Version includes new front-matter sections or - appendices that qualify as Secondary Sections and contain no - material copied from the Document, you may at your option - designate some or all of these sections as invariant. To do this, - add their titles to the list of Invariant Sections in the Modified - Version's license notice. These titles must be distinct from any - other section titles. - - You may add a section entitled "Endorsements", provided it contains - nothing but endorsements of your Modified Version by various - parties--for example, statements of peer review or that the text - has been approved by an organization as the authoritative - definition of a standard. - - You may add a passage of up to five words as a Front-Cover Text, - and a passage of up to 25 words as a Back-Cover Text, to the end - of the list of Cover Texts in the Modified Version. Only one - passage of Front-Cover Text and one of Back-Cover Text may be - added by (or through arrangements made by) any one entity. If the - Document already includes a cover text for the same cover, - previously added by you or by arrangement made by the same entity - you are acting on behalf of, you may not add another; but you may - replace the old one, on explicit permission from the previous - publisher that added the old one. - - The author(s) and publisher(s) of the Document do not by this - License give permission to use their names for publicity for or to - assert or imply endorsement of any Modified Version. - - 5. COMBINING DOCUMENTS - - You may combine the Document with other documents released under - this License, under the terms defined in section 4 above for - modified versions, provided that you include in the combination - all of the Invariant Sections of all of the original documents, - unmodified, and list them all as Invariant Sections of your - combined work in its license notice. - - The combined work need only contain one copy of this License, and - multiple identical Invariant Sections may be replaced with a single - copy. If there are multiple Invariant Sections with the same name - but different contents, make the title of each such section unique - by adding at the end of it, in parentheses, the name of the - original author or publisher of that section if known, or else a - unique number. Make the same adjustment to the section titles in - the list of Invariant Sections in the license notice of the - combined work. - - In the combination, you must combine any sections entitled - "History" in the various original documents, forming one section - entitled "History"; likewise combine any sections entitled - "Acknowledgments", and any sections entitled "Dedications". You - must delete all sections entitled "Endorsements." - - 6. COLLECTIONS OF DOCUMENTS - - You may make a collection consisting of the Document and other - documents released under this License, and replace the individual - copies of this License in the various documents with a single copy - that is included in the collection, provided that you follow the - rules of this License for verbatim copying of each of the - documents in all other respects. - - You may extract a single document from such a collection, and - distribute it individually under this License, provided you insert - a copy of this License into the extracted document, and follow - this License in all other respects regarding verbatim copying of - that document. - - 7. AGGREGATION WITH INDEPENDENT WORKS - - A compilation of the Document or its derivatives with other - separate and independent documents or works, in or on a volume of - a storage or distribution medium, does not as a whole count as a - Modified Version of the Document, provided no compilation - copyright is claimed for the compilation. Such a compilation is - called an "aggregate", and this License does not apply to the - other self-contained works thus compiled with the Document, on - account of their being thus compiled, if they are not themselves - derivative works of the Document. - - If the Cover Text requirement of section 3 is applicable to these - copies of the Document, then if the Document is less than one - quarter of the entire aggregate, the Document's Cover Texts may be - placed on covers that surround only the Document within the - aggregate. Otherwise they must appear on covers around the whole - aggregate. - - 8. TRANSLATION - - Translation is considered a kind of modification, so you may - distribute translations of the Document under the terms of section - 4. Replacing Invariant Sections with translations requires special - permission from their copyright holders, but you may include - translations of some or all Invariant Sections in addition to the - original versions of these Invariant Sections. You may include a - translation of this License provided that you also include the - original English version of this License. In case of a - disagreement between the translation and the original English - version of this License, the original English version will prevail. - - 9. TERMINATION - - You may not copy, modify, sublicense, or distribute the Document - except as expressly provided for under this License. Any other - attempt to copy, modify, sublicense or distribute the Document is - void, and will automatically terminate your rights under this - License. However, parties who have received copies, or rights, - from you under this License will not have their licenses - terminated so long as such parties remain in full compliance. - - 10. FUTURE REVISIONS OF THIS LICENSE - - The Free Software Foundation may publish new, revised versions of - the GNU Free Documentation License from time to time. Such new - versions will be similar in spirit to the present version, but may - differ in detail to address new problems or concerns. See - `http://www.gnu.org/copyleft/'. - - Each version of the License is given a distinguishing version - number. If the Document specifies that a particular numbered - version of this License "or any later version" applies to it, you - have the option of following the terms and conditions either of - that specified version or of any later version that has been - published (not as a draft) by the Free Software Foundation. If - the Document does not specify a version number of this License, - you may choose any version ever published (not as a draft) by the - Free Software Foundation. - -ADDENDUM: How to use this License for your documents ----------------------------------------------------- - - To use this License in a document you have written, include a copy of -the License in the document and put the following copyright and license -notices just after the title page: - - Copyright (C) YEAR YOUR NAME. - Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.1 - or any later version published by the Free Software Foundation; - with the Invariant Sections being LIST THEIR TITLES, with the - Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. - A copy of the license is included in the section entitled ``GNU - Free Documentation License''. - - If you have no Invariant Sections, write "with no Invariant Sections" -instead of saying which ones are invariant. If you have no Front-Cover -Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being -LIST"; likewise for Back-Cover Texts. - - If your document contains nontrivial examples of program code, we -recommend releasing these examples in parallel under your choice of -free software license, such as the GNU General Public License, to -permit their use in free software. - - -File: diff.info, Node: Index, Prev: Copying This Manual, Up: Top - -Index -***** - -* Menu: - -* ! output format: Context. -* +- output format: Unified Format. -* < output format: Normal. -* <<<<<<< for marking conflicts: Marking Conflicts. -* _POSIX2_VERSION: Standards conformance. -* aligning tab stops: Tabs. -* alternate file names: Alternate Names. -* backup file names: Backup Names. -* backup file strategy: Backups. -* binary file diff: Binary. -* blank and tab difference suppression: White Space. -* blank line difference suppression: Blank Lines. -* brief difference reports: Brief. -* bug reports: Bugs. -* C function headings: C Function Headings. -* C if-then-else output format: If-then-else. -* case difference suppression: Case Folding. -* ClearCase: Revision Control. -* cmp invocation: Invoking cmp. -* cmp options: cmp Options. -* columnar output: Side by Side. -* common mistakes with patches: Avoiding Common Mistakes. -* comparing three files: Comparing Three Files. -* conflict: diff3 Merging. -* conflict marking: Marking Conflicts. -* context output format: Context. -* creating files: Creating and Removing. -* diagnostics from patch: patch Messages. -* diff invocation: Invoking diff. -* diff merging: Interactive Merging. -* diff options: diff Options. -* diff sample input: Sample diff Input. -* diff3 hunks: diff3 Hunks. -* diff3 invocation: Invoking diff3. -* diff3 options: diff3 Options. -* diff3 sample input: Sample diff3 Input. -* directories and patch: patch Directories. -* directory structure changes: Changing Structure. -* dry runs for patch: Dry Runs. -* ed script output format: ed Scripts. -* EDITOR: Merge Commands. -* empty files, removing: Creating and Removing. -* exabyte, definition of: cmp Options. -* exbibyte, definition of: cmp Options. -* FDL, GNU Free Documentation License: GNU Free Documentation License. -* file name alternates: Alternate Names. -* file names with unusual characters: Unusual File Names. -* format of diff output: Output Formats. -* format of diff3 output: Comparing Three Files. -* formats for if-then-else line groups: Line Group Formats. -* forward ed script output format: Forward ed. -* full lines: Incomplete Lines. -* function headings, C: C Function Headings. -* fuzz factor when patching: Inexact. -* gibibyte, definition of: cmp Options. -* gigabyte, definition of: cmp Options. -* headings: Sections. -* hunks: Hunks. -* hunks for diff3: diff3 Hunks. -* if-then-else output format: If-then-else. -* ifdef output format: If-then-else. -* imperfect patch application: Imperfect. -* incomplete line merging: Merging Incomplete Lines. -* incomplete lines: Incomplete Lines. -* inexact patches: Inexact. -* inhibit messages from patch: More or Fewer Messages. -* interactive merging: Interactive Merging. -* introduction: Comparison. -* intuiting file names from patches: Multiple Patches. -* invoking cmp: Invoking cmp. -* invoking diff: Invoking diff. -* invoking diff3: Invoking diff3. -* invoking patch: Invoking patch. -* invoking sdiff: Invoking sdiff. -* keyboard input to patch: patch and Keyboard Input. -* kibibyte, definition of: cmp Options. -* kilobyte, definition of: cmp Options. -* LC_COLLATE: Comparing Directories. -* LC_NUMERIC: Line Group Formats. -* LC_TIME: Detailed Context. -* line formats: Line Formats. -* line group formats: Line Group Formats. -* mebibyte, definition of: cmp Options. -* megabyte, definition of: cmp Options. -* merge commands: Merge Commands. -* merged diff3 format: Bypassing ed. -* merged output format: If-then-else. -* merging from a common ancestor: diff3 Merging. -* merging interactively: Merge Commands. -* messages from patch: patch Messages. -* multibyte characters: Internationalization. -* multiple patches: Multiple Patches. -* newline treatment by diff: Incomplete Lines. -* normal output format: Normal. -* options for cmp: cmp Options. -* options for diff: diff Options. -* options for diff3: diff3 Options. -* options for patch: patch Options. -* options for sdiff: sdiff Options. -* output formats: Output Formats. -* overlap: diff3 Merging. -* overlapping change, selection of: Which Changes. -* overview of diff and patch: Overview. -* paginating diff output: Pagination. -* patch consumer tips: Tips for Patch Consumers. -* patch input format: patch Input. -* patch invocation: Invoking patch. -* patch messages and questions: patch Messages. -* patch options: patch Options. -* patch producer tips: Tips for Patch Producers. -* patch, common mistakes: Avoiding Common Mistakes. -* PATCH_GET: Revision Control. -* PATCH_VERSION_CONTROL: Backup Names. -* patches, shrinking: Generating Smaller Patches. -* patching directories: patch Directories. -* pebibyte, definition of: cmp Options. -* performance of diff: diff Performance. -* petabyte, definition of: cmp Options. -* POSIX <1>: Standards conformance. -* POSIX: patch and POSIX. -* POSIXLY_CORRECT <1>: patch and POSIX. -* POSIXLY_CORRECT: Standards conformance. -* projects for directories: Shortcomings. -* quoting style: patch Quoting Style. -* QUOTING_STYLE: patch Quoting Style. -* RCS: Revision Control. -* RCS script output format: RCS. -* regular expression matching headings: Specified Headings. -* regular expression suppression: Specified Folding. -* reject file names: Reject Names. -* removing empty files: Creating and Removing. -* reporting bugs: Bugs. -* reversed patches: Reversed Patches. -* revision control: Revision Control. -* sample input for diff: Sample diff Input. -* sample input for diff3: Sample diff3 Input. -* SCCS: Revision Control. -* script output formats: Scripts. -* sdiff invocation: Invoking sdiff. -* sdiff options: sdiff Options. -* sdiff output format: sdiff Option Summary. -* section headings: Sections. -* side by side: Side by Side. -* side by side format: Side by Side Format. -* SIMPLE_BACKUP_SUFFIX: Backup Names. -* special files: Special Files. -* specified headings: Specified Headings. -* summarizing which files differ: Brief. -* System V diff3 compatibility: Saving the Changed File. -* tab and blank difference suppression: White Space. -* tab stop alignment: Tabs. -* tebibyte, definition of: cmp Options. -* terabyte, definition of: cmp Options. -* testing patch: Dry Runs. -* text versus binary diff: Binary. -* time stamp format, context diffs: Detailed Context. -* time stamp format, unified diffs: Detailed Unified. -* time stamps on patched files: Patching Time Stamps. -* traditional patch: patch and Tradition. -* two-column output: Side by Side. -* unified output format: Unified Format. -* unmerged change: Which Changes. -* varying-width characters: Internationalization. -* verbose messages from patch: More or Fewer Messages. -* version control: Revision Control. -* VERSION_CONTROL <1>: Backup Names. -* VERSION_CONTROL: Revision Control. -* white space in patches: Changed White Space. -* yottabyte, definition of: cmp Options. -* zettabyte, definition of: cmp Options. - - - -Tag Table: -Node: Top1653 -Node: Overview4045 -Node: Comparison7202 -Node: Hunks9888 -Node: White Space11313 -Node: Blank Lines12807 -Node: Case Folding13562 -Node: Specified Folding13977 -Node: Brief15052 -Node: Binary16295 -Node: Output Formats20358 -Node: Sample diff Input21076 -Node: Normal22569 -Node: Detailed Normal23564 -Node: Example Normal25289 -Node: Context26011 -Node: Context Format27567 -Node: Detailed Context28345 -Node: Example Context30234 -Node: Less Context31748 -Node: Unified Format32894 -Node: Detailed Unified33676 -Node: Example Unified34787 -Node: Sections35807 -Node: Specified Headings36552 -Node: C Function Headings38083 -Node: Alternate Names38908 -Node: Side by Side39808 -Node: Side by Side Format41947 -Node: Example Side by Side42836 -Node: Scripts44162 -Node: ed Scripts44563 -Node: Detailed ed45756 -Node: Example ed47497 -Node: Forward ed47934 -Node: RCS48696 -Node: If-then-else49904 -Node: Line Group Formats51572 -Node: Line Formats57437 -Node: Detailed If-then-else60693 -Node: Example If-then-else62583 -Node: Incomplete Lines63632 -Node: Comparing Directories65263 -Node: Adjusting Output69220 -Node: Tabs69645 -Node: Pagination71177 -Node: diff Performance71626 -Node: Comparing Three Files74708 -Node: Sample diff3 Input75580 -Node: Detailed diff3 Normal76528 -Node: diff3 Hunks78307 -Node: Example diff3 Normal79593 -Node: diff3 Merging80616 -Node: Which Changes82854 -Node: Marking Conflicts84258 -Node: Bypassing ed86714 -Node: Merging Incomplete Lines88068 -Node: Saving the Changed File88784 -Node: Interactive Merging89390 -Node: sdiff Option Summary90094 -Node: Merge Commands91242 -Node: Merging with patch92503 -Node: patch Input94867 -Node: Revision Control95537 -Node: Imperfect96689 -Node: Changed White Space97825 -Node: Reversed Patches98606 -Node: Inexact100056 -Node: Dry Runs103599 -Node: Creating and Removing104447 -Node: Patching Time Stamps105486 -Node: Multiple Patches107677 -Node: patch Directories110328 -Node: Backups111942 -Node: Backup Names112996 -Ref: Backup Names-Footnote-1115955 -Node: Reject Names116082 -Node: patch Messages116660 -Node: More or Fewer Messages117706 -Node: patch and Keyboard Input118319 -Node: patch Quoting Style119332 -Node: patch and POSIX120464 -Node: patch and Tradition121290 -Node: Making Patches124734 -Node: Tips for Patch Producers125552 -Node: Tips for Patch Consumers126796 -Node: Avoiding Common Mistakes127421 -Node: Generating Smaller Patches129934 -Node: Invoking cmp131683 -Node: cmp Options132532 -Node: Invoking diff135896 -Node: diff Options137599 -Node: Invoking diff3145722 -Node: diff3 Options146352 -Node: Invoking patch149255 -Node: patch Options150455 -Node: Invoking sdiff155669 -Node: sdiff Options156808 -Node: Standards conformance159561 -Node: Projects161299 -Node: Shortcomings162002 -Node: Internationalization163092 -Node: Changing Structure164247 -Node: Special Files165336 -Node: Unusual File Names166282 -Node: Time Stamp Order166904 -Node: Ignoring Changes167531 -Node: Speedups168285 -Node: Bugs168733 -Node: Copying This Manual169574 -Node: GNU Free Documentation License169782 -Node: Index189646 - -End Tag Table diff --git a/src/bin/diffutils/doc/diff.texi b/src/bin/diffutils/doc/diff.texi deleted file mode 100644 index 444e5d8f35..0000000000 --- a/src/bin/diffutils/doc/diff.texi +++ /dev/null @@ -1,4556 +0,0 @@ -\input texinfo @c -*-texinfo-*- -@comment $Id: diff.texi 6847 2004-03-02 00:45:50Z michaelphipps $ -@comment %**start of header -@setfilename diff.info -@include version.texi -@settitle Comparing and Merging Files -@syncodeindex vr cp -@setchapternewpage odd -@comment %**end of header -@copying -This manual is for GNU Diffutils -(version @value{VERSION}, @value{UPDATED}), -and documents the @sc{gnu} @command{diff}, @command{diff3}, -@command{sdiff}, and @command{cmp} commands for showing the -differences between files and the @sc{gnu} @command{patch} command for -using their output to update files. - -Copyright @copyright{} 1992, 1993, 1994, 1998, 2001, 2002 Free -Software Foundation, Inc. - -@quotation -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.1 or -any later version published by the Free Software Foundation; with no -Invariant Sections, with the Front-Cover texts being ``A GNU Manual,'' -and with the Back-Cover Texts as in (a) below. A copy of the -license is included in the section entitled ``GNU Free Documentation -License.'' - -(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify -this GNU Manual, like GNU software. Copies published by the Free -Software Foundation raise funds for GNU development.'' -@end quotation -@end copying - -@c Debian install-info (up through at least version 1.9.20) uses only the -@c first dircategory. Put this one first, as it is more useful in practice. -@dircategory Individual utilities -@direntry -* cmp: (diff)Invoking cmp. Compare 2 files byte by byte. -* diff: (diff)Invoking diff. Compare 2 files line by line. -* diff3: (diff)Invoking diff3. Compare 3 files line by line. -* patch: (diff)Invoking patch. Apply a patch to a file. -* sdiff: (diff)Invoking sdiff. Merge 2 files side-by-side. -@end direntry - -@dircategory GNU packages -@direntry -* Diff: (diff). Comparing and merging files. -@end direntry - -@titlepage -@title Comparing and Merging Files -@subtitle for Diffutils @value{VERSION} and @code{patch} 2.5.4 -@subtitle @value{UPDATED} -@author David MacKenzie, Paul Eggert, and Richard Stallman -@page -@vskip 0pt plus 1filll -@insertcopying -@end titlepage - -@shortcontents -@contents - -@ifnottex -@node Top -@top Comparing and Merging Files - -@insertcopying -@end ifnottex - -@menu -* Overview:: Preliminary information. -* Comparison:: What file comparison means. - -* Output Formats:: Formats for two-way difference reports. -* Incomplete Lines:: Lines that lack trailing newlines. -* Comparing Directories:: Comparing files and directories. -* Adjusting Output:: Making @command{diff} output prettier. -* diff Performance:: Making @command{diff} smarter or faster. - -* Comparing Three Files:: Formats for three-way difference reports. -* diff3 Merging:: Merging from a common ancestor. - -* Interactive Merging:: Interactive merging with @command{sdiff}. - -* Merging with patch:: Using @command{patch} to change old files into new ones. -* Making Patches:: Tips for making and using patch distributions. - -* Invoking cmp:: Compare two files byte by byte. -* Invoking diff:: Compare two files line by line. -* Invoking diff3:: Compare three files line by line. -* Invoking patch:: Apply a diff file to an original. -* Invoking sdiff:: Side-by-side merge of file differences. - -* Standards conformance:: Conformance to the @sc{posix} standard. -* Projects:: If you've found a bug or other shortcoming. - -* Copying This Manual:: How to make copies of this manual. -* Index:: Index. -@end menu - -@node Overview -@unnumbered Overview -@cindex overview of @command{diff} and @command{patch} - -Computer users often find occasion to ask how two files differ. Perhaps -one file is a newer version of the other file. Or maybe the two files -started out as identical copies but were changed by different people. - -You can use the @command{diff} command to show differences between two -files, or each corresponding file in two directories. @command{diff} -outputs differences between files line by line in any of several -formats, selectable by command line options. This set of differences is -often called a @dfn{diff} or @dfn{patch}. For files that are identical, -@command{diff} normally produces no output; for binary (non-text) files, -@command{diff} normally reports only that they are different. - -You can use the @command{cmp} command to show the byte and line numbers -where two files differ. @command{cmp} can also show all the bytes -that differ between the two files, side by side. A way to compare -two files character by character is the Emacs command @kbd{M-x -compare-windows}. @xref{Other Window, , Other Window, emacs, The @sc{gnu} -Emacs Manual}, for more information on that command. - -You can use the @command{diff3} command to show differences among three -files. When two people have made independent changes to a common -original, @command{diff3} can report the differences between the original -and the two changed versions, and can produce a merged file that -contains both persons' changes together with warnings about conflicts. - -You can use the @command{sdiff} command to merge two files interactively. - -You can use the set of differences produced by @command{diff} to distribute -updates to text files (such as program source code) to other people. -This method is especially useful when the differences are small compared -to the complete files. Given @command{diff} output, you can use the -@command{patch} program to update, or @dfn{patch}, a copy of the file. If you -think of @command{diff} as subtracting one file from another to produce -their difference, you can think of @command{patch} as adding the difference -to one file to reproduce the other. - -This manual first concentrates on making diffs, and later shows how to -use diffs to update files. - -@sc{gnu} @command{diff} was written by Paul Eggert, Mike Haertel, -David Hayes, Richard Stallman, and Len Tower. Wayne Davison designed and -implemented the unified output format. The basic algorithm is described -in ``An O(ND) Difference Algorithm and its Variations'', Eugene W. Myers, -@cite{Algorithmica} Vol.@: 1 No.@: 2, 1986, pp.@: 251--266; and in ``A File -Comparison Program'', Webb Miller and Eugene W. Myers, -@cite{Software---Practice and Experience} Vol.@: 15 No.@: 11, 1985, -pp.@: 1025--1040. -@c From: "Gene Myers" -@c They are about the same basic algorithm; the Algorithmica -@c paper gives a rigorous treatment and the sub-algorithm for -@c delivering scripts and should be the primary reference, but -@c both should be mentioned. -The algorithm was independently discovered as described in -``Algorithms for Approximate String Matching'', -E. Ukkonen, @cite{Information and Control} Vol.@: 64, 1985, pp.@: 100--118. -@c From: "Gene Myers" -@c Date: Wed, 29 Sep 1993 08:27:55 MST -@c Ukkonen should be given credit for also discovering the algorithm used -@c in GNU diff. - -@sc{gnu} @command{diff3} was written by Randy Smith. @sc{gnu} -@command{sdiff} was written by Thomas Lord. @sc{gnu} @command{cmp} -was written by Torbjorn Granlund and David MacKenzie. - -@command{patch} was written mainly by Larry Wall and Paul Eggert; -several @sc{gnu} enhancements were contributed by Wayne Davison and -David MacKenzie. Parts of this manual are adapted from a manual page -written by Larry Wall, with his permission. - -@node Comparison -@chapter What Comparison Means -@cindex introduction - -There are several ways to think about the differences between two files. -One way to think of the differences is as a series of lines that were -deleted from, inserted in, or changed in one file to produce the other -file. @command{diff} compares two files line by line, finds groups of -lines that differ, and reports each group of differing lines. It can -report the differing lines in several formats, which have different -purposes. - -@sc{gnu} @command{diff} can show whether files are different without detailing -the differences. It also provides ways to suppress certain kinds of -differences that are not important to you. Most commonly, such -differences are changes in the amount of white space between words or -lines. @command{diff} also provides ways to suppress differences in -alphabetic case or in lines that match a regular expression that you -provide. These options can accumulate; for example, you can ignore -changes in both white space and alphabetic case. - -Another way to think of the differences between two files is as a -sequence of pairs of bytes that can be either identical or -different. @command{cmp} reports the differences between two files -byte by byte, instead of line by line. As a result, it is often -more useful than @command{diff} for comparing binary files. For text -files, @command{cmp} is useful mainly when you want to know only whether -two files are identical, or whether one file is a prefix of the other. - -To illustrate the effect that considering changes byte by byte -can have compared with considering them line by line, think of what -happens if a single newline character is added to the beginning of a -file. If that file is then compared with an otherwise identical file -that lacks the newline at the beginning, @command{diff} will report that a -blank line has been added to the file, while @command{cmp} will report that -almost every byte of the two files differs. - -@command{diff3} normally compares three input files line by line, finds -groups of lines that differ, and reports each group of differing lines. -Its output is designed to make it easy to inspect two different sets of -changes to the same file. - -@menu -* Hunks:: Groups of differing lines. -* White Space:: Suppressing differences in white space. -* Blank Lines:: Suppressing differences in blank lines. -* Case Folding:: Suppressing differences in alphabetic case. -* Specified Folding:: Suppressing differences that match regular expressions. -* Brief:: Summarizing which files are different. -* Binary:: Comparing binary files or forcing text comparisons. -@end menu - -@node Hunks -@section Hunks -@cindex hunks - -When comparing two files, @command{diff} finds sequences of lines common to -both files, interspersed with groups of differing lines called -@dfn{hunks}. Comparing two identical files yields one sequence of -common lines and no hunks, because no lines differ. Comparing two -entirely different files yields no common lines and one large hunk that -contains all lines of both files. In general, there are many ways to -match up lines between two given files. @command{diff} tries to minimize -the total hunk size by finding large sequences of common lines -interspersed with small hunks of differing lines. - -For example, suppose the file @file{F} contains the three lines -@samp{a}, @samp{b}, @samp{c}, and the file @file{G} contains the same -three lines in reverse order @samp{c}, @samp{b}, @samp{a}. If -@command{diff} finds the line @samp{c} as common, then the command -@samp{diff F G} produces this output: - -@example -1,2d0 -< a -< b -3a2,3 -> b -> a -@end example - -@noindent -But if @command{diff} notices the common line @samp{b} instead, it produces -this output: - -@example -1c1 -< a ---- -> c -3c3 -< c ---- -> a -@end example - -@noindent -It is also possible to find @samp{a} as the common line. @command{diff} -does not always find an optimal matching between the files; it takes -shortcuts to run faster. But its output is usually close to the -shortest possible. You can adjust this tradeoff with the -@option{--minimal} option (@pxref{diff Performance}). - -@node White Space -@section Suppressing Differences in Blank and Tab Spacing -@cindex blank and tab difference suppression -@cindex tab and blank difference suppression - -The @option{-E} and @option{--ignore-tab-expansion} options ignore the -distinction between tabs and spaces on input. A tab is considered to be -equivalent to the number of spaces to the next tab stop. @command{diff} -assumes that tab stops are set every 8 print columns. - -The @option{-b} and @option{--ignore-space-change} options are stronger. -They ignore white space at line end, and consider all other sequences of -one or more white space characters to be equivalent. With these -options, @command{diff} considers the following two lines to be equivalent, -where @samp{$} denotes the line end: - -@example -Here lyeth muche rychnesse in lytell space. -- John Heywood$ -Here lyeth muche rychnesse in lytell space. -- John Heywood $ -@end example - -The @option{-w} and @option{--ignore-all-space} options are stronger still. -They ignore difference even if one line has white space where -the other line has none. @dfn{White space} characters include -tab, newline, vertical tab, form feed, carriage return, and space; -some locales may define additional characters to be white space. -With these options, @command{diff} considers the -following two lines to be equivalent, where @samp{$} denotes the line -end and @samp{^M} denotes a carriage return: - -@example -Here lyeth muche rychnesse in lytell space.-- John Heywood$ - He relyeth much erychnes seinly tells pace. --John Heywood ^M$ -@end example - -@node Blank Lines -@section Suppressing Differences in Blank Lines -@cindex blank line difference suppression - -The @option{-B} and @option{--ignore-blank-lines} options ignore insertions -or deletions of blank lines. These options affect only lines -that are completely empty; they do not affect lines that look empty but -contain space or tab characters. With these options, for example, a -file containing -@example -1. A point is that which has no part. - -2. A line is breadthless length. --- Euclid, The Elements, I -@end example -@noindent -is considered identical to a file containing -@example -1. A point is that which has no part. -2. A line is breadthless length. - - --- Euclid, The Elements, I -@end example - -@node Case Folding -@section Suppressing Case Differences -@cindex case difference suppression - -@sc{gnu} @command{diff} can treat lower case letters as equivalent to their -upper case counterparts, so that, for example, it considers @samp{Funky -Stuff}, @samp{funky STUFF}, and @samp{fUNKy stuFf} to all be the same. -To request this, use the @option{-i} or @option{--ignore-case} option. - -@node Specified Folding -@section Suppressing Lines Matching a Regular Expression -@cindex regular expression suppression - -To ignore insertions and deletions of lines that match a -@command{grep}-style regular expression, use the @option{-I -@var{regexp}} or @option{--ignore-matching-lines=@var{regexp}} option. -You should escape -regular expressions that contain shell metacharacters to prevent the -shell from expanding them. For example, @samp{diff -I '^[[:digit:]]'} ignores -all changes to lines beginning with a digit. - -However, @option{-I} only ignores the insertion or deletion of lines that -contain the regular expression if every changed line in the hunk---every -insertion and every deletion---matches the regular expression. In other -words, for each nonignorable change, @command{diff} prints the complete set -of changes in its vicinity, including the ignorable ones. - -You can specify more than one regular expression for lines to ignore by -using more than one @option{-I} option. @command{diff} tries to match each -line against each regular expression. - -@node Brief -@section Summarizing Which Files Differ -@cindex summarizing which files differ -@cindex brief difference reports - -When you only want to find out whether files are different, and you -don't care what the differences are, you can use the summary output -format. In this format, instead of showing the differences between the -files, @command{diff} simply reports whether files differ. The @option{-q} -and @option{--brief} options select this output format. - -This format is especially useful when comparing the contents of two -directories. It is also much faster than doing the normal line by line -comparisons, because @command{diff} can stop analyzing the files as soon as -it knows that there are any differences. - -You can also get a brief indication of whether two files differ by using -@command{cmp}. For files that are identical, @command{cmp} produces no -output. When the files differ, by default, @command{cmp} outputs the byte -and line number where the first difference occurs. You can use -the @option{-s} option to suppress that information, so that @command{cmp} -produces no output and reports whether the files differ using only its -exit status (@pxref{Invoking cmp}). - -@c Fix this. -Unlike @command{diff}, @command{cmp} cannot compare directories; it can only -compare two files. - -@node Binary -@section Binary Files and Forcing Text Comparisons -@cindex binary file diff -@cindex text versus binary diff - -If @command{diff} thinks that either of the two files it is comparing is -binary (a non-text file), it normally treats that pair of files much as -if the summary output format had been selected (@pxref{Brief}), and -reports only that the binary files are different. This is because line -by line comparisons are usually not meaningful for binary files. - -@command{diff} determines whether a file is text or binary by checking the -first few bytes in the file; the exact number of bytes is system -dependent, but it is typically several thousand. If every byte in -that part of the file is non-null, @command{diff} considers the file to be -text; otherwise it considers the file to be binary. - -Sometimes you might want to force @command{diff} to consider files to be -text. For example, you might be comparing text files that contain -null characters; @command{diff} would erroneously decide that those are -non-text files. Or you might be comparing documents that are in a -format used by a word processing system that uses null characters to -indicate special formatting. You can force @command{diff} to consider all -files to be text files, and compare them line by line, by using the -@option{-a} or @option{--text} option. If the files you compare using this -option do not in fact contain text, they will probably contain few -newline characters, and the @command{diff} output will consist of hunks -showing differences between long lines of whatever characters the files -contain. - -You can also force @command{diff} to consider all files to be binary files, -and report only whether they differ (but not how). Use the -@option{-q} or @option{--brief} option for this. - -Differing binary files are considered to cause trouble because the -resulting @command{diff} output does not capture all the differences. -This trouble causes @command{diff} to exit with status 2. However, -this trouble cannot occur with the @option{--a} or @option{--text} -option, or with the @option{-q} or @option{--brief} option, as these -options both cause @command{diff} to treat binary files like text -files. - -In operating systems that distinguish between text and binary files, -@command{diff} normally reads and writes all data as text. Use the -@option{--binary} option to force @command{diff} to read and write binary -data instead. This option has no effect on a @sc{posix}-compliant system -like @sc{gnu} or traditional Unix. However, many personal computer -operating systems represent the end of a line with a carriage return -followed by a newline. On such systems, @command{diff} normally ignores -these carriage returns on input and generates them at the end of each -output line, but with the @option{--binary} option @command{diff} treats -each carriage return as just another input character, and does not -generate a carriage return at the end of each output line. This can be -useful when dealing with non-text files that are meant to be -interchanged with @sc{posix}-compliant systems. - -The @option{--strip-trailing-cr} causes @command{diff} to treat input -lines that end in carriage return followed by newline as if they end -in plain newline. This can be useful when comparing text that is -imperfectly imported from many personal computer operating systems. -This option affects how lines are read, which in turn affects how they -are compared and output. - -If you want to compare two files byte by byte, you can use the -@command{cmp} program with the @option{-l} option to show the values -of each differing byte in the two files. With @sc{gnu} @command{cmp}, -you can also use the @option{-b} option to show the @sc{ascii} -representation of those bytes. @xref{Invoking cmp}, for more -information. - -If @command{diff3} thinks that any of the files it is comparing is binary -(a non-text file), it normally reports an error, because such -comparisons are usually not useful. @command{diff3} uses the same test as -@command{diff} to decide whether a file is binary. As with @command{diff}, if -the input files contain a few non-text bytes but otherwise are like -text files, you can force @command{diff3} to consider all files to be text -files and compare them line by line by using the @option{-a} or -@option{--text} options. - -@node Output Formats -@chapter @command{diff} Output Formats -@cindex output formats -@cindex format of @command{diff} output - -@command{diff} has several mutually exclusive options for output format. -The following sections describe each format, illustrating how -@command{diff} reports the differences between two sample input files. - -@menu -* Sample diff Input:: Sample @command{diff} input files for examples. -* Normal:: Showing differences without surrounding text. -* Context:: Showing differences with the surrounding text. -* Side by Side:: Showing differences in two columns. -* Scripts:: Generating scripts for other programs. -* If-then-else:: Merging files with if-then-else. -@end menu - -@node Sample diff Input -@section Two Sample Input Files -@cindex @command{diff} sample input -@cindex sample input for @command{diff} - -Here are two sample files that we will use in numerous examples to -illustrate the output of @command{diff} and how various options can change -it. - -This is the file @file{lao}: - -@example -The Way that can be told of is not the eternal Way; -The name that can be named is not the eternal name. -The Nameless is the origin of Heaven and Earth; -The Named is the mother of all things. -Therefore let there always be non-being, - so we may see their subtlety, -And let there always be being, - so we may see their outcome. -The two are the same, -But after they are produced, - they have different names. -@end example - -This is the file @file{tzu}: - -@example -The Nameless is the origin of Heaven and Earth; -The named is the mother of all things. - -Therefore let there always be non-being, - so we may see their subtlety, -And let there always be being, - so we may see their outcome. -The two are the same, -But after they are produced, - they have different names. -They both may be called deep and profound. -Deeper and more profound, -The door of all subtleties! -@end example - -In this example, the first hunk contains just the first two lines of -@file{lao}, the second hunk contains the fourth line of @file{lao} -opposing the second and third lines of @file{tzu}, and the last hunk -contains just the last three lines of @file{tzu}. - -@node Normal -@section Showing Differences Without Context -@cindex normal output format -@cindex @samp{<} output format - -The ``normal'' @command{diff} output format shows each hunk of differences -without any surrounding context. Sometimes such output is the clearest -way to see how lines have changed, without the clutter of nearby -unchanged lines (although you can get similar results with the context -or unified formats by using 0 lines of context). However, this format -is no longer widely used for sending out patches; for that purpose, the -context format (@pxref{Context Format}) and the unified format -(@pxref{Unified Format}) are superior. Normal format is the default for -compatibility with older versions of @command{diff} and the @sc{posix} -standard. Use the @option{--normal} option to select this output -format explicitly. - -@menu -* Detailed Normal:: A detailed description of normal output format. -* Example Normal:: Sample output in the normal format. -@end menu - -@node Detailed Normal -@subsection Detailed Description of Normal Format - -The normal output format consists of one or more hunks of differences; -each hunk shows one area where the files differ. Normal format hunks -look like this: - -@example -@var{change-command} -< @var{from-file-line} -< @var{from-file-line}@dots{} ---- -> @var{to-file-line} -> @var{to-file-line}@dots{} -@end example - -There are three types of change commands. Each consists of a line -number or comma-separated range of lines in the first file, a single -character indicating the kind of change to make, and a line number or -comma-separated range of lines in the second file. All line numbers are -the original line numbers in each file. The types of change commands -are: - -@table @samp -@item @var{l}a@var{r} -Add the lines in range @var{r} of the second file after line @var{l} of -the first file. For example, @samp{8a12,15} means append lines 12--15 -of file 2 after line 8 of file 1; or, if changing file 2 into file 1, -delete lines 12--15 of file 2. - -@item @var{f}c@var{t} -Replace the lines in range @var{f} of the first file with lines in range -@var{t} of the second file. This is like a combined add and delete, but -more compact. For example, @samp{5,7c8,10} means change lines 5--7 of -file 1 to read as lines 8--10 of file 2; or, if changing file 2 into -file 1, change lines 8--10 of file 2 to read as lines 5--7 of file 1. - -@item @var{r}d@var{l} -Delete the lines in range @var{r} from the first file; line @var{l} is where -they would have appeared in the second file had they not been deleted. -For example, @samp{5,7d3} means delete lines 5--7 of file 1; or, if -changing file 2 into file 1, append lines 5--7 of file 1 after line 3 of -file 2. -@end table - -@node Example Normal -@subsection An Example of Normal Format - -Here is the output of the command @samp{diff lao tzu} -(@pxref{Sample diff Input}, for the complete contents of the two files). -Notice that it shows only the lines that are different between the two -files. - -@example -1,2d0 -< The Way that can be told of is not the eternal Way; -< The name that can be named is not the eternal name. -4c2,3 -< The Named is the mother of all things. ---- -> The named is the mother of all things. -> -11a11,13 -> They both may be called deep and profound. -> Deeper and more profound, -> The door of all subtleties! -@end example - -@node Context -@section Showing Differences in Their Context -@cindex context output format -@cindex @samp{!} output format - -Usually, when you are looking at the differences between files, you will -also want to see the parts of the files near the lines that differ, to -help you understand exactly what has changed. These nearby parts of the -files are called the @dfn{context}. - -@sc{gnu} @command{diff} provides two output formats that show context -around the differing lines: @dfn{context format} and @dfn{unified -format}. It can optionally show in which function or section of the -file the differing lines are found. - -If you are distributing new versions of files to other people in the -form of @command{diff} output, you should use one of the output formats -that show context so that they can apply the diffs even if they have -made small changes of their own to the files. @command{patch} can apply -the diffs in this case by searching in the files for the lines of -context around the differing lines; if those lines are actually a few -lines away from where the diff says they are, @command{patch} can adjust -the line numbers accordingly and still apply the diff correctly. -@xref{Imperfect}, for more information on using @command{patch} to apply -imperfect diffs. - -@menu -* Context Format:: An output format that shows surrounding lines. -* Unified Format:: A more compact output format that shows context. -* Sections:: Showing which sections of the files differences are in. -* Alternate Names:: Showing alternate file names in context headers. -@end menu - -@node Context Format -@subsection Context Format - -The context output format shows several lines of context around the -lines that differ. It is the standard format for distributing updates -to source code. - -To select this output format, use the @option{-C @var{lines}}, -@option{--context@r{[}=@var{lines}@r{]}}, or @option{-c} option. The -argument @var{lines} that some of these options take is the number of -lines of context to show. If you do not specify @var{lines}, it -defaults to three. For proper operation, @command{patch} typically needs -at least two lines of context. - -@menu -* Detailed Context:: A detailed description of the context output format. -* Example Context:: Sample output in context format. -* Less Context:: Another sample with less context. -@end menu - -@node Detailed Context -@subsubsection Detailed Description of Context Format - -The context output format starts with a two-line header, which looks -like this: - -@example -*** @var{from-file} @var{from-file-modification-time} ---- @var{to-file} @var{to-file-modification time} -@end example - -@noindent -@vindex LC_TIME -@cindex time stamp format, context diffs -The time stamp normally looks like @samp{2002-02-21 23:30:39.942229878 --0800} to indicate the date, time with fractional seconds, and time -zone in @uref{ftp://ftp.isi.edu/in-notes/rfc2822.txt, Internet RFC -2822 format}. However, a traditional time stamp like @samp{Thu Feb 21 -23:30:39 2002} is used if the @env{LC_TIME} locale category is either -@samp{C} or @samp{POSIX}. - -You can change the header's content with the -@option{--label=@var{label}} option; see @ref{Alternate Names}. - -Next come one or more hunks of differences; each hunk shows one area -where the files differ. Context format hunks look like this: - -@example -*************** -*** @var{from-file-line-range} **** - @var{from-file-line} - @var{from-file-line}@dots{} ---- @var{to-file-line-range} ---- - @var{to-file-line} - @var{to-file-line}@dots{} -@end example - -The lines of context around the lines that differ start with two space -characters. The lines that differ between the two files start with one -of the following indicator characters, followed by a space character: - -@table @samp -@item ! -A line that is part of a group of one or more lines that changed between -the two files. There is a corresponding group of lines marked with -@samp{!} in the part of this hunk for the other file. - -@item + -An ``inserted'' line in the second file that corresponds to nothing in -the first file. - -@item - -A ``deleted'' line in the first file that corresponds to nothing in the -second file. -@end table - -If all of the changes in a hunk are insertions, the lines of -@var{from-file} are omitted. If all of the changes are deletions, the -lines of @var{to-file} are omitted. - -@node Example Context -@subsubsection An Example of Context Format - -Here is the output of @samp{diff -c lao tzu} (@pxref{Sample diff Input}, -for the complete contents of the two files). Notice that up to three -lines that are not different are shown around each line that is -different; they are the context lines. Also notice that the first two -hunks have run together, because their contents overlap. - -@example -*** lao 2002-02-21 23:30:39.942229878 -0800 ---- tzu 2002-02-21 23:30:50.442260588 -0800 -*************** -*** 1,7 **** -- The Way that can be told of is not the eternal Way; -- The name that can be named is not the eternal name. - The Nameless is the origin of Heaven and Earth; -! The Named is the mother of all things. - Therefore let there always be non-being, - so we may see their subtlety, - And let there always be being, ---- 1,6 ---- - The Nameless is the origin of Heaven and Earth; -! The named is the mother of all things. -! - Therefore let there always be non-being, - so we may see their subtlety, - And let there always be being, -*************** -*** 9,11 **** ---- 8,13 ---- - The two are the same, - But after they are produced, - they have different names. -+ They both may be called deep and profound. -+ Deeper and more profound, -+ The door of all subtleties! -@end example - -@node Less Context -@subsubsection An Example of Context Format with Less Context - -Here is the output of @samp{diff -C 1 lao tzu} (@pxref{Sample diff -Input}, for the complete contents of the two files). Notice that at -most one context line is reported here. - -@example -*** lao 2002-02-21 23:30:39.942229878 -0800 ---- tzu 2002-02-21 23:30:50.442260588 -0800 -*************** -*** 1,5 **** -- The Way that can be told of is not the eternal Way; -- The name that can be named is not the eternal name. - The Nameless is the origin of Heaven and Earth; -! The Named is the mother of all things. - Therefore let there always be non-being, ---- 1,4 ---- - The Nameless is the origin of Heaven and Earth; -! The named is the mother of all things. -! - Therefore let there always be non-being, -*************** -*** 11 **** ---- 10,13 ---- - they have different names. -+ They both may be called deep and profound. -+ Deeper and more profound, -+ The door of all subtleties! -@end example - -@node Unified Format -@subsection Unified Format -@cindex unified output format -@cindex @samp{+-} output format - -The unified output format is a variation on the context format that is -more compact because it omits redundant context lines. To select this -output format, use the @option{-U @var{lines}}, -@option{--unified@r{[}=@var{lines}@r{]}}, or @option{-u} -option. The argument @var{lines} is the number of lines of context to -show. When it is not given, it defaults to three. - -At present, only @sc{gnu} @command{diff} can produce this format and -only @sc{gnu} @command{patch} can automatically apply diffs in this -format. For proper operation, @command{patch} typically needs at -least three lines of context. - -@menu -* Detailed Unified:: A detailed description of unified format. -* Example Unified:: Sample output in unified format. -@end menu - -@node Detailed Unified -@subsubsection Detailed Description of Unified Format - -The unified output format starts with a two-line header, which looks -like this: - -@example ---- @var{from-file} @var{from-file-modification-time} -+++ @var{to-file} @var{to-file-modification-time} -@end example - -@noindent -@cindex time stamp format, unified diffs -The time stamp looks like @samp{2002-02-21 23:30:39.942229878 -0800} -to indicate the date, time with fractional seconds, and time zone. - -You can change the header's content with the -@option{--label=@var{label}} option; see @xref{Alternate Names}. - -Next come one or more hunks of differences; each hunk shows one area -where the files differ. Unified format hunks look like this: - -@example -@@@@ @var{from-file-range} @var{to-file-range} @@@@ - @var{line-from-either-file} - @var{line-from-either-file}@dots{} -@end example - -The lines common to both files begin with a space character. The lines -that actually differ between the two files have one of the following -indicator characters in the left print column: - -@table @samp -@item + -A line was added here to the first file. - -@item - -A line was removed here from the first file. -@end table - -@node Example Unified -@subsubsection An Example of Unified Format - -Here is the output of the command @samp{diff -u lao tzu} -(@pxref{Sample diff Input}, for the complete contents of the two files): - -@example ---- lao 2002-02-21 23:30:39.942229878 -0800 -+++ tzu 2002-02-21 23:30:50.442260588 -0800 -@@@@ -1,7 +1,6 @@@@ --The Way that can be told of is not the eternal Way; --The name that can be named is not the eternal name. - The Nameless is the origin of Heaven and Earth; --The Named is the mother of all things. -+The named is the mother of all things. -+ - Therefore let there always be non-being, - so we may see their subtlety, - And let there always be being, -@@@@ -9,3 +8,6 @@@@ - The two are the same, - But after they are produced, - they have different names. -+They both may be called deep and profound. -+Deeper and more profound, -+The door of all subtleties! -@end example - -@node Sections -@subsection Showing Which Sections Differences Are in -@cindex headings -@cindex section headings - -Sometimes you might want to know which part of the files each change -falls in. If the files are source code, this could mean which function -was changed. If the files are documents, it could mean which chapter or -appendix was changed. @sc{gnu} @command{diff} can show this by displaying the -nearest section heading line that precedes the differing lines. Which -lines are ``section headings'' is determined by a regular expression. - -@menu -* Specified Headings:: Showing headings that match regular expressions. -* C Function Headings:: Showing headings of C functions. -@end menu - -@node Specified Headings -@subsubsection Showing Lines That Match Regular Expressions -@cindex specified headings -@cindex regular expression matching headings - -To show in which sections differences occur for files that are not -source code for C or similar languages, use the @option{-F @var{regexp}} -or @option{--show-function-line=@var{regexp}} option. @command{diff} -considers lines that match the @command{grep}-style regular expression -@var{regexp} to be the beginning -of a section of the file. Here are suggested regular expressions for -some common languages: - -@c Please add to this list, e.g. Fortran, Pascal, Perl, Python. -@table @samp -@item ^[[:alpha:]$_] -C, C++, Prolog -@item ^( -Lisp -@item ^@@node -Texinfo -@end table - -This option does not automatically select an output format; in order to -use it, you must select the context format (@pxref{Context Format}) or -unified format (@pxref{Unified Format}). In other output formats it -has no effect. - -The @option{-F} and @option{--show-function-line} options find the nearest -unchanged line that precedes each hunk of differences and matches the -given regular expression. Then they add that line to the end of the -line of asterisks in the context format, or to the @samp{@@@@} line in -unified format. If no matching line exists, they leave the output for -that hunk unchanged. If that line is more than 40 characters long, they -output only the first 40 characters. You can specify more than one -regular expression for such lines; @command{diff} tries to match each line -against each regular expression, starting with the last one given. This -means that you can use @option{-p} and @option{-F} together, if you wish. - -@node C Function Headings -@subsubsection Showing C Function Headings -@cindex C function headings -@cindex function headings, C - -To show in which functions differences occur for C and similar -languages, you can use the @option{-p} or @option{--show-c-function} option. -This option automatically defaults to the context output format -(@pxref{Context Format}), with the default number of lines of context. -You can override that number with @option{-C @var{lines}} elsewhere in the -command line. You can override both the format and the number with -@option{-U @var{lines}} elsewhere in the command line. - -The @option{-p} and @option{--show-c-function} options are equivalent to -@option{-F '^[[:alpha:]$_]'} if the unified format is specified, otherwise -@option{-c -F '^[[:alpha:]$_]'} (@pxref{Specified Headings}). @sc{gnu} -@command{diff} provides them for the sake of convenience. - -@node Alternate Names -@subsection Showing Alternate File Names -@cindex alternate file names -@cindex file name alternates - -If you are comparing two files that have meaningless or uninformative -names, you might want @command{diff} to show alternate names in the header -of the context and unified output formats. To do this, use the -@option{--label=@var{label}} option. The first time -you give this option, its argument replaces the name and date of the -first file in the header; the second time, its argument replaces the -name and date of the second file. If you give this option more than -twice, @command{diff} reports an error. The @option{--label} option does not -affect the file names in the @command{pr} header when the @option{-l} or -@option{--paginate} option is used (@pxref{Pagination}). - -Here are the first two lines of the output from @samp{diff -C 2 ---label=original --label=modified lao tzu}: - -@example -*** original ---- modified -@end example - -@node Side by Side -@section Showing Differences Side by Side -@cindex side by side -@cindex two-column output -@cindex columnar output - -@command{diff} can produce a side by side difference listing of two files. -The files are listed in two columns with a gutter between them. The -gutter contains one of the following markers: - -@table @asis -@item white space -The corresponding lines are in common. That is, either the lines are -identical, or the difference is ignored because of one of the -@option{--ignore} options (@pxref{White Space}). - -@item @samp{|} -The corresponding lines differ, and they are either both complete -or both incomplete. - -@item @samp{<} -The files differ and only the first file contains the line. - -@item @samp{>} -The files differ and only the second file contains the line. - -@item @samp{(} -Only the first file contains the line, but the difference is ignored. - -@item @samp{)} -Only the second file contains the line, but the difference is ignored. - -@item @samp{\} -The corresponding lines differ, and only the first line is incomplete. - -@item @samp{/} -The corresponding lines differ, and only the second line is incomplete. -@end table - -Normally, an output line is incomplete if and only if the lines that it -contains are incomplete; @xref{Incomplete Lines}. However, when an -output line represents two differing lines, one might be incomplete -while the other is not. In this case, the output line is complete, -but its the gutter is marked @samp{\} if the first line is incomplete, -@samp{/} if the second line is. - -Side by side format is sometimes easiest to read, but it has limitations. -It generates much wider output than usual, and truncates lines that are -too long to fit. Also, it relies on lining up output more heavily than -usual, so its output looks particularly bad if you use varying -width fonts, nonstandard tab stops, or nonprinting characters. - -You can use the @command{sdiff} command to interactively merge side by side -differences. @xref{Interactive Merging}, for more information on merging files. - -@menu -* Side by Side Format:: Controlling side by side output format. -* Example Side by Side:: Sample side by side output. -@end menu - -@node Side by Side Format -@subsection Controlling Side by Side Format -@cindex side by side format - -The @option{-y} or @option{--side-by-side} option selects side by side -format. Because side by side output lines contain two input lines, the -output is wider than usual: normally 130 print columns, which can fit -onto a traditional printer line. You can set the width of the output -with the @option{-W @var{columns}} or @option{--width=@var{columns}} -option. The output is split into two halves of equal width, separated by a -small gutter to mark differences; the right half is aligned to a tab -stop so that tabs line up. Input lines that are too long to fit in half -of an output line are truncated for output. - -The @option{--left-column} option prints only the left column of two -common lines. The @option{--suppress-common-lines} option suppresses -common lines entirely. - -@node Example Side by Side -@subsection An Example of Side by Side Format - -Here is the output of the command @samp{diff -y -W 72 lao tzu} -(@pxref{Sample diff Input}, for the complete contents of the two files). - -@example -The Way that can be told of is n < -The name that can be named is no < -The Nameless is the origin of He The Nameless is the origin of He -The Named is the mother of all t | The named is the mother of all t - > -Therefore let there always be no Therefore let there always be no - so we may see their subtlety, so we may see their subtlety, -And let there always be being, And let there always be being, - so we may see their outcome. so we may see their outcome. -The two are the same, The two are the same, -But after they are produced, But after they are produced, - they have different names. they have different names. - > They both may be called deep and - > Deeper and more profound, - > The door of all subtleties! -@end example - -@node Scripts -@section Making Edit Scripts -@cindex script output formats - -Several output modes produce command scripts for editing @var{from-file} -to produce @var{to-file}. - -@menu -* ed Scripts:: Using @command{diff} to produce commands for @command{ed}. -* Forward ed:: Making forward @command{ed} scripts. -* RCS:: A special @command{diff} output format used by @sc{rcs}. -@end menu - -@node ed Scripts -@subsection @command{ed} Scripts -@cindex @command{ed} script output format - -@command{diff} can produce commands that direct the @command{ed} text editor -to change the first file into the second file. Long ago, this was the -only output mode that was suitable for editing one file into another -automatically; today, with @command{patch}, it is almost obsolete. Use the -@option{-e} or @option{--ed} option to select this output format. - -Like the normal format (@pxref{Normal}), this output format does not -show any context; unlike the normal format, it does not include the -information necessary to apply the diff in reverse (to produce the first -file if all you have is the second file and the diff). - -If the file @file{d} contains the output of @samp{diff -e old new}, then -the command @samp{(cat d && echo w) | ed - old} edits @file{old} to make -it a copy of @file{new}. More generally, if @file{d1}, @file{d2}, -@dots{}, @file{dN} contain the outputs of @samp{diff -e old new1}, -@samp{diff -e new1 new2}, @dots{}, @samp{diff -e newN-1 newN}, -respectively, then the command @samp{(cat d1 d2 @dots{} dN && echo w) | -ed - old} edits @file{old} to make it a copy of @file{newN}. - -@menu -* Detailed ed:: A detailed description of @command{ed} format. -* Example ed:: A sample @command{ed} script. -@end menu - -@node Detailed ed -@subsubsection Detailed Description of @command{ed} Format - -The @command{ed} output format consists of one or more hunks of -differences. The changes closest to the ends of the files come first so -that commands that change the number of lines do not affect how -@command{ed} interprets line numbers in succeeding commands. @command{ed} -format hunks look like this: - -@example -@var{change-command} -@var{to-file-line} -@var{to-file-line}@dots{} -. -@end example - -Because @command{ed} uses a single period on a line to indicate the end of -input, @sc{gnu} @command{diff} protects lines of changes that contain a single -period on a line by writing two periods instead, then writing a -subsequent @command{ed} command to change the two periods into one. The -@command{ed} format cannot represent an incomplete line, so if the second -file ends in a changed incomplete line, @command{diff} reports an error and -then pretends that a newline was appended. - -There are three types of change commands. Each consists of a line -number or comma-separated range of lines in the first file and a single -character indicating the kind of change to make. All line numbers are -the original line numbers in the file. The types of change commands -are: - -@table @samp -@item @var{l}a -Add text from the second file after line @var{l} in the first file. For -example, @samp{8a} means to add the following lines after line 8 of file -1. - -@item @var{r}c -Replace the lines in range @var{r} in the first file with the following -lines. Like a combined add and delete, but more compact. For example, -@samp{5,7c} means change lines 5--7 of file 1 to read as the text file -2. - -@item @var{r}d -Delete the lines in range @var{r} from the first file. For example, -@samp{5,7d} means delete lines 5--7 of file 1. -@end table - -@node Example ed -@subsubsection Example @command{ed} Script - -Here is the output of @samp{diff -e lao tzu} (@pxref{Sample -diff Input}, for the complete contents of the two files): - -@example -11a -They both may be called deep and profound. -Deeper and more profound, -The door of all subtleties! -. -4c -The named is the mother of all things. - -. -1,2d -@end example - -@node Forward ed -@subsection Forward @command{ed} Scripts -@cindex forward @command{ed} script output format - -@command{diff} can produce output that is like an @command{ed} script, but -with hunks in forward (front to back) order. The format of the commands -is also changed slightly: command characters precede the lines they -modify, spaces separate line numbers in ranges, and no attempt is made -to disambiguate hunk lines consisting of a single period. Like -@command{ed} format, forward @command{ed} format cannot represent incomplete -lines. - -Forward @command{ed} format is not very useful, because neither @command{ed} -nor @command{patch} can apply diffs in this format. It exists mainly for -compatibility with older versions of @command{diff}. Use the @option{-f} or -@option{--forward-ed} option to select it. - -@node RCS -@subsection @sc{rcs} Scripts -@cindex @sc{rcs} script output format - -The @sc{rcs} output format is designed specifically for use by the Revision -Control System, which is a set of free programs used for organizing -different versions and systems of files. Use the @option{-n} or -@option{--rcs} option to select this output format. It is like the -forward @command{ed} format (@pxref{Forward ed}), but it can represent -arbitrary changes to the contents of a file because it avoids the -forward @command{ed} format's problems with lines consisting of a single -period and with incomplete lines. Instead of ending text sections with -a line consisting of a single period, each command specifies the number -of lines it affects; a combination of the @samp{a} and @samp{d} -commands are used instead of @samp{c}. Also, if the second file ends -in a changed incomplete line, then the output also ends in an -incomplete line. - -Here is the output of @samp{diff -n lao tzu} (@pxref{Sample -diff Input}, for the complete contents of the two files): - -@example -d1 2 -d4 1 -a4 2 -The named is the mother of all things. - -a11 3 -They both may be called deep and profound. -Deeper and more profound, -The door of all subtleties! -@end example - -@node If-then-else -@section Merging Files with If-then-else -@cindex merged output format -@cindex if-then-else output format -@cindex C if-then-else output format -@cindex @command{ifdef} output format - -You can use @command{diff} to merge two files of C source code. The output -of @command{diff} in this format contains all the lines of both files. -Lines common to both files are output just once; the differing parts are -separated by the C preprocessor directives @code{#ifdef @var{name}} or -@code{#ifndef @var{name}}, @code{#else}, and @code{#endif}. When -compiling the output, you select which version to use by either defining -or leaving undefined the macro @var{name}. - -To merge two files, use @command{diff} with the @option{-D @var{name}} or -@option{--ifdef=@var{name}} option. The argument @var{name} is the C -preprocessor identifier to use in the @code{#ifdef} and @code{#ifndef} -directives. - -For example, if you change an instance of @code{wait (&s)} to -@code{waitpid (-1, &s, 0)} and then merge the old and new files with -the @option{--ifdef=HAVE_WAITPID} option, then the affected part of your code -might look like this: - -@example - do @{ -#ifndef HAVE_WAITPID - if ((w = wait (&s)) < 0 && errno != EINTR) -#else /* HAVE_WAITPID */ - if ((w = waitpid (-1, &s, 0)) < 0 && errno != EINTR) -#endif /* HAVE_WAITPID */ - return w; - @} while (w != child); -@end example - -You can specify formats for languages other than C by using line group -formats and line formats, as described in the next sections. - -@menu -* Line Group Formats:: Formats for general if-then-else line groups. -* Line Formats:: Formats for each line in a line group. -* Detailed If-then-else:: A detailed description of if-then-else format. -* Example If-then-else:: Sample if-then-else format output. -@end menu - -@node Line Group Formats -@subsection Line Group Formats -@cindex line group formats -@cindex formats for if-then-else line groups - -Line group formats let you specify formats suitable for many -applications that allow if-then-else input, including programming -languages and text formatting languages. A line group format specifies -the output format for a contiguous group of similar lines. - -For example, the following command compares the TeX files @file{old} -and @file{new}, and outputs a merged file in which old regions are -surrounded by @samp{\begin@{em@}}-@samp{\end@{em@}} lines, and new -regions are surrounded by @samp{\begin@{bf@}}-@samp{\end@{bf@}} lines. - -@example -diff \ - --old-group-format='\begin@{em@} -%<\end@{em@} -' \ - --new-group-format='\begin@{bf@} -%>\end@{bf@} -' \ - old new -@end example - -The following command is equivalent to the above example, but it is a -little more verbose, because it spells out the default line group formats. - -@example -diff \ - --old-group-format='\begin@{em@} -%<\end@{em@} -' \ - --new-group-format='\begin@{bf@} -%>\end@{bf@} -' \ - --unchanged-group-format='%=' \ - --changed-group-format='\begin@{em@} -%<\end@{em@} -\begin@{bf@} -%>\end@{bf@} -' \ - old new -@end example - -Here is a more advanced example, which outputs a diff listing with -headers containing line numbers in a ``plain English'' style. - -@example -diff \ - --unchanged-group-format='' \ - --old-group-format='-------- %dn line%(n=1?:s) deleted at %df: -%<' \ - --new-group-format='-------- %dN line%(N=1?:s) added after %de: -%>' \ - --changed-group-format='-------- %dn line%(n=1?:s) changed at %df: -%<-------- to: -%>' \ - old new -@end example - -To specify a line group format, use @command{diff} with one of the options -listed below. You can specify up to four line group formats, one for -each kind of line group. You should quote @var{format}, because it -typically contains shell metacharacters. - -@table @option -@item --old-group-format=@var{format} -These line groups are hunks containing only lines from the first file. -The default old group format is the same as the changed group format if -it is specified; otherwise it is a format that outputs the line group as-is. - -@item --new-group-format=@var{format} -These line groups are hunks containing only lines from the second -file. The default new group format is same as the changed group -format if it is specified; otherwise it is a format that outputs the -line group as-is. - -@item --changed-group-format=@var{format} -These line groups are hunks containing lines from both files. The -default changed group format is the concatenation of the old and new -group formats. - -@item --unchanged-group-format=@var{format} -These line groups contain lines common to both files. The default -unchanged group format is a format that outputs the line group as-is. -@end table - -In a line group format, ordinary characters represent themselves; -conversion specifications start with @samp{%} and have one of the -following forms. - -@table @samp -@item %< -stands for the lines from the first file, including the trailing newline. -Each line is formatted according to the old line format (@pxref{Line Formats}). - -@item %> -stands for the lines from the second file, including the trailing newline. -Each line is formatted according to the new line format. - -@item %= -stands for the lines common to both files, including the trailing newline. -Each line is formatted according to the unchanged line format. - -@item %% -stands for @samp{%}. - -@item %c'@var{C}' -where @var{C} is a single character, stands for @var{C}. -@var{C} may not be a backslash or an apostrophe. -For example, @samp{%c':'} stands for a colon, even inside -the then-part of an if-then-else format, which a colon would -normally terminate. - -@item %c'\@var{O}' -where @var{O} is a string of 1, 2, or 3 octal digits, -stands for the character with octal code @var{O}. -For example, @samp{%c'\0'} stands for a null character. - -@item @var{F}@var{n} -where @var{F} is a @code{printf} conversion specification and @var{n} is one -of the following letters, stands for @var{n}'s value formatted with @var{F}. - -@table @samp -@item e -The line number of the line just before the group in the old file. - -@item f -The line number of the first line in the group in the old file; -equals @var{e} + 1. - -@item l -The line number of the last line in the group in the old file. - -@item m -The line number of the line just after the group in the old file; -equals @var{l} + 1. - -@item n -The number of lines in the group in the old file; equals @var{l} - @var{f} + 1. - -@item E, F, L, M, N -Likewise, for lines in the new file. - -@end table - -@vindex LC_NUMERIC -The @code{printf} conversion specification can be @samp{%d}, -@samp{%o}, @samp{%x}, or @samp{%X}, specifying decimal, octal, -lower case hexadecimal, or upper case hexadecimal output -respectively. After the @samp{%} the following options can appear in -sequence: a series of zero or more flags; an integer -specifying the minimum field width; and a period followed by an -optional integer specifying the minimum number of digits. -The flags are @samp{-} for left-justification, @samp{'} for separating -the digit into groups as specified by the @env{LC_NUMERIC} locale category, -and @samp{0} for padding with zeros instead of spaces. -For example, @samp{%5dN} prints the number of new lines in the group -in a field of width 5 characters, using the @code{printf} format @code{"%5d"}. - -@item (@var{A}=@var{B}?@var{T}:@var{E}) -If @var{A} equals @var{B} then @var{T} else @var{E}. -@var{A} and @var{B} are each either a decimal constant -or a single letter interpreted as above. -This format spec is equivalent to @var{T} if -@var{A}'s value equals @var{B}'s; otherwise it is equivalent to @var{E}. - -For example, @samp{%(N=0?no:%dN) line%(N=1?:s)} is equivalent to -@samp{no lines} if @var{N} (the number of lines in the group in the the -new file) is 0, to @samp{1 line} if @var{N} is 1, and to @samp{%dN lines} -otherwise. -@end table - -@node Line Formats -@subsection Line Formats -@cindex line formats - -Line formats control how each line taken from an input file is -output as part of a line group in if-then-else format. - -For example, the following command outputs text with a one-character -change indicator to the left of the text. The first character of output -is @samp{-} for deleted lines, @samp{|} for added lines, and a space for -unchanged lines. The formats contain newline characters where newlines -are desired on output. - -@example -diff \ - --old-line-format='-%l -' \ - --new-line-format='|%l -' \ - --unchanged-line-format=' %l -' \ - old new -@end example - -To specify a line format, use one of the following options. You should -quote @var{format}, since it often contains shell metacharacters. - -@table @option -@item --old-line-format=@var{format} -formats lines just from the first file. - -@item --new-line-format=@var{format} -formats lines just from the second file. - -@item --unchanged-line-format=@var{format} -formats lines common to both files. - -@item --line-format=@var{format} -formats all lines; in effect, it sets all three above options simultaneously. -@end table - -In a line format, ordinary characters represent themselves; -conversion specifications start with @samp{%} and have one of the -following forms. - -@table @samp -@item %l -stands for the contents of the line, not counting its trailing -newline (if any). This format ignores whether the line is incomplete; -@xref{Incomplete Lines}. - -@item %L -stands for the contents of the line, including its trailing newline -(if any). If a line is incomplete, this format preserves its -incompleteness. - -@item %% -stands for @samp{%}. - -@item %c'@var{C}' -where @var{C} is a single character, stands for @var{C}. -@var{C} may not be a backslash or an apostrophe. -For example, @samp{%c':'} stands for a colon. - -@item %c'\@var{O}' -where @var{O} is a string of 1, 2, or 3 octal digits, -stands for the character with octal code @var{O}. -For example, @samp{%c'\0'} stands for a null character. - -@item @var{F}n -where @var{F} is a @code{printf} conversion specification, -stands for the line number formatted with @var{F}. -For example, @samp{%.5dn} prints the line number using the -@code{printf} format @code{"%.5d"}. @xref{Line Group Formats}, for -more about printf conversion specifications. - -@end table - -The default line format is @samp{%l} followed by a newline character. - -If the input contains tab characters and it is important that they line -up on output, you should ensure that @samp{%l} or @samp{%L} in a line -format is just after a tab stop (e.g.@: by preceding @samp{%l} or -@samp{%L} with a tab character), or you should use the @option{-t} or -@option{--expand-tabs} option. - -Taken together, the line and line group formats let you specify many -different formats. For example, the following command uses a format -similar to normal @command{diff} format. You can tailor this command -to get fine control over @command{diff} output. - -@example -diff \ - --old-line-format='< %l -' \ - --new-line-format='> %l -' \ - --old-group-format='%df%(f=l?:,%dl)d%dE -%<' \ - --new-group-format='%dea%dF%(F=L?:,%dL) -%>' \ - --changed-group-format='%df%(f=l?:,%dl)c%dF%(F=L?:,%dL) -%<--- -%>' \ - --unchanged-group-format='' \ - old new -@end example - -@node Detailed If-then-else -@subsection Detailed Description of If-then-else Format - -For lines common to both files, @command{diff} uses the unchanged line -group format. For each hunk of differences in the merged output -format, if the hunk contains only lines from the first file, -@command{diff} uses the old line group format; if the hunk contains only -lines from the second file, @command{diff} uses the new group format; -otherwise, @command{diff} uses the changed group format. - -The old, new, and unchanged line formats specify the output format of -lines from the first file, lines from the second file, and lines common -to both files, respectively. - -The option @option{--ifdef=@var{name}} is equivalent to -the following sequence of options using shell syntax: - -@example ---old-group-format='#ifndef @var{name} -%<#endif /* ! @var{name} */ -' \ ---new-group-format='#ifdef @var{name} -%>#endif /* @var{name} */ -' \ ---unchanged-group-format='%=' \ ---changed-group-format='#ifndef @var{name} -%<#else /* @var{name} */ -%>#endif /* @var{name} */ -' -@end example - -You should carefully check the @command{diff} output for proper nesting. -For example, when using the @option{-D @var{name}} or -@option{--ifdef=@var{name}} option, you should check that if the -differing lines contain any of the C preprocessor directives -@samp{#ifdef}, @samp{#ifndef}, @samp{#else}, @samp{#elif}, or -@samp{#endif}, they are nested properly and match. If they don't, you -must make corrections manually. It is a good idea to carefully check -the resulting code anyway to make sure that it really does what you -want it to; depending on how the input files were produced, the output -might contain duplicate or otherwise incorrect code. - -The @command{patch} @option{-D @var{name}} option behaves like -the @command{diff} @option{-D @var{name}} option, except it operates on -a file and a diff to produce a merged file; @xref{patch Options}. - -@node Example If-then-else -@subsection An Example of If-then-else Format - -Here is the output of @samp{diff -DTWO lao tzu} (@pxref{Sample -diff Input}, for the complete contents of the two files): - -@example -#ifndef TWO -The Way that can be told of is not the eternal Way; -The name that can be named is not the eternal name. -#endif /* ! TWO */ -The Nameless is the origin of Heaven and Earth; -#ifndef TWO -The Named is the mother of all things. -#else /* TWO */ -The named is the mother of all things. - -#endif /* TWO */ -Therefore let there always be non-being, - so we may see their subtlety, -And let there always be being, - so we may see their outcome. -The two are the same, -But after they are produced, - they have different names. -#ifdef TWO -They both may be called deep and profound. -Deeper and more profound, -The door of all subtleties! -#endif /* TWO */ -@end example - -@node Incomplete Lines -@chapter Incomplete Lines -@cindex incomplete lines -@cindex full lines -@cindex newline treatment by @command{diff} - -When an input file ends in a non-newline character, its last line is -called an @dfn{incomplete line} because its last character is not a -newline. All other lines are called @dfn{full lines} and end in a -newline character. Incomplete lines do not match full lines unless -differences in white space are ignored (@pxref{White Space}). - -An incomplete line is normally distinguished on output from a full line -by a following line that starts with @samp{\}. However, the @sc{rcs} format -(@pxref{RCS}) outputs the incomplete line as-is, without any trailing -newline or following line. The side by side format normally represents -incomplete lines as-is, but in some cases uses a @samp{\} or @samp{/} -gutter marker; @xref{Side by Side}. The if-then-else line format -preserves a line's incompleteness with @samp{%L}, and discards the -newline with @samp{%l}; @xref{Line Formats}. Finally, with the -@command{ed} and forward @command{ed} output formats (@pxref{Output Formats}) -@command{diff} cannot represent an incomplete line, so it pretends there -was a newline and reports an error. - -For example, suppose @file{F} and @file{G} are one-byte files that -contain just @samp{f} and @samp{g}, respectively. Then @samp{diff F G} -outputs - -@example -1c1 -< f -\ No newline at end of file ---- -> g -\ No newline at end of file -@end example - -@noindent -(The exact message may differ in non-English locales.) -@samp{diff -n F G} outputs the following without a trailing newline: - -@example -d1 1 -a1 1 -g -@end example - -@noindent -@samp{diff -e F G} reports two errors and outputs the following: - -@example -1c -g -. -@end example - -@node Comparing Directories -@chapter Comparing Directories - -@vindex LC_COLLATE -You can use @command{diff} to compare some or all of the files in two -directory trees. When both file name arguments to @command{diff} are -directories, it compares each file that is contained in both -directories, examining file names in alphabetical order as specified by -the @env{LC_COLLATE} locale category. Normally -@command{diff} is silent about pairs of files that contain no differences, -but if you use the @option{-s} or @option{--report-identical-files} option, -it reports pairs of identical files. Normally @command{diff} reports -subdirectories common to both directories without comparing -subdirectories' files, but if you use the @option{-r} or -@option{--recursive} option, it compares every corresponding pair of files -in the directory trees, as many levels deep as they go. - -For file names that are in only one of the directories, @command{diff} -normally does not show the contents of the file that exists; it reports -only that the file exists in that directory and not in the other. You -can make @command{diff} act as though the file existed but was empty in the -other directory, so that it outputs the entire contents of the file that -actually exists. (It is output as either an insertion or a -deletion, depending on whether it is in the first or the second -directory given.) To do this, use the @option{-N} or @option{--new-file} -option. - -If the older directory contains one or more large files that are not in -the newer directory, you can make the patch smaller by using the -@option{--unidirectional-new-file} option instead of @option{-N}. -This option is like @option{-N} except that it only inserts the contents -of files that appear in the second directory but not the first (that is, -files that were added). At the top of the patch, write instructions for -the user applying the patch to remove the files that were deleted before -applying the patch. @xref{Making Patches}, for more discussion of -making patches for distribution. - -To ignore some files while comparing directories, use the @option{-x -@var{pattern}} or @option{--exclude=@var{pattern}} option. This option -ignores any files or subdirectories whose base names match the shell -pattern @var{pattern}. Unlike in the shell, a period at the start of -the base of a file name matches a wildcard at the start of a pattern. -You should enclose @var{pattern} in quotes so that the shell does not -expand it. For example, the option @option{-x '*.[ao]'} ignores any file -whose name ends with @samp{.a} or @samp{.o}. - -This option accumulates if you specify it more than once. For example, -using the options @option{-x 'RCS' -x '*,v'} ignores any file or -subdirectory whose base name is @samp{RCS} or ends with @samp{,v}. - -If you need to give this option many times, you can instead put the -patterns in a file, one pattern per line, and use the @option{-X -@var{file}} or @option{--exclude-from=@var{file}} option. - -If you have been comparing two directories and stopped partway through, -later you might want to continue where you left off. You can do this by -using the @option{-S @var{file}} or @option{--starting-file=@var{file}} -option. This compares only the file @var{file} and all alphabetically -later files in the topmost directory level. - -If two directories differ only in that file names are lower case in -one directory and upper case in the upper, @command{diff} normally -reports many differences because it compares file names in a -case sensitive way. With the @option{--ignore-file-name-case} option, -@command{diff} ignores case differences in file names, so that for example -the contents of the file @file{Tao} in one directory are compared to -the contents of the file @file{TAO} in the other. The -@option{--no-ignore-file-name-case} option cancels the effect of the -@option{--ignore-file-name-case} option, reverting to the default -behavior. - -If an @option{-x @var{pattern}}, @option{--exclude=@var{pattern}}, -@option{-X @var{file}}, or @option{--exclude-from=@var{file}} option -is specified while the @option{--ignore-file-name-case} option is in -effect, case is ignored when excluding file names matching the -specified patterns. - -@node Adjusting Output -@chapter Making @command{diff} Output Prettier - -@command{diff} provides several ways to adjust the appearance of its output. -These adjustments can be applied to any output format. - -@menu -* Tabs:: Preserving the alignment of tab stops. -* Pagination:: Page numbering and time-stamping @command{diff} output. -@end menu - -@node Tabs -@section Preserving Tab Stop Alignment -@cindex tab stop alignment -@cindex aligning tab stops - -The lines of text in some of the @command{diff} output formats are preceded -by one or two characters that indicate whether the text is inserted, -deleted, or changed. The addition of those characters can cause tabs to -move to the next tab stop, throwing off the alignment of columns in the -line. @sc{gnu} @command{diff} provides two ways to make tab-aligned columns -line up correctly. - -The first way is to have @command{diff} convert all tabs into the correct -number of spaces before outputting them; select this method with the -@option{-t} or @option{--expand-tabs} option. @command{diff} assumes that -tab stops are set every 8 print columns. To use this form of output with -@command{patch}, you must give @command{patch} the @option{-l} or -@option{--ignore-white-space} option (@pxref{Changed White Space}, for more -information). - -The other method for making tabs line up correctly is to add a tab -character instead of a space after the indicator character at the -beginning of the line. This ensures that all following tab characters -are in the same position relative to tab stops that they were in the -original files, so that the output is aligned correctly. Its -disadvantage is that it can make long lines too long to fit on one line -of the screen or the paper. It also does not work with the unified -output format, which does not have a space character after the change -type indicator character. Select this method with the @option{-T} or -@option{--initial-tab} option. - -@node Pagination -@section Paginating @command{diff} Output -@cindex paginating @command{diff} output - -It can be convenient to have long output page-numbered and time-stamped. -The @option{-l} and @option{--paginate} options do this by sending the -@command{diff} output through the @command{pr} program. Here is what the page -header might look like for @samp{diff -lc lao tzu}: - -@example -2002-02-22 14:20 diff -lc lao tzu Page 1 -@end example - -@node diff Performance -@chapter @command{diff} Performance Tradeoffs -@cindex performance of @command{diff} - -@sc{gnu} @command{diff} runs quite efficiently; however, in some circumstances -you can cause it to run faster or produce a more compact set of changes. - -One way to improve @command{diff} performance is to use hard or -symbolic links to files instead of copies. This improves performance -because @command{diff} normally does not need to read two hard or -symbolic links to the same file, since their contents must be -identical. For example, suppose you copy a large directory hierarchy, -make a few changes to the copy, and then often use @samp{diff -r} to -compare the original to the copy. If the original files are -read-only, you can greatly improve performance by creating the copy -using hard or symbolic links (e.g., with @sc{gnu} @samp{cp -lR} or -@samp{cp -sR}). Before editing a file in the copy for the first time, -you should break the link and replace it with a regular copy. - -You can also affect the performance of @sc{gnu} @command{diff} by -giving it options that change the way it compares files. -Performance has more than one dimension. These options improve one -aspect of performance at the cost of another, or they improve -performance in some cases while hurting it in others. - -The way that @sc{gnu} @command{diff} determines which lines have changed always -comes up with a near-minimal set of differences. Usually it is good -enough for practical purposes. If the @command{diff} output is large, you -might want @command{diff} to use a modified algorithm that sometimes -produces a smaller set of differences. The @option{-d} or -@option{--minimal} option does this; however, it can also cause -@command{diff} to run more slowly than usual, so it is not the default -behavior. - -When the files you are comparing are large and have small groups of -changes scattered throughout them, you can use the -@option{--speed-large-files} option to make a different modification to -the algorithm that @command{diff} uses. If the input files have a constant -small density of changes, this option speeds up the comparisons without -changing the output. If not, @command{diff} might produce a larger set of -differences; however, the output will still be correct. - -Normally @command{diff} discards the prefix and suffix that is common to -both files before it attempts to find a minimal set of differences. -This makes @command{diff} run faster, but occasionally it may produce -non-minimal output. The @option{--horizon-lines=@var{lines}} option -prevents @command{diff} from discarding the last @var{lines} lines of the -prefix and the first @var{lines} lines of the suffix. This gives -@command{diff} further opportunities to find a minimal output. - -Suppose a run of changed lines includes a sequence of lines at one end -and there is an identical sequence of lines just outside the other end. -The @command{diff} command is free to choose which identical sequence is -included in the hunk. In this case, @command{diff} normally shifts the -hunk's boundaries when this merges adjacent hunks, or shifts a hunk's -lines towards the end of the file. Merging hunks can make the output -look nicer in some cases. - -@node Comparing Three Files -@chapter Comparing Three Files -@cindex comparing three files -@cindex format of @command{diff3} output - -Use the program @command{diff3} to compare three files and show any -differences among them. (@command{diff3} can also merge files; see -@ref{diff3 Merging}). - -The ``normal'' @command{diff3} output format shows each hunk of -differences without surrounding context. Hunks are labeled depending -on whether they are two-way or three-way, and lines are annotated by -their location in the input files. - -@xref{Invoking diff3}, for more information on how to run @command{diff3}. - -@menu -* Sample diff3 Input:: Sample @command{diff3} input for examples. -* Detailed diff3 Normal:: A detailed description of normal output format. -* diff3 Hunks:: The format of normal output format. -* Example diff3 Normal:: Sample output in the normal format. -@end menu - -@node Sample diff3 Input -@section A Third Sample Input File -@cindex @command{diff3} sample input -@cindex sample input for @command{diff3} - -Here is a third sample file that will be used in examples to illustrate -the output of @command{diff3} and how various options can change it. The -first two files are the same that we used for @command{diff} (@pxref{Sample -diff Input}). This is the third sample file, called @file{tao}: - -@example -The Way that can be told of is not the eternal Way; -The name that can be named is not the eternal name. -The Nameless is the origin of Heaven and Earth; -The named is the mother of all things. - -Therefore let there always be non-being, - so we may see their subtlety, -And let there always be being, - so we may see their result. -The two are the same, -But after they are produced, - they have different names. - - -- The Way of Lao-Tzu, tr. Wing-tsit Chan -@end example - -@node Detailed diff3 Normal -@section Detailed Description of @command{diff3} Normal Format - -Each hunk begins with a line marked @samp{====}. Three-way hunks have -plain @samp{====} lines, and two-way hunks have @samp{1}, @samp{2}, or -@samp{3} appended to specify which of the three input files differ in -that hunk. The hunks contain copies of two or three sets of input -lines each preceded by one or two commands identifying where the lines -came from. - -Normally, two spaces precede each copy of an input line to distinguish -it from the commands. But with the @option{-T} or @option{--initial-tab} -option, @command{diff3} uses a tab instead of two spaces; this lines up -tabs correctly. @xref{Tabs}, for more information. - -Commands take the following forms: - -@table @samp -@item @var{file}:@var{l}a -This hunk appears after line @var{l} of file @var{file}, and -contains no lines in that file. To edit this file to yield the other -files, one must append hunk lines taken from the other files. For -example, @samp{1:11a} means that the hunk follows line 11 in the first -file and contains no lines from that file. - -@item @var{file}:@var{r}c -This hunk contains the lines in the range @var{r} of file @var{file}. -The range @var{r} is a comma-separated pair of line numbers, or just one -number if the range is a singleton. To edit this file to yield the -other files, one must change the specified lines to be the lines taken -from the other files. For example, @samp{2:11,13c} means that the hunk -contains lines 11 through 13 from the second file. -@end table - -If the last line in a set of input lines is incomplete -(@pxref{Incomplete Lines}), it is distinguished on output from a full -line by a following line that starts with @samp{\}. - -@node diff3 Hunks -@section @command{diff3} Hunks -@cindex hunks for @command{diff3} -@cindex @command{diff3} hunks - -Groups of lines that differ in two or three of the input files are -called @dfn{diff3 hunks}, by analogy with @command{diff} hunks -(@pxref{Hunks}). If all three input files differ in a @command{diff3} -hunk, the hunk is called a @dfn{three-way hunk}; if just two input files -differ, it is a @dfn{two-way hunk}. - -As with @command{diff}, several solutions are possible. When comparing the -files @samp{A}, @samp{B}, and @samp{C}, @command{diff3} normally finds -@command{diff3} hunks by merging the two-way hunks output by the two -commands @samp{diff A B} and @samp{diff A C}. This does not necessarily -minimize the size of the output, but exceptions should be rare. - -For example, suppose @file{F} contains the three lines @samp{a}, -@samp{b}, @samp{f}, @file{G} contains the lines @samp{g}, @samp{b}, -@samp{g}, and @file{H} contains the lines @samp{a}, @samp{b}, -@samp{h}. @samp{diff3 F G H} might output the following: - -@example -====2 -1:1c -3:1c - a -2:1c - g -==== -1:3c - f -2:3c - g -3:3c - h -@end example - -@noindent -because it found a two-way hunk containing @samp{a} in the first and -third files and @samp{g} in the second file, then the single line -@samp{b} common to all three files, then a three-way hunk containing -the last line of each file. - -@node Example diff3 Normal -@section An Example of @command{diff3} Normal Format - -Here is the output of the command @samp{diff3 lao tzu tao} -(@pxref{Sample diff3 Input}, for the complete contents of the files). -Notice that it shows only the lines that are different among the three -files. - -@example -====2 -1:1,2c -3:1,2c - The Way that can be told of is not the eternal Way; - The name that can be named is not the eternal name. -2:0a -====1 -1:4c - The Named is the mother of all things. -2:2,3c -3:4,5c - The named is the mother of all things. - -====3 -1:8c -2:7c - so we may see their outcome. -3:9c - so we may see their result. -==== -1:11a -2:11,13c - They both may be called deep and profound. - Deeper and more profound, - The door of all subtleties! -3:13,14c - - -- The Way of Lao-Tzu, tr. Wing-tsit Chan -@end example - -@node diff3 Merging -@chapter Merging From a Common Ancestor -@cindex merging from a common ancestor - -When two people have made changes to copies of the same file, -@command{diff3} can produce a merged output that contains both sets of -changes together with warnings about conflicts. - -One might imagine programs with names like @command{diff4} and @command{diff5} -to compare more than three files simultaneously, but in practice the -need rarely arises. You can use @command{diff3} to merge three or more -sets of changes to a file by merging two change sets at a time. - -@command{diff3} can incorporate changes from two modified versions into a -common preceding version. This lets you merge the sets of changes -represented by the two newer files. Specify the common ancestor version -as the second argument and the two newer versions as the first and third -arguments, like this: - -@example -diff3 @var{mine} @var{older} @var{yours} -@end example - -@noindent -You can remember the order of the arguments by noting that they are in -alphabetical order. - -@cindex conflict -@cindex overlap -You can think of this as subtracting @var{older} from @var{yours} and -adding the result to @var{mine}, or as merging into @var{mine} the -changes that would turn @var{older} into @var{yours}. This merging is -well-defined as long as @var{mine} and @var{older} match in the -neighborhood of each such change. This fails to be true when all three -input files differ or when only @var{older} differs; we call this -a @dfn{conflict}. When all three input files differ, we call the -conflict an @dfn{overlap}. - -@command{diff3} gives you several ways to handle overlaps and conflicts. -You can omit overlaps or conflicts, or select only overlaps, -or mark conflicts with special @samp{<<<<<<<} and @samp{>>>>>>>} lines. - -@command{diff3} can output the merge results as an @command{ed} script that -that can be applied to the first file to yield the merged output. -However, it is usually better to have @command{diff3} generate the merged -output directly; this bypasses some problems with @command{ed}. - -@menu -* Which Changes:: Selecting changes to incorporate. -* Marking Conflicts:: Marking conflicts. -* Bypassing ed:: Generating merged output directly. -* Merging Incomplete Lines:: How @command{diff3} merges incomplete lines. -* Saving the Changed File:: Emulating System V behavior. -@end menu - -@node Which Changes -@section Selecting Which Changes to Incorporate -@cindex overlapping change, selection of -@cindex unmerged change - -You can select all unmerged changes from @var{older} to @var{yours} for merging -into @var{mine} with the @option{-e} or @option{--ed} option. You can -select only the nonoverlapping unmerged changes with @option{-3} or -@option{--easy-only}, and you can select only the overlapping changes with -@option{-x} or @option{--overlap-only}. - -The @option{-e}, @option{-3} and @option{-x} options select only -@dfn{unmerged changes}, i.e.@: changes where @var{mine} and @var{yours} -differ; they ignore changes from @var{older} to @var{yours} where -@var{mine} and @var{yours} are identical, because they assume that such -changes have already been merged. If this assumption is not a safe -one, you can use the @option{-A} or @option{--show-all} option -(@pxref{Marking Conflicts}). - -Here is the output of the command @command{diff3} with each of these three -options (@pxref{Sample diff3 Input}, for the complete contents of the files). -Notice that @option{-e} outputs the union of the disjoint sets of changes -output by @option{-3} and @option{-x}. - -Output of @samp{diff3 -e lao tzu tao}: -@example -11a - - -- The Way of Lao-Tzu, tr. Wing-tsit Chan -. -8c - so we may see their result. -. -@end example - -Output of @samp{diff3 -3 lao tzu tao}: -@example -8c - so we may see their result. -. -@end example - -Output of @samp{diff3 -x lao tzu tao}: -@example -11a - - -- The Way of Lao-Tzu, tr. Wing-tsit Chan -. -@end example - -@node Marking Conflicts -@section Marking Conflicts -@cindex conflict marking -@cindex @samp{<<<<<<<} for marking conflicts - -@command{diff3} can mark conflicts in the merged output by -bracketing them with special marker lines. A conflict -that comes from two files @var{A} and @var{B} is marked as follows: - -@example -<<<<<<< @var{A} -@r{lines from @var{A}} -======= -@r{lines from @var{B}} ->>>>>>> @var{B} -@end example - -A conflict that comes from three files @var{A}, @var{B} and @var{C} is -marked as follows: - -@example -<<<<<<< @var{A} -@r{lines from @var{A}} -||||||| @var{B} -@r{lines from @var{B}} -======= -@r{lines from @var{C}} ->>>>>>> @var{C} -@end example - -The @option{-A} or @option{--show-all} option acts like the @option{-e} -option, except that it brackets conflicts, and it outputs all changes -from @var{older} to @var{yours}, not just the unmerged changes. Thus, -given the sample input files (@pxref{Sample diff3 Input}), @samp{diff3 --A lao tzu tao} puts brackets around the conflict where only @file{tzu} -differs: - -@example -<<<<<<< tzu -======= -The Way that can be told of is not the eternal Way; -The name that can be named is not the eternal name. ->>>>>>> tao -@end example - -And it outputs the three-way conflict as follows: - -@example -<<<<<<< lao -||||||| tzu -They both may be called deep and profound. -Deeper and more profound, -The door of all subtleties! -======= - - -- The Way of Lao-Tzu, tr. Wing-tsit Chan ->>>>>>> tao -@end example - -The @option{-E} or @option{--show-overlap} option outputs less information -than the @option{-A} or @option{--show-all} option, because it outputs only -unmerged changes, and it never outputs the contents of the second -file. Thus the @option{-E} option acts like the @option{-e} option, -except that it brackets the first and third files from three-way -overlapping changes. Similarly, @option{-X} acts like @option{-x}, except -it brackets all its (necessarily overlapping) changes. For example, -for the three-way overlapping change above, the @option{-E} and @option{-X} -options output the following: - -@example -<<<<<<< lao -======= - - -- The Way of Lao-Tzu, tr. Wing-tsit Chan ->>>>>>> tao -@end example - -If you are comparing files that have meaningless or uninformative names, -you can use the @option{-L @var{label}} or @option{--label=@var{label}} -option to show alternate names in the @samp{<<<<<<<}, @samp{|||||||} -and @samp{>>>>>>>} brackets. This option can be given up to three -times, once for each input file. Thus @samp{diff3 -A -L X -L Y -L Z A -B C} acts like @samp{diff3 -A A B C}, except that the output looks like -it came from files named @samp{X}, @samp{Y} and @samp{Z} rather than -from files named @samp{A}, @samp{B} and @samp{C}. - -@node Bypassing ed -@section Generating the Merged Output Directly -@cindex merged @command{diff3} format - -With the @option{-m} or @option{--merge} option, @command{diff3} outputs the -merged file directly. This is more efficient than using @command{ed} to -generate it, and works even with non-text files that @command{ed} would -reject. If you specify @option{-m} without an @command{ed} script option, -@option{-A} (@option{--show-all}) is assumed. - -For example, the command @samp{diff3 -m lao tzu tao} -(@pxref{Sample diff3 Input} for a copy of the input files) would output -the following: - -@example -<<<<<<< tzu -======= -The Way that can be told of is not the eternal Way; -The name that can be named is not the eternal name. ->>>>>>> tao -The Nameless is the origin of Heaven and Earth; -The Named is the mother of all things. -Therefore let there always be non-being, - so we may see their subtlety, -And let there always be being, - so we may see their result. -The two are the same, -But after they are produced, - they have different names. -<<<<<<< lao -||||||| tzu -They both may be called deep and profound. -Deeper and more profound, -The door of all subtleties! -======= - - -- The Way of Lao-Tzu, tr. Wing-tsit Chan ->>>>>>> tao -@end example - -@node Merging Incomplete Lines -@section How @command{diff3} Merges Incomplete Lines -@cindex incomplete line merging - -With @option{-m}, incomplete lines (@pxref{Incomplete Lines}) are simply -copied to the output as they are found; if the merged output ends in an -conflict and one of the input files ends in an incomplete -line, succeeding @samp{|||||||}, @samp{=======} or @samp{>>>>>>>} -brackets appear somewhere other than the start of a line because -they are appended to the incomplete line. - -Without @option{-m}, if an @command{ed} script option is specified and an -incomplete line is found, @command{diff3} generates a warning and acts as -if a newline had been present. - -@node Saving the Changed File -@section Saving the Changed File -@cindex System V @command{diff3} compatibility - -Traditional Unix @command{diff3} generates an @command{ed} script without the -trailing @samp{w} and @samp{q} commands that save the changes. -System V @command{diff3} generates these extra commands. @sc{gnu} -@command{diff3} normally behaves like traditional Unix -@command{diff3}, but with the @option{-i} option it behaves like -System V @command{diff3} and appends the @samp{w} and @samp{q} -commands. - -The @option{-i} option requires one of the @command{ed} script options -@option{-AeExX3}, and is incompatible with the merged output option -@option{-m}. - -@node Interactive Merging -@chapter Interactive Merging with @command{sdiff} -@cindex diff merging -@cindex interactive merging - -With @command{sdiff}, you can merge two files interactively based on a -side-by-side @option{-y} format comparison (@pxref{Side by Side}). Use -@option{-o @var{file}} or @option{--output=@var{file}} to specify where to -put the merged text. @xref{Invoking sdiff}, for more details on the -options to @command{sdiff}. - -Another way to merge files interactively is to use the Emacs Lisp -package @command{emerge}. @xref{emerge, , emerge, emacs, The @sc{gnu} Emacs -Manual}, for more information. - -@menu -* sdiff Option Summary:: Summary of @command{sdiff} options. -* Merge Commands:: Merging two files interactively. -@end menu - -@node sdiff Option Summary -@section Specifying @command{diff} Options to @command{sdiff} -@cindex @command{sdiff} output format - -The following @command{sdiff} options have the same meaning as for -@command{diff}. @xref{diff Options}, for the use of these options. - -@example --a -b -d -i -t -v --B -E -I @var{regexp} - ---ignore-blank-lines --ignore-case ---ignore-matching-lines=@var{regexp} --ignore-space-change ---ignore-tab-expansion ---left-column --minimal --speed-large-files ---strip-trailing-cr --suppress-common-lines --expand-tabs ---text --version --width=@var{columns} -@end example - -For historical reasons, @command{sdiff} has alternate names for some -options. The @option{-l} option is equivalent to the -@option{--left-column} option, and similarly @option{-s} is equivalent -to @option{--suppress-common-lines}. The meaning of the @command{sdiff} -@option{-w} and @option{-W} options is interchanged from that of -@command{diff}: with @command{sdiff}, @option{-w @var{columns}} is -equivalent to @option{--width=@var{columns}}, and @option{-W} is -equivalent to @option{--ignore-all-space}. @command{sdiff} without the -@option{-o} option is equivalent to @command{diff} with the @option{-y} -or @option{--side-by-side} option (@pxref{Side by Side}). - -@node Merge Commands -@section Merge Commands -@cindex merge commands -@cindex merging interactively - -Groups of common lines, with a blank gutter, are copied from the first -file to the output. After each group of differing lines, @command{sdiff} -prompts with @samp{%} and pauses, waiting for one of the following -commands. Follow each command with @key{RET}. - -@table @samp -@item e -Discard both versions. -Invoke a text editor on an empty temporary file, -then copy the resulting file to the output. - -@item eb -Concatenate the two versions, edit the result in a temporary file, -then copy the edited result to the output. - -@item ed -Like @samp{eb}, except precede each version with a header that -shows what file and lines the version came from. - -@item el -Edit a copy of the left version, then copy the result to the output. - -@item er -Edit a copy of the right version, then copy the result to the output. - -@item l -Copy the left version to the output. - -@item q -Quit. - -@item r -Copy the right version to the output. - -@item s -Silently copy common lines. - -@item v -Verbosely copy common lines. This is the default. -@end table - -@vindex EDITOR -The text editor invoked is specified by the @env{EDITOR} environment -variable if it is set. The default is system-dependent. - -@node Merging with patch -@chapter Merging with @command{patch} - -@command{patch} takes comparison output produced by @command{diff} and applies -the differences to a copy of the original file, producing a patched -version. With @command{patch}, you can distribute just the changes to a -set of files instead of distributing the entire file set; your -correspondents can apply @command{patch} to update their copy of the files -with your changes. @command{patch} automatically determines the diff -format, skips any leading or trailing headers, and uses the headers to -determine which file to patch. This lets your correspondents feed a -mail message containing a difference listing directly to -@command{patch}. - -@command{patch} detects and warns about common problems like forward -patches. It saves any patches that it could not apply. It can also maintain a -@code{patchlevel.h} file to ensure that your correspondents apply -diffs in the proper order. - -@command{patch} accepts a series of diffs in its standard input, usually -separated by headers that specify which file to patch. It applies -@command{diff} hunks (@pxref{Hunks}) one by one. If a hunk does not -exactly match the original file, @command{patch} uses heuristics to try to -patch the file as well as it can. If no approximate match can be found, -@command{patch} rejects the hunk and skips to the next hunk. @command{patch} -normally replaces each file @var{f} with its new version, putting reject -hunks (if any) into @samp{@var{f}.rej}. - -@xref{Invoking patch}, for detailed information on the options to -@command{patch}. - -@menu -* patch Input:: Selecting the type of @command{patch} input. -* Revision Control:: Getting files from @sc{rcs}, @sc{sccs}, etc. -* Imperfect:: Dealing with imperfect patches. -* Creating and Removing:: Creating and removing files with a patch. -* Patching Time Stamps:: Updating time stamps on patched files. -* Multiple Patches:: Handling multiple patches in a file. -* patch Directories:: Changing directory and stripping directories. -* Backups:: Whether backup files are made. -* Backup Names:: Backup file names. -* Reject Names:: Reject file names. -* patch Messages:: Messages and questions @command{patch} can produce. -* patch and POSIX:: Conformance to the @sc{posix} standard. -* patch and Tradition:: @sc{gnu} versus traditional @command{patch}. -@end menu - -@node patch Input -@section Selecting the @command{patch} Input Format -@cindex @command{patch} input format - -@command{patch} normally determines which @command{diff} format the patch -file uses by examining its contents. For patch files that contain -particularly confusing leading text, you might need to use one of the -following options to force @command{patch} to interpret the patch file as a -certain format of diff. The output formats listed here are the only -ones that @command{patch} can understand. - -@table @option -@item -c -@itemx --context -context diff. - -@item -e -@itemx --ed -@command{ed} script. - -@item -n -@itemx --normal -normal diff. - -@item -u -@itemx --unified -unified diff. -@end table - -@node Revision Control -@section Revision Control -@cindex revision control -@cindex version control -@cindex @sc{rcs} -@cindex ClearCase -@cindex @sc{sccs} - -If a nonexistent input file is under a revision control system -supported by @command{patch}, @command{patch} normally asks the user -whether to get (or check out) the file from the revision control -system. Patch currently supports @sc{rcs}, ClearCase and @sc{sccs}. -Under @sc{rcs} and @sc{sccs}, @command{patch} also asks when the input -file is read-only and matches the default version in the revision -control system. - -@vindex PATCH_GET -The @option{-g @var{num}} or @option{--get=@var{num}} affects access -to files under supported revision control systems. If @var{num} is -positive, @command{patch} gets the file without asking the user; if -zero, @command{patch} neither asks the user nor gets the file; and if -negative, @command{patch} asks the user before getting the file. The -default value of @var{num} is given by the value of the -@env{PATCH_GET} environment variable if it is set; if not, the default -value is zero if @command{patch} is conforming to @sc{posix}, negative -otherwise. @xref{patch and POSIX}. - -@vindex VERSION_CONTROL -The choice of revision control system is unaffected by the -@env{VERSION_CONTROL} environment variable (@pxref{Backup Names}). - -@node Imperfect -@section Applying Imperfect Patches -@cindex imperfect patch application - -@command{patch} tries to skip any leading text in the patch file, -apply the diff, and then skip any trailing text. Thus you can feed a -mail message directly to @command{patch}, and it should work. If the -entire diff is indented by a constant amount of white space, -@command{patch} automatically ignores the indentation. If a context -diff contains trailing carriage return on each line, @command{patch} -automatically ignores the carriage return. If a context diff has been -encapsulated by prepending @w{@samp{- }} to lines beginning with @samp{-} -as per @uref{ftp://ftp.isi.edu/in-notes/rfc934.txt, Internet RFC 934}, -@command{patch} automatically unencapsulates the input. - -However, certain other types of imperfect input require user -intervention or testing. - -@menu -* Changed White Space:: When tabs and spaces don't match exactly. -* Reversed Patches:: Applying reversed patches correctly. -* Inexact:: Helping @command{patch} find close matches. -* Dry Runs:: Predicting what @command{patch} will do. -@end menu - -@node Changed White Space -@subsection Applying Patches with Changed White Space -@cindex white space in patches - -Sometimes mailers, editors, or other programs change spaces into tabs, -or vice versa. If this happens to a patch file or an input file, the -files might look the same, but @command{patch} will not be able to match -them properly. If this problem occurs, use the @option{-l} or -@option{--ignore-white-space} option, which makes @command{patch} compare -blank characters (i.e.@: spaces and tabs) loosely so that any nonempty -sequence of blanks in the patch file matches any nonempty sequence of -blanks in the input files. Non-blank -characters must still match exactly. Each line of the context must -still match a line in the input file. - -@node Reversed Patches -@subsection Applying Reversed Patches -@cindex reversed patches - -Sometimes people run @command{diff} with the new file first instead of -second. This creates a diff that is ``reversed''. To apply such -patches, give @command{patch} the @option{-R} or @option{--reverse} option. -@command{patch} then attempts to swap each hunk around before applying it. -Rejects come out in the swapped format. - -Often @command{patch} can guess that the patch is reversed. If the first -hunk of a patch fails, @command{patch} reverses the hunk to see if it can -apply it that way. If it can, @command{patch} asks you if you want to have -the @option{-R} option set; if it can't, @command{patch} continues to apply -the patch normally. This method cannot detect a reversed patch if it is -a normal diff and the first command is an append (which should have been -a delete) since appends always succeed, because a null context matches -anywhere. But most patches add or change lines rather than delete them, -so most reversed normal diffs begin with a delete, which fails, and -@command{patch} notices. - -If you apply a patch that you have already applied, @command{patch} thinks -it is a reversed patch and offers to un-apply the patch. This could be -construed as a feature. If you did this inadvertently and you don't -want to un-apply the patch, just answer @samp{n} to this offer and to -the subsequent ``apply anyway'' question---or type @kbd{C-c} to kill the -@command{patch} process. - -@node Inexact -@subsection Helping @command{patch} Find Inexact Matches -@cindex inexact patches -@cindex fuzz factor when patching - -For context diffs, and to a lesser extent normal diffs, @command{patch} can -detect when the line numbers mentioned in the patch are incorrect, and -it attempts to find the correct place to apply each hunk of the patch. -As a first guess, it takes the line number mentioned in the hunk, plus -or minus any offset used in applying the previous hunk. If that is not -the correct place, @command{patch} scans both forward and backward for a -set of lines matching the context given in the hunk. - -First @command{patch} looks for a place where all lines of the context -match. If it cannot find such a place, and it is reading a context or -unified diff, and the maximum fuzz factor is set to 1 or more, then -@command{patch} makes another scan, ignoring the first and last line of -context. If that fails, and the maximum fuzz factor is set to 2 or -more, it makes another scan, ignoring the first two and last two lines -of context are ignored. It continues similarly if the maximum fuzz -factor is larger. - -The @option{-F @var{lines}} or @option{--fuzz=@var{lines}} option sets the -maximum fuzz factor to @var{lines}. This option only applies to context -and unified diffs; it ignores up to @var{lines} lines while looking for -the place to install a hunk. Note that a larger fuzz factor increases -the odds of making a faulty patch. The default fuzz factor is 2; there -is no point to setting it to more than the number of lines of context -in the diff, ordinarily 3. - -If @command{patch} cannot find a place to install a hunk of the patch, it -writes the hunk out to a reject file (@pxref{Reject Names}, for information -on how reject files are named). It writes out rejected hunks in context -format no matter what form the input patch is in. If the input is a -normal or @command{ed} diff, many of the contexts are simply null. The -line numbers on the hunks in the reject file may be different from those -in the patch file: they show the approximate location where @command{patch} -thinks the failed hunks belong in the new file rather than in the old -one. - -If the @option{--verbose} option is given, then -as it completes each hunk @command{patch} tells you whether the hunk -succeeded or failed, and if it failed, on which line (in the new file) -@command{patch} thinks the hunk should go. If this is different from the -line number specified in the diff, it tells you the offset. A single -large offset @emph{may} indicate that @command{patch} installed a hunk in -the wrong place. @command{patch} also tells you if it used a fuzz factor -to make the match, in which case you should also be slightly suspicious. - -@command{patch} cannot tell if the line numbers are off in an @command{ed} -script, and can only detect wrong line numbers in a normal diff when it -finds a change or delete command. It may have the same problem with a -context diff using a fuzz factor equal to or greater than the number of -lines of context shown in the diff (typically 3). In these cases, you -should probably look at a context diff between your original and patched -input files to see if the changes make sense. Compiling without errors -is a pretty good indication that the patch worked, but not a guarantee. - -A patch against an empty file applies to a nonexistent file, and vice -versa. @xref{Creating and Removing}. - -@command{patch} usually produces the correct results, even when it must -make many guesses. However, the results are guaranteed only when -the patch is applied to an exact copy of the file that the patch was -generated from. - -@node Dry Runs -@subsection Predicting what @command{patch} will do -@cindex testing @command{patch} -@cindex dry runs for @command{patch} - -It may not be obvious in advance what @command{patch} will do with a -complicated or poorly formatted patch. If you are concerned that the -input might cause @command{patch} to modify the wrong files, you can -use the @option{--dry-run} option, which causes @command{patch} to -print the results of applying patches without actually changing any -files. You can then inspect the diagnostics generated by the dry run -to see whether @command{patch} will modify the files that you expect. -If the patch does not do what you want, you can modify the patch (or -the other options to @command{patch}) and try another dry run. Once -you are satisfied with the proposed patch you can apply it by invoking -@command{patch} as before, but this time without the -@option{--dry-run} option. - -@node Creating and Removing -@section Creating and Removing Files -@cindex creating files -@cindex empty files, removing -@cindex removing empty files - -Sometimes when comparing two directories, a file may exist in one -directory but not the other. If you give @command{diff} the -@option{-N} or @option{--new-file} option, or if you supply an old or -new file that is named @file{/dev/null} or is empty and is dated the -Epoch (1970-01-01 00:00:00 UTC), @command{diff} outputs a patch that -adds or deletes the contents of this file. When given such a patch, -@command{patch} normally creates a new file or removes the old file. -However, when conforming to @sc{posix} (@pxref{patch and POSIX}), -@command{patch} does not remove the old file, but leaves it empty. -The @option{-E} or @option{--remove-empty-files} option causes -@command{patch} to remove output files that are empty after applying a -patch, even if the patch does not appear to be one that removed the -file. - -If the patch appears to create a file that already exists, -@command{patch} asks for confirmation before applying the patch. - -@node Patching Time Stamps -@section Updating Time Stamps on Patched Files -@cindex time stamps on patched files - -When @command{patch} updates a file, it normally sets the file's -last-modified time stamp to the current time of day. If you are using -@command{patch} to track a software distribution, this can cause -@command{make} to incorrectly conclude that a patched file is out of -date. For example, if @file{syntax.c} depends on @file{syntax.y}, and -@command{patch} updates @file{syntax.c} and then @file{syntax.y}, then -@file{syntax.c} will normally appear to be out of date with respect to -@file{syntax.y} even though its contents are actually up to date. - -The @option{-Z} or @option{--set-utc} option causes @command{patch} to -set a patched file's modification and access times to the time stamps -given in context diff headers. If the context diff headers do not -specify a time zone, they are assumed to use Coordinated Universal -Time (@sc{utc}, often known as @sc{gmt}). - -The @option{-T} or @option{--set-time} option acts like @option{-Z} or -@option{--set-utc}, except that it assumes that the context diff -headers' time stamps use local time instead of @sc{utc}. This option -is not recommended, because patches using local time cannot easily be -used by people in other time zones, and because local time stamps are -ambiguous when local clocks move backwards during daylight-saving time -adjustments. If the context diff headers specify a time zone, this -option is equivalent to @option{-Z} or @option{--set-utc}. - -@command{patch} normally refrains from setting a file's time stamps if -the file's original last-modified time stamp does not match the time -given in the diff header, of if the file's contents do not exactly -match the patch. However, if the @option{-f} or @option{--force} -option is given, the file's time stamps are set regardless. - -Due to the limitations of the current @command{diff} format, -@command{patch} cannot update the times of files whose contents have -not changed. Also, if you set file time stamps to values other than -the current time of day, you should also remove (e.g., with @samp{make -clean}) all files that depend on the patched files, so that later -invocations of @command{make} do not get confused by the patched -files' times. - -@node Multiple Patches -@section Multiple Patches in a File -@cindex multiple patches -@cindex intuiting file names from patches - -If the patch file contains more than one patch, and if you do not -specify an input file on the command line, @command{patch} tries to -apply each patch as if they came from separate patch files. This -means that it determines the name of the file to patch for each patch, -and that it examines the leading text before each patch for file names -and prerequisite revision level (@pxref{Making Patches}, for more on -that topic). - -@command{patch} uses the following rules to intuit a file name from -the leading text before a patch. First, @command{patch} takes an -ordered list of candidate file names as follows: - -@itemize @bullet -@item -If the header is that of a context diff, @command{patch} takes the old -and new file names in the header. A name is ignored if it does not -have enough slashes to satisfy the @option{-p@var{num}} or -@option{--strip=@var{num}} option. The name @file{/dev/null} is also -ignored. - -@item -If there is an @samp{Index:} line in the leading garbage and if either -the old and new names are both absent or if @command{patch} is -conforming to @sc{posix}, @command{patch} takes the name in the -@samp{Index:} line. - -@item -For the purpose of the following rules, the candidate file names are -considered to be in the order (old, new, index), regardless of the -order that they appear in the header. -@end itemize - -@noindent -Then @command{patch} selects a file name from the candidate list as -follows: - -@itemize @bullet -@item -If some of the named files exist, @command{patch} selects the first -name if conforming to @sc{posix}, and the best name otherwise. - -@item -If @command{patch} is not ignoring @sc{rcs}, ClearCase, and @sc{sccs} -(@pxref{Revision Control}), and no named files exist but an @sc{rcs}, -ClearCase, or @sc{sccs} master is found, @command{patch} selects the -first named file with an @sc{rcs}, ClearCase, or @sc{sccs} master. - -@item -If no named files exist, no @sc{rcs}, ClearCase, or @sc{sccs} master -was found, some names are given, @command{patch} is not conforming to -@sc{posix}, and the patch appears to create a file, @command{patch} -selects the best name requiring the creation of the fewest -directories. - -@item -If no file name results from the above heuristics, you are asked for -the name of the file to patch, and @command{patch} selects that name. -@end itemize - -To determine the @dfn{best} of a nonempty list of file names, -@command{patch} first takes all the names with the fewest path name -components; of those, it then takes all the names with the shortest -basename; of those, it then takes all the shortest names; finally, it -takes the first remaining name. - -@xref{patch and POSIX}, to see whether @command{patch} is conforming -to @sc{posix}. - -@node patch Directories -@section Applying Patches in Other Directories -@cindex directories and patch -@cindex patching directories - -The @option{-d @var{directory}} or @option{--directory=@var{directory}} -option to @command{patch} makes directory @var{directory} the current -directory for interpreting both file names in the patch file, and file -names given as arguments to other options (such as @option{-B} and -@option{-o}). For example, while in a mail reading program, you can patch -a file in the @file{/usr/src/emacs} directory directly from a message -containing the patch like this: - -@example -| patch -d /usr/src/emacs -@end example - -Sometimes the file names given in a patch contain leading directories, -but you keep your files in a directory different from the one given in -the patch. In those cases, you can use the -@option{-p@var{number}} or @option{--strip=@var{number}} -option to set the file name strip count to @var{number}. The strip -count tells @command{patch} how many slashes, along with the directory -names between them, to strip from the front of file names. A sequence -of one or more adjacent slashes is counted as a single slash. By -default, @command{patch} strips off all leading directories, leaving -just the base file names. - -For example, suppose the file name in the patch file is -@file{/gnu/src/emacs/etc/NEWS}. Using @option{-p0} gives the -entire file name unmodified, @option{-p1} gives -@file{gnu/src/emacs/etc/NEWS} (no leading slash), @option{-p4} gives -@file{etc/NEWS}, and not specifying @option{-p} at all gives @file{NEWS}. - -@command{patch} looks for each file (after any slashes have been stripped) -in the current directory, or if you used the @option{-d @var{directory}} -option, in that directory. - -@node Backups -@section Backup Files -@cindex backup file strategy - -Normally, @command{patch} creates a backup file if the patch does not -exactly match the original input file, because in that case the -original data might not be recovered if you undo the patch with -@samp{patch -R} (@pxref{Reversed Patches}). However, when conforming -to @sc{posix}, @command{patch} does not create backup files by -default. @xref{patch and POSIX}. - -The @option{-b} or @option{--backup} option causes @command{patch} to -make a backup file regardless of whether the patch matches the -original input. The @option{--backup-if-mismatch} option causes -@command{patch} to create backup files for mismatches files; this is -the default when not conforming to @sc{posix}. The -@option{--no-backup-if-mismatch} option causes @command{patch} to not -create backup files, even for mismatched patches; this is the default -when conforming to @sc{posix}. - -When backing up a file that does not exist, an empty, unreadable -backup file is created as a placeholder to represent the nonexistent -file. - -@node Backup Names -@section Backup File Names -@cindex backup file names - -Normally, @command{patch} renames an original input file into a backup -file by appending to its name the extension @samp{.orig}, or @samp{~} -if using @samp{.orig} would make the backup file name too -long.@footnote{A coding error in @sc{gnu} @command{patch} version -2.5.4 causes it to always use @samp{~}, but this should be fixed in -the next release.} The @option{-z @var{backup-suffix}} or -@option{--suffix=@var{backup-suffix}} option causes @command{patch} to -use @var{backup-suffix} as the backup extension instead. - -@vindex SIMPLE_BACKUP_SUFFIX -Alternately, you can specify the extension for backup files with the -@env{SIMPLE_BACKUP_SUFFIX} environment variable, which the options -override. - -@command{patch} can also create numbered backup files the way @sc{gnu} Emacs -does. With this method, instead of having a single backup of each file, -@command{patch} makes a new backup file name each time it patches a file. -For example, the backups of a file named @file{sink} would be called, -successively, @file{sink.~1~}, @file{sink.~2~}, @file{sink.~3~}, etc. - -@vindex PATCH_VERSION_CONTROL -@vindex VERSION_CONTROL -The @option{-V @var{backup-style}} or -@option{--version-control=@var{backup-style}} option takes as an -argument a method for creating backup file names. You can alternately -control the type of backups that @command{patch} makes with the -@env{PATCH_VERSION_CONTROL} environment variable, which the -@option{-V} option overrides. If @env{PATCH_VERSION_CONTROL} is not -set, the @env{VERSION_CONTROL} environment variable is used instead. -Please note that these options and variables control backup file -names; they do not affect the choice of revision control system -(@pxref{Revision Control}). - -The values of these environment variables and the argument to the -@option{-V} option are like the @sc{gnu} Emacs @code{version-control} -variable (@pxref{Backup Names, , , emacs, The @sc{gnu} Emacs Manual}, -for more information on backup versions in Emacs). They also -recognize synonyms that are more descriptive. The valid values are -listed below; unique abbreviations are acceptable. - -@table @option -@item t -@itemx numbered -Always make numbered backups. - -@item nil -@itemx existing -Make numbered backups of files that already have them, simple backups of -the others. This is the default. - -@item never -@itemx simple -Always make simple backups. -@end table - -You can also tell @command{patch} to prepend a prefix, such as a -directory name, to produce backup file names. The @option{-B -@var{prefix}} or @option{--prefix=@var{prefix}} option makes backup -files by prepending @var{prefix} to them. The @option{-Y -@var{prefix}} or @option{--basename-prefix=@var{prefix}} prepends -@var{prefix} to the last file name component of backup file names -instead; for example, @option{-Y ~} causes the backup name for -@file{dir/file.c} to be @file{dir/~file.c}. If you use either of -these prefix options, the suffix-based options are ignored. - -If you specify the output file with the @option{-o} option, that file is -the one that is backed up, not the input file. - -Options that affect the names of backup files do not affect whether -backups are made. For example, if you specify the -@option{--no-backup-if-mismatch} option, none of the options described -in this section have any affect, because no backups are made. - -@node Reject Names -@section Reject File Names -@cindex reject file names - -The names for reject files (files containing patches that -@command{patch} could not find a place to apply) are normally the name -of the output file with @samp{.rej} appended (or @samp{#} if if using -@samp{.rej} would make the backup file name too long). - -Alternatively, you can tell @command{patch} to place all of the rejected -patches in a single file. The @option{-r @var{reject-file}} or -@option{--reject-file=@var{reject-file}} option uses @var{reject-file} as -the reject file name. - -@node patch Messages -@section Messages and Questions from @command{patch} -@cindex @command{patch} messages and questions -@cindex diagnostics from @command{patch} -@cindex messages from @command{patch} - -@command{patch} can produce a variety of messages, especially if it -has trouble decoding its input. In a few situations where it's not -sure how to proceed, @command{patch} normally prompts you for more -information from the keyboard. There are options to produce more or -fewer messages, to have it not ask for keyboard input, and to -affect the way that file names are quoted in messages. - -@menu -* More or Fewer Messages:: Controlling the verbosity of @command{patch}. -* patch and Keyboard Input:: Inhibiting keyboard input. -* patch Quoting Style:: Quoting file names in diagnostics. -@end menu - -@command{patch} exits with status 0 if all hunks are applied successfully, -1 if some hunks cannot be applied, and 2 if there is more serious trouble. -When applying a set of patches in a loop, you should check the -exit status, so you don't apply a later patch to a partially patched -file. - -@node More or Fewer Messages -@subsection Controlling the Verbosity of @command{patch} -@cindex verbose messages from @command{patch} -@cindex inhibit messages from @command{patch} - -You can cause @command{patch} to produce more messages by using the -@option{--verbose} option. For example, when you give this option, -the message @samp{Hmm...} indicates that @command{patch} is reading text in -the patch file, attempting to determine whether there is a patch in that -text, and if so, what kind of patch it is. - -You can inhibit all terminal output from @command{patch}, unless an error -occurs, by using the @option{-s}, @option{--quiet}, or @option{--silent} -option. - -@node patch and Keyboard Input -@subsection Inhibiting Keyboard Input -@cindex keyboard input to @command{patch} - -There are two ways you can prevent @command{patch} from asking you any -questions. The @option{-f} or @option{--force} option assumes that you know -what you are doing. It causes @command{patch} to do the following: - -@itemize @bullet -@item -Skip patches that do not contain file names in their headers. - -@item -Patch files even though they have the wrong version for the -@samp{Prereq:} line in the patch; - -@item -Assume that patches are not reversed even if they look like they are. -@end itemize - -@noindent -The @option{-t} or @option{--batch} option is similar to @option{-f}, in that -it suppresses questions, but it makes somewhat different assumptions: - -@itemize @bullet -@item -Skip patches that do not contain file names in their headers -(the same as @option{-f}). - -@item -Skip patches for which the file has the wrong version for the -@samp{Prereq:} line in the patch; - -@item -Assume that patches are reversed if they look like they are. -@end itemize - -@node patch Quoting Style -@subsection @command{patch} Quoting Style -@cindex quoting style - -When @command{patch} outputs a file name in a diagnostic message, it -can format the name in any of several ways. This can be useful to -output file names unambiguously, even if they contain punctuation or -special characters like newlines. The -@option{--quoting-style=@var{word}} option controls how names are -output. The @var{word} should be one of the following: - -@table @samp -@item literal -Output names as-is. -@item shell -Quote names for the shell if they contain shell metacharacters or would -cause ambiguous output. -@item shell-always -Quote names for the shell, even if they would normally not require quoting. -@item c -Quote names as for a C language string. -@item escape -Quote as with @samp{c} except omit the surrounding double-quote -characters. -@c The following are not yet implemented in patch 2.5.4. -@c @item clocale -@c Quote as with @samp{c} except use quotation marks appropriate for the -@c locale. -@c @item locale -@c @c Use @t instead of @samp to avoid duplicate quoting in some output styles. -@c Like @samp{clocale}, but quote @t{`like this'} instead of @t{"like -@c this"} in the default C locale. This looks nicer on many displays. -@end table - -@vindex QUOTING_STYLE -You can specify the default value of the @option{--quoting-style} -option with the environment variable @env{QUOTING_STYLE}. If that -environment variable is not set, the default value is @samp{shell}, -but this default may change in a future version of @command{patch}. - -@node patch and POSIX -@section @command{patch} and the @sc{posix} Standard -@cindex @sc{posix} - -@vindex POSIXLY_CORRECT -If you specify the @option{--posix} option, or set the -@env{POSIXLY_CORRECT} environment variable, @command{patch} conforms -more strictly to the @sc{posix} standard, as follows: - -@itemize @bullet -@item -Take the first existing file from the list (old, new, index) -when intuiting file names from diff headers. @xref{Multiple Patches}. - -@item -Do not remove files that are removed by a diff. -@xref{Creating and Removing}. - -@item -Do not ask whether to get files from @sc{rcs}, ClearCase, or -@sc{sccs}. @xref{Revision Control}. - -@item -Require that all options precede the files in the command line. - -@item -Do not backup files, even when there is a mismatch. @xref{Backups}. - -@end itemize - -@node patch and Tradition -@section @sc{gnu} @command{patch} and Traditional @command{patch} -@cindex traditional @command{patch} - -The current version of @sc{gnu} @command{patch} normally follows the -@sc{posix} standard. @xref{patch and POSIX}, for the few exceptions -to this general rule. - -Unfortunately, @sc{posix} redefined the behavior of @command{patch} in -several important ways. You should be aware of the following -differences if you must interoperate with traditional @command{patch}, -or with @sc{gnu} @command{patch} version 2.1 and earlier. - -@itemize @bullet -@item -In traditional @command{patch}, the @option{-p} option's operand was -optional, and a bare @option{-p} was equivalent to @option{-p0}. The -@option{-p} option now requires an operand, and @option{-p@ 0} is now -equivalent to @option{-p0}. For maximum compatibility, use options -like @option{-p0} and @option{-p1}. - -Also, traditional @command{patch} simply counted slashes when -stripping path prefixes; @command{patch} now counts pathname -components. That is, a sequence of one or more adjacent slashes now -counts as a single slash. For maximum portability, avoid sending -patches containing @file{//} in file names. - -@item -In traditional @command{patch}, backups were enabled by default. This -behavior is now enabled with the @option{-b} or @option{--backup} -option. - -Conversely, in @sc{posix} @command{patch}, backups are never made, -even when there is a mismatch. In @sc{gnu} @command{patch}, this -behavior is enabled with the @option{--no-backup-if-mismatch} option, -or by conforming to @sc{posix}. - -The @option{-b@ @var{suffix}} option of traditional @command{patch} is -equivalent to the @samp{-b -z@ @var{suffix}} options of @sc{gnu} -@command{patch}. - -@item -Traditional @command{patch} used a complicated (and incompletely -documented) method to intuit the name of the file to be patched from -the patch header. This method did not conform to @sc{posix}, and had -a few gotchas. Now @command{patch} uses a different, equally -complicated (but better documented) method that is optionally -@sc{posix}-conforming; we hope it has fewer gotchas. The two methods -are compatible if the file names in the context diff header and the -@samp{Index:} line are all identical after prefix-stripping. Your -patch is normally compatible if each header's file names all contain -the same number of slashes. - -@item -When traditional @command{patch} asked the user a question, it sent -the question to standard error and looked for an answer from the first -file in the following list that was a terminal: standard error, -standard output, @file{/dev/tty}, and standard input. Now -@command{patch} sends questions to standard output and gets answers -from @file{/dev/tty}. Defaults for some answers have been changed so -that @command{patch} never goes into an infinite loop when using -default answers. - -@item -Traditional @command{patch} exited with a status value that counted -the number of bad hunks, or with status 1 if there was real trouble. -Now @command{patch} exits with status 1 if some hunks failed, or with -2 if there was real trouble. - -@item -Limit yourself to the following options when sending instructions -meant to be executed by anyone running @sc{gnu} @command{patch}, -traditional @command{patch}, or a @command{patch} that conforms to -@sc{posix}. Spaces are significant in the following list, and -operands are required. - -@example -@option{-c} -@option{-d @var{dir}} -@option{-D @var{define}} -@option{-e} -@option{-l} -@option{-n} -@option{-N} -@option{-o @var{outfile}} -@option{-p@var{num}} -@option{-R} -@option{-r @var{rejectfile}} -@end example - -@end itemize - -@node Making Patches -@chapter Tips for Making and Using Patches - -Use some common sense when making and using patches. For example, -when sending bug fixes to a program's maintainer, send several small -patches, one per independent subject, instead of one large, -harder-to-digest patch that covers all the subjects. - -Here are some other things you should keep in mind if you are going to -distribute patches for updating a software package. - -@menu -* Tips for Patch Producers:: Advice for making patches. -* Tips for Patch Consumers:: Advice for using patches. -* Avoiding Common Mistakes:: Avoiding common mistakes when using @command{patch}. -* Generating Smaller Patches:: How to generate smaller patches. -@end menu - -@node Tips for Patch Producers -@section Tips for Patch Producers -@cindex patch producer tips - -To create a patch that changes an older version of a package into a -newer version, first make a copy of the older and newer versions in -adjacent subdirectories. It is common to do that by unpacking -@command{tar} archives of the two versions. - -To generate the patch, use the command @samp{diff -Naur @var{old} -@var{new}} where @var{old} and @var{new} identify the old and new -directories. The names @var{old} and @var{new} should not contain any -slashes. The @option{-N} option lets the patch create and remove -files; @option{-a} lets the patch update non-text files; @option{-u} -generates useful time stamps and enough context; and @option{-r} lets -the patch update subdirectories. Here is an example command, using -Bourne shell syntax: - -@example -diff -Naur gcc-3.0.3 gcc-3.0.4 -@end example - -Tell your recipients how to apply the patches. This should include -which working directory to use, and which @command{patch} options to -use; the option @samp{-p1} is recommended. Test your procedure by -pretending to be a recipient and applying your patches to a copy of -the original files. - -@xref{Avoiding Common Mistakes}, for how to avoid common mistakes when -generating a patch. - -@node Tips for Patch Consumers -@section Tips for Patch Consumers -@cindex patch consumer tips - -A patch producer should tell recipients how to apply the patches, so -the first rule of thumb for a patch consumer is to follow the -instructions supplied with the patch. - -@sc{gnu} @command{diff} can analyze files with arbitrarily long lines -and files that end in incomplete lines. However, older versions of -@command{patch} cannot patch such files. If you are having trouble -applying such patches, try upgrading to a recent version of @sc{gnu} -@command{patch}. - -@node Avoiding Common Mistakes -@section Avoiding Common Mistakes -@cindex common mistakes with patches -@cindex patch, common mistakes - -When producing a patch for multiple files, apply @command{diff} to -directories whose names do not have slashes. This reduces confusion -when the patch consumer specifies the @option{-p@var{number}} option, -since this option can have surprising results when the old and new -file names have different numbers of slashes. For example, do not -send a patch with a header that looks like this: - -@example -diff -Naur v2.0.29/prog/README prog/README ---- v2.0.29/prog/README 2002-03-10 23:30:39.942229878 -0800 -+++ prog/README 2002-03-17 20:49:32.442260588 -0800 -@end example - -@noindent -because the two file names have different numbers of slashes, and -different versions of @command{patch} interpret the file names -differently. To avoid confusion, send output that looks like this -instead: - -@example -diff -Naur v2.0.29/prog/README v2.0.30/prog/README ---- v2.0.29/prog/README 2002-03-10 23:30:39.942229878 -0800 -+++ v2.0.30/prog/README 2002-03-17 20:49:32.442260588 -0800 -@end example - -Make sure you have specified the file names correctly, either in a -context diff header or with an @samp{Index:} line. Take care to not send out -reversed patches, since these make people wonder whether they have -already applied the patch. - -Avoid sending patches that compare backup file names like -@file{README.orig} or @file{README~}, since this might confuse -@command{patch} into patching a backup file instead of the real file. -Instead, send patches that compare the same base file names in -different directories, e.g.@: @file{old/README} and @file{new/README}. - -To save people from partially applying a patch before other patches that -should have gone before it, you can make the first patch in the patch -file update a file with a name like @file{patchlevel.h} or -@file{version.c}, which contains a patch level or version number. If -the input file contains the wrong version number, @command{patch} will -complain immediately. - -An even clearer way to prevent this problem is to put a @samp{Prereq:} -line before the patch. If the leading text in the patch file contains a -line that starts with @samp{Prereq:}, @command{patch} takes the next word -from that line (normally a version number) and checks whether the next -input file contains that word, preceded and followed by either -white space or a newline. If not, @command{patch} prompts you for -confirmation before proceeding. This makes it difficult to accidentally -apply patches in the wrong order. - -@node Generating Smaller Patches -@section Generating Smaller Patches -@cindex patches, shrinking - -The simplest way to generate a patch is to use @samp{diff -Naur} -(@pxref{Tips for Patch Producers}), but you might be able to reduce -the size of the patch by renaming or removing some files before making -the patch. If the older version of the package contains any files -that the newer version does not, or if any files have been renamed -between the two versions, make a list of @command{rm} and @command{mv} -commands for the user to execute in the old version directory before -applying the patch. Then run those commands yourself in the scratch -directory. - -If there are any files that you don't need to include in the patch -because they can easily be rebuilt from other files (for example, -@file{TAGS} and output from @command{yacc} and @command{makeinfo}), -exclude them from the patch by giving @command{diff} the @option{-x -@var{pattern}} option (@pxref{Comparing Directories}). If you want -your patch to modify a derived file because your recipients lack tools -to build it, make sure that the patch for the derived file follows any -patches for files that it depends on, so that the recipients' time -stamps will not confuse @command{make}. - -Now you can create the patch using @samp{diff -Naur}. Make sure to -specify the scratch directory first and the newer directory second. - -Add to the top of the patch a note telling the user any @command{rm} and -@command{mv} commands to run before applying the patch. Then you can -remove the scratch directory. - -You can also shrink the patch size by using fewer lines of context, -but bear in mind that @command{patch} typically needs at least two -lines for proper operation when patches do not exactly match the input -files. - -@node Invoking cmp -@chapter Invoking @command{cmp} -@cindex invoking @command{cmp} -@cindex @command{cmp} invocation - -The @command{cmp} command compares two files, and if they differ, -tells the first byte and line number where they differ. Bytes and -lines are numbered starting with 1. The arguments of @command{cmp} -are as follows: - -@example -cmp @var{options}@dots{} @var{from-file} @r{[}@var{to-file} @r{[}@var{from-skip} @r{[}@var{to-skip}@r{]}@r{]}@r{]} -@end example - -The file name @file{-} is always the standard input. @command{cmp} -also uses the standard input if one file name is omitted. The -@var{from-skip} and @var{to-skip} operands specify how many bytes to -ignore at the start of each file; they are equivalent to the -@option{--ignore-initial=@var{from-skip}:@var{to-skip}} option. - -An exit status of 0 means no differences were found, 1 means some -differences were found, and 2 means trouble. - -@menu -* cmp Options:: Summary of options to @command{cmp}. -@end menu - -@node cmp Options -@section Options to @command{cmp} -@cindex @command{cmp} options -@cindex options for @command{cmp} - -Below is a summary of all of the options that @sc{gnu} @command{cmp} accepts. -Most options have two equivalent names, one of which is a single letter -preceded by @samp{-}, and the other of which is a long name preceded by -@samp{--}. Multiple single letter options (unless they take an -argument) can be combined into a single command line word: @option{-bl} is -equivalent to @option{-b -l}. - -@table @option -@item -b -@itemx --print-bytes -Print the differing bytes. Display control bytes as a -@samp{^} followed by a letter of the alphabet and precede bytes -that have the high bit set with @samp{M-} (which stands for ``meta''). - -@item --help -Output a summary of usage and then exit. - -@item -i @var{skip} -@itemx --ignore-initial=@var{skip} -Ignore any differences in the first @var{skip} bytes of the input -files. Treat files with fewer than @var{skip} bytes as if they are -empty. If @var{skip} is of the form -@option{@var{from-skip}:@var{to-skip}}, skip the first @var{from-skip} -bytes of the first input file and the first @var{to-skip} bytes of the -second. - -@item -l -@itemx --verbose -Print the (decimal) byte numbers and (octal) values of all differing bytes. - -@item -n @var{count} -@itemx --bytes=@var{count} -Compare at most @var{count} input bytes. - -@item -s -@itemx --quiet -@itemx --silent -Do not print anything; only return an exit status indicating whether -the files differ. - -@item -v -@itemx --version -Output version information and then exit. -@end table - -In the above table, operands that are byte counts are normally -decimal, but may be preceded by @samp{0} for octal and @samp{0x} for -hexadecimal. - -A byte count can be followed by a suffix to specify a multiple of that -count; in this case an omitted integer is understood to be 1. A bare -size letter, or one followed by @samp{iB}, specifies a multiple using -powers of 1024. A size letter followed by @samp{B} specifies powers -of 1000 instead. For example, @option{-n 4M} and @option{-n 4MiB} are -equivalent to @option{-n 4194304}, whereas @option{-n 4MB} is -equivalent to @option{-n 4000000}. This notation is upward compatible -with the @uref{http://www.bipm.fr/enus/3_SI/si-prefixes.html, SI -prefixes} for decimal multiples and with the -@uref{http://physics.nist.gov/cuu/Units/binary.html, IEC 60027-2 -prefixes for binary multiples}. - -The following suffixes are defined. Large sizes like @code{1Y} may be -rejected by your computer due to limitations of its arithmetic. - -@table @samp -@item kB -@cindex kilobyte, definition of -kilobyte: @math{10^3 = 1000}. -@item k -@itemx K -@itemx KiB -@cindex kibibyte, definition of -kibibyte: @math{2^10 = 1024}. @samp{K} is special: the SI prefix is -@samp{k} and the IEC 60027-2 prefix is @samp{Ki}, but tradition and -@sc{posix} use @samp{k} to mean @samp{KiB}. -@item MB -@cindex megabyte, definition of -megabyte: @math{10^6 = 1,000,000}. -@item M -@itemx MiB -@cindex mebibyte, definition of -mebibyte: @math{2^20 = 1,048,576}. -@item GB -@cindex gigabyte, definition of -gigabyte: @math{10^9 = 1,000,000,000}. -@item G -@itemx GiB -@cindex gibibyte, definition of -gibibyte: @math{2^30 = 1,073,741,824}. -@item TB -@cindex terabyte, definition of -terabyte: @math{10^12 = 1,000,000,000,000}. -@item T -@itemx TiB -@cindex tebibyte, definition of -tebibyte: @math{2^40 = 1,099,511,627,776}. -@item PB -@cindex petabyte, definition of -petabyte: @math{10^15 = 1,000,000,000,000,000}. -@item P -@itemx PiB -@cindex pebibyte, definition of -pebibyte: @math{2^50 = 1,125,899,906,842,624}. -@item EB -@cindex exabyte, definition of -exabyte: @math{10^18 = 1,000,000,000,000,000,000}. -@item E -@itemx EiB -@cindex exbibyte, definition of -exbibyte: @math{2^60 = 1,152,921,504,606,846,976}. -@item ZB -@cindex zettabyte, definition of -zettabyte: @math{10^21 = 1,000,000,000,000,000,000,000} -@item Z -@itemx ZiB -@math{2^70 = 1,180,591,620,717,411,303,424}. -(@samp{Zi} is a GNU extension to IEC 60027-2.) -@item YB -@cindex yottabyte, definition of -yottabyte: @math{10^24 = 1,000,000,000,000,000,000,000,000}. -@item Y -@itemx YiB -@math{2^80 = 1,208,925,819,614,629,174,706,176}. -(@samp{Yi} is a GNU extension to IEC 60027-2.) -@end table - -@node Invoking diff -@chapter Invoking @command{diff} -@cindex invoking @command{diff} -@cindex @command{diff} invocation - -The format for running the @command{diff} command is: - -@example -diff @var{options}@dots{} @var{files}@dots{} -@end example - -In the simplest case, two file names @var{from-file} and -@var{to-file} are given, and @command{diff} compares the contents of -@var{from-file} and @var{to-file}. A file name of @file{-} stands for -text read from the standard input. As a special case, @samp{diff - -} -compares a copy of standard input to itself. - -If one file is a directory and the other is not, @command{diff} compares -the file in the directory whose name is that of the non-directory. -The non-directory file must not be @file{-}. - -If two file names are given and both are directories, -@command{diff} compares corresponding files in both directories, in -alphabetical order; this comparison is not recursive unless the -@option{-r} or @option{--recursive} option is given. @command{diff} never -compares the actual contents of a directory as if it were a file. The -file that is fully specified may not be standard input, because standard -input is nameless and the notion of ``file with the same name'' does not -apply. - -If the @option{--from-file=@var{file}} option is given, the number of -file names is arbitrary, and @var{file} is compared to each named file. -Similarly, if the @option{--to-file=@var{file}} option is given, each -named file is compared to @var{file}. - -@command{diff} options begin with @samp{-}, so normally file names -may not begin with @samp{-}. However, @option{--} as an -argument by itself treats the remaining arguments as file names even if -they begin with @samp{-}. - -An exit status of 0 means no differences were found, 1 means some -differences were found, and 2 means trouble. - -@menu -* diff Options:: Summary of options to @command{diff}. -@end menu - -@node diff Options -@section Options to @command{diff} -@cindex @command{diff} options -@cindex options for @command{diff} - -Below is a summary of all of the options that @sc{gnu} @command{diff} accepts. -Most options have two equivalent names, one of which is a single letter -preceded by @samp{-}, and the other of which is a long name preceded by -@samp{--}. Multiple single letter options (unless they take an -argument) can be combined into a single command line word: @option{-ac} is -equivalent to @option{-a -c}. Long named options can be abbreviated to -any unique prefix of their name. Brackets ([ and ]) indicate that an -option takes an optional argument. - -@table @option -@item -a -@itemx --text -Treat all files as text and compare them line-by-line, even if they -do not seem to be text. @xref{Binary}. - -@item -b -@itemx --ignore-space-change -Ignore changes in amount of white space. @xref{White Space}. - -@item -B -@itemx --ignore-blank-lines -Ignore changes that just insert or delete blank lines. @xref{Blank -Lines}. - -@item --binary -Read and write data in binary mode. @xref{Binary}. - -@item -c -Use the context output format, showing three lines of context. -@xref{Context Format}. - -@item -C @var{lines} -@itemx --context@r{[}=@var{lines}@r{]} -Use the context output format, showing @var{lines} (an integer) lines of -context, or three if @var{lines} is not given. @xref{Context Format}. -For proper operation, @command{patch} typically needs at least two lines of -context. - -On older systems, @command{diff} supports an obsolete option -@option{-@var{lines}} that has effect when combined with @option{-c} -or @option{-p}. @sc{posix} 1003.1-2001 (@pxref{Standards -conformance}) does not allow this; use @option{-C @var{lines}} -instead. - -@item --changed-group-format=@var{format} -Use @var{format} to output a line group containing differing lines from -both files in if-then-else format. @xref{Line Group Formats}. - -@item -d -@itemx --minimal -Change the algorithm perhaps find a smaller set of changes. This makes -@command{diff} slower (sometimes much slower). @xref{diff Performance}. - -@item -D @var{name} -@itemx --ifdef=@var{name} -Make merged @samp{#ifdef} format output, conditional on the preprocessor -macro @var{name}. @xref{If-then-else}. - -@item -e -@itemx --ed -Make output that is a valid @command{ed} script. @xref{ed Scripts}. - -@item -E -@itemx --ignore-tab-expansion -Ignore changes due to tab expansion. -@xref{White Space}. - -@item -f -@itemx --forward-ed -Make output that looks vaguely like an @command{ed} script but has changes -in the order they appear in the file. @xref{Forward ed}. - -@item -F @var{regexp} -@itemx --show-function-line=@var{regexp} -In context and unified format, for each hunk of differences, show some -of the last preceding line that matches @var{regexp}. @xref{Specified -Headings}. - -@item --from-file=@var{file} -Compare @var{file} to each operand; @var{file} may be a directory. - -@item --help -Output a summary of usage and then exit. - -@item --horizon-lines=@var{lines} -Do not discard the last @var{lines} lines of the common prefix -and the first @var{lines} lines of the common suffix. -@xref{diff Performance}. - -@item -i -@itemx --ignore-case -Ignore changes in case; consider upper- and lower-case letters -equivalent. @xref{Case Folding}. - -@item -I @var{regexp} -@itemx --ignore-matching-lines=@var{regexp} -Ignore changes that just insert or delete lines that match @var{regexp}. -@xref{Specified Folding}. - -@item --ignore-file-name-case -Ignore case when comparing file names during recursive comparison. -@xref{Comparing Directories}. - -@item -l -@itemx --paginate -Pass the output through @command{pr} to paginate it. @xref{Pagination}. - -@item --label=@var{label} -Use @var{label} instead of the file name in the context format -(@pxref{Context Format}) and unified format (@pxref{Unified Format}) -headers. @xref{RCS}. - -@item --left-column -Print only the left column of two common lines in side by side format. -@xref{Side by Side Format}. - -@item --line-format=@var{format} -Use @var{format} to output all input lines in if-then-else format. -@xref{Line Formats}. - -@item -n -@itemx --rcs -Output @sc{rcs}-format diffs; like @option{-f} except that each command -specifies the number of lines affected. @xref{RCS}. - -@item -N -@itemx --new-file -In directory comparison, if a file is found in only one directory, -treat it as present but empty in the other directory. @xref{Comparing -Directories}. - -@item --new-group-format=@var{format} -Use @var{format} to output a group of lines taken from just the second -file in if-then-else format. @xref{Line Group Formats}. - -@item --new-line-format=@var{format} -Use @var{format} to output a line taken from just the second file in -if-then-else format. @xref{Line Formats}. - -@item --old-group-format=@var{format} -Use @var{format} to output a group of lines taken from just the first -file in if-then-else format. @xref{Line Group Formats}. - -@item --old-line-format=@var{format} -Use @var{format} to output a line taken from just the first file in -if-then-else format. @xref{Line Formats}. - -@item -p -@itemx --show-c-function -Show which C function each change is in. @xref{C Function Headings}. - -@item -q -@itemx --brief -Report only whether the files differ, not the details of the -differences. @xref{Brief}. - -@item -r -@itemx --recursive -When comparing directories, recursively compare any subdirectories -found. @xref{Comparing Directories}. - -@item -s -@itemx --report-identical-files -Report when two files are the same. @xref{Comparing Directories}. - -@item -S @var{file} -@itemx --starting-file=@var{file} -When comparing directories, start with the file @var{file}. This is -used for resuming an aborted comparison. @xref{Comparing Directories}. - -@item --speed-large-files -Use heuristics to speed handling of large files that have numerous -scattered small changes. @xref{diff Performance}. - -@item --strip-trailing-cr -Strip any trailing carriage return at the end of an input line. -@xref{Binary}. - -@item --suppress-common-lines -Do not print common lines in side by side format. -@xref{Side by Side Format}. - -@item -t -@itemx --expand-tabs -Expand tabs to spaces in the output, to preserve the alignment of tabs -in the input files. @xref{Tabs}. - -@item -T -@itemx --initial-tab -Output a tab rather than a space before the text of a line in normal or -context format. This causes the alignment of tabs in the line to look -normal. @xref{Tabs}. - -@item --to-file=@var{file} -Compare each operand to @var{file}; @var{file} may be a directory. - -@item -u -Use the unified output format, showing three lines of context. -@xref{Unified Format}. - -@item --unchanged-group-format=@var{format} -Use @var{format} to output a group of common lines taken from both files -in if-then-else format. @xref{Line Group Formats}. - -@item --unchanged-line-format=@var{format} -Use @var{format} to output a line common to both files in if-then-else -format. @xref{Line Formats}. - -@item --unidirectional-new-file -When comparing directories, if a file appears only in the second -directory of the two, treat it as present but empty in the other. -@xref{Comparing Directories}. - -@item -U @var{lines} -@itemx --unified@r{[}=@var{lines}@r{]} -Use the unified output format, showing @var{lines} (an integer) lines of -context, or three if @var{lines} is not given. @xref{Unified Format}. -For proper operation, @command{patch} typically needs at least two lines of -context. - -On older systems, @command{diff} supports an obsolete option -@option{-@var{lines}} that has effect when combined with @option{-u}. -@sc{posix} 1003.1-2001 (@pxref{Standards conformance}) does not allow -this; use @option{-U @var{lines}} instead. - -@item -v -@itemx --version -Output version information and then exit. - -@item -w -@itemx --ignore-all-space -Ignore white space when comparing lines. @xref{White Space}. - -@item -W @var{columns} -@itemx --width=@var{columns} -Output at most @var{columns} (default 130) print columns per line in -side by side format. @xref{Side by Side Format}. - -@item -x @var{pattern} -@itemx --exclude=@var{pattern} -When comparing directories, ignore files and subdirectories whose basenames -match @var{pattern}. @xref{Comparing Directories}. - -@item -X @var{file} -@itemx --exclude-from=@var{file} -When comparing directories, ignore files and subdirectories whose basenames -match any pattern contained in @var{file}. @xref{Comparing Directories}. - -@item -y -@itemx --side-by-side -Use the side by side output format. @xref{Side by Side Format}. -@end table - -@node Invoking diff3 -@chapter Invoking @command{diff3} -@cindex invoking @command{diff3} -@cindex @command{diff3} invocation - -The @command{diff3} command compares three files and outputs descriptions -of their differences. Its arguments are as follows: - -@example -diff3 @var{options}@dots{} @var{mine} @var{older} @var{yours} -@end example - -The files to compare are @var{mine}, @var{older}, and @var{yours}. -At most one of these three file names may be @file{-}, -which tells @command{diff3} to read the standard input for that file. - -An exit status of 0 means @command{diff3} was successful, 1 means some -conflicts were found, and 2 means trouble. - -@menu -* diff3 Options:: Summary of options to @command{diff3}. -@end menu - -@node diff3 Options -@section Options to @command{diff3} -@cindex @command{diff3} options -@cindex options for @command{diff3} - -Below is a summary of all of the options that @sc{gnu} @command{diff3} -accepts. Multiple single letter options (unless they take an argument) -can be combined into a single command line argument. - -@table @option -@item -a -@itemx --text -Treat all files as text and compare them line-by-line, even if they -do not appear to be text. @xref{Binary}. - -@item -A -@itemx --show-all -Incorporate all unmerged changes from @var{older} to @var{yours} into -@var{mine}, surrounding conflicts with bracket lines. -@xref{Marking Conflicts}. - -@item --diff-program=@var{program} -Use the compatible comparison program @var{program} to compare files -instead of @command{diff}. - -@item -e -@itemx --ed -Generate an @command{ed} script that incorporates all the changes from -@var{older} to @var{yours} into @var{mine}. @xref{Which Changes}. - -@item -E -@itemx --show-overlap -Like @option{-e}, except bracket lines from overlapping changes' first -and third files. -@xref{Marking Conflicts}. -With @option{-E}, an overlapping change looks like this: - -@example -<<<<<<< @var{mine} -@r{lines from @var{mine}} -======= -@r{lines from @var{yours}} ->>>>>>> @var{yours} -@end example - -@item --help -Output a summary of usage and then exit. - -@item -i -Generate @samp{w} and @samp{q} commands at the end of the @command{ed} -script for System V compatibility. This option must be combined with -one of the @option{-AeExX3} options, and may not be combined with @option{-m}. -@xref{Saving the Changed File}. - -@item -L @var{label} -@itemx --label=@var{label} -Use the label @var{label} for the brackets output by the @option{-A}, -@option{-E} and @option{-X} options. This option may be given up to three -times, one for each input file. The default labels are the names of -the input files. Thus @samp{diff3 -L X -L Y -L Z -m A B C} acts like -@samp{diff3 -m A B C}, except that the output looks like it came from -files named @samp{X}, @samp{Y} and @samp{Z} rather than from files -named @samp{A}, @samp{B} and @samp{C}. @xref{Marking Conflicts}. - -@item -m -@itemx --merge -Apply the edit script to the first file and send the result to standard -output. Unlike piping the output from @command{diff3} to @command{ed}, this -works even for binary files and incomplete lines. @option{-A} is assumed -if no edit script option is specified. @xref{Bypassing ed}. - -@item -T -@itemx --initial-tab -Output a tab rather than two spaces before the text of a line in normal format. -This causes the alignment of tabs in the line to look normal. @xref{Tabs}. - -@item -v -@itemx --version -Output version information and then exit. - -@item -x -@itemx --overlap-only -Like @option{-e}, except output only the overlapping changes. -@xref{Which Changes}. - -@item -X -Like @option{-E}, except output only the overlapping changes. -In other words, like @option{-x}, except bracket changes as in @option{-E}. -@xref{Marking Conflicts}. - -@item -3 -@itemx --easy-only -Like @option{-e}, except output only the nonoverlapping changes. -@xref{Which Changes}. -@end table - -@node Invoking patch -@chapter Invoking @command{patch} -@cindex invoking @command{patch} -@cindex @command{patch} invocation - -Normally @command{patch} is invoked like this: - -@example -patch <@var{patchfile} -@end example - -The full format for invoking @command{patch} is: - -@example -patch @var{options}@dots{} @r{[}@var{origfile} @r{[}@var{patchfile}@r{]}@r{]} -@end example - -You can also specify where to read the patch from with the @option{-i -@var{patchfile}} or @option{--input=@var{patchfile}} option. -If you do not specify @var{patchfile}, or if @var{patchfile} is -@file{-}, @command{patch} reads the patch (that is, the @command{diff} output) -from the standard input. - -If you do not specify an input file on the command line, @command{patch} -tries to intuit from the @dfn{leading text} (any text in the patch -that comes before the @command{diff} output) which file to edit. -@xref{Multiple Patches}. - -By default, @command{patch} replaces the original input file with the -patched version, possibly after renaming the original file into a -backup file (@pxref{Backup Names}, for a description of how -@command{patch} names backup files). You can also specify where to -put the output with the @option{-o @var{file}} or -@option{--output=@var{file}} option; however, do not use this option -if @var{file} is one of the input files. - -@menu -* patch Options:: Summary table of options to @command{patch}. -@end menu - -@node patch Options -@section Options to @command{patch} -@cindex @command{patch} options -@cindex options for @command{patch} - -Here is a summary of all of the options that @sc{gnu} @command{patch} -accepts. @xref{patch and Tradition}, for which of these options are -safe to use in older versions of @command{patch}. - -Multiple single-letter options that do not take an argument can be -combined into a single command line argument with only one dash. - -@table @option -@item -b -@itemx --backup -Back up the original contents of each file, even if backups would -normally not be made. @xref{Backups}. - -@item -B @var{prefix} -@itemx --prefix=@var{prefix} -Prepend @var{prefix} to backup file names. @xref{Backup Names}. - -@item --backup-if-mismatch -Back up the original contents of each file if the patch does not -exactly match the file. This is the default behavior when not -conforming to @sc{posix}. @xref{Backups}. - -@item --binary -Read and write all files in binary mode, except for standard output -and @file{/dev/tty}. This option has no effect on -@sc{posix}-conforming systems like @sc{gnu}/Linux. On systems where -this option makes a difference, the patch should be generated by -@samp{diff -a --binary}. @xref{Binary}. - -@item -c -@itemx --context -Interpret the patch file as a context diff. @xref{patch Input}. - -@item -d @var{directory} -@itemx --directory=@var{directory} -Make directory @var{directory} the current directory for interpreting -both file names in the patch file, and file names given as arguments to -other options. @xref{patch Directories}. - -@item -D @var{name} -@itemx --ifdef=@var{name} -Make merged if-then-else output using @var{name}. @xref{If-then-else}. - -@item --dry-run -Print the results of applying the patches without actually changing -any files. @xref{Dry Runs}. - -@item -e -@itemx --ed -Interpret the patch file as an @command{ed} script. @xref{patch Input}. - -@item -E -@itemx --remove-empty-files -Remove output files that are empty after the patches have been applied. -@xref{Creating and Removing}. - -@item -f -@itemx --force -Assume that the user knows exactly what he or she is doing, and do not -ask any questions. @xref{patch Messages}. - -@item -F @var{lines} -@itemx --fuzz=@var{lines} -Set the maximum fuzz factor to @var{lines}. @xref{Inexact}. - -@item -g @var{num} -@itemx --get=@var{num} -If @var{num} is positive, get input files from a revision control -system as necessary; if zero, do not get the files; if negative, ask -the user whether to get the files. @xref{Revision Control}. - -@item --help -Output a summary of usage and then exit. - -@item -i @var{patchfile} -@itemx --input=@var{patchfile} -Read the patch from @var{patchfile} rather than from standard input. -@xref{patch Options}. - -@item -l -@itemx --ignore-white-space -Let any sequence of blanks (spaces or tabs) in the patch file match -any sequence of blanks in the input file. @xref{Changed White Space}. - -@item -n -@itemx --normal -Interpret the patch file as a normal diff. @xref{patch Input}. - -@item -N -@itemx --forward -Ignore patches that @command{patch} thinks are reversed or already applied. -See also @option{-R}. @xref{Reversed Patches}. - -@item --no-backup-if-mismatch -Do not back up the original contents of files. This is the default -behavior when conforming to @sc{posix}. @xref{Backups}. - -@item -o @var{file} -@itemx --output=@var{file} -Use @var{file} as the output file name. @xref{patch Options}. - -@item -p@var{number} -@itemx --strip=@var{number} -Set the file name strip count to @var{number}. @xref{patch Directories}. - -@item --posix -Conform to @sc{posix}, as if the @env{POSIXLY_CORRECT} environment -variable had been set. @xref{patch and POSIX}. - -@item --quoting-style=@var{word} -Use style @var{word} to quote names in diagnostics, as if the -@env{QUOTING_STYLE} environment variable had been set to @var{word}. -@xref{patch Quoting Style}. - -@item -r @var{reject-file} -@itemx --reject-file=@var{reject-file} -Use @var{reject-file} as the reject file name. @xref{Reject Names}. - -@item -R -@itemx --reverse -Assume that this patch was created with the old and new files swapped. -@xref{Reversed Patches}. - -@item -s -@itemx --quiet -@itemx --silent -Work silently unless an error occurs. @xref{patch Messages}. - -@item -t -@itemx --batch -Do not ask any questions. @xref{patch Messages}. - -@item -T -@itemx --set-time -Set the modification and access times of patched files from time -stamps given in context diff headers, assuming that the context diff -headers use local time. @xref{Patching Time Stamps}. - -@item -u -@itemx --unified -Interpret the patch file as a unified diff. @xref{patch Input}. - -@item -v -@itemx --version -Output version information and then exit. - -@item -V @var{backup-style} -@itemx --version=control=@var{backup-style} -Select the naming convention for backup file names. @xref{Backup Names}. - -@item --verbose -Print more diagnostics than usual. @xref{patch Messages}. - -@item -x @var{number} -@itemx --debug=@var{number} -Set internal debugging flags. Of interest only to @command{patch} -patchers. - -@item -Y @var{prefix} -@itemx --basename-prefix=@var{prefix} -Prepend @var{prefix} to base names of backup files. @xref{Backup Names}. - -@item -z @var{suffix} -@itemx --suffix=@var{suffix} -Use @var{suffix} as the backup extension instead of @samp{.orig} or -@samp{~}. @xref{Backup Names}. - -@item -Z -@itemx --set-utc -Set the modification and access times of patched files from time -stamps given in context diff headers, assuming that the context diff -headers use @sc{utc}. @xref{Patching Time Stamps}. - -@end table - -@node Invoking sdiff -@chapter Invoking @command{sdiff} -@cindex invoking @command{sdiff} -@cindex @command{sdiff} invocation - -The @command{sdiff} command merges two files and interactively outputs the -results. Its arguments are as follows: - -@example -sdiff -o @var{outfile} @var{options}@dots{} @var{from-file} @var{to-file} -@end example - -This merges @var{from-file} with @var{to-file}, with output to @var{outfile}. -If @var{from-file} is a directory and @var{to-file} is not, @command{sdiff} -compares the file in @var{from-file} whose file name is that of @var{to-file}, -and vice versa. @var{from-file} and @var{to-file} may not both be -directories. - -@command{sdiff} options begin with @samp{-}, so normally @var{from-file} -and @var{to-file} may not begin with @samp{-}. However, @option{--} as an -argument by itself treats the remaining arguments as file names even if -they begin with @samp{-}. You may not use @file{-} as an input file. - -@command{sdiff} without @option{-o} (or @option{--output}) produces a -side-by-side difference. This usage is obsolete; use the @option{-y} -or @option{--side-by-side} option of @command{diff} instead. - -An exit status of 0 means no differences were found, 1 means some -differences were found, and 2 means trouble. - -@menu -* sdiff Options:: Summary of options to @command{diff}. -@end menu - -@node sdiff Options -@section Options to @command{sdiff} -@cindex @command{sdiff} options -@cindex options for @command{sdiff} - -Below is a summary of all of the options that @sc{gnu} @command{sdiff} accepts. -Each option has two equivalent names, one of which is a single -letter preceded by @samp{-}, and the other of which is a long name -preceded by @samp{--}. Multiple single letter options (unless they take -an argument) can be combined into a single command line argument. Long -named options can be abbreviated to any unique prefix of their name. - -@table @option -@item -a -@itemx --text -Treat all files as text and compare them line-by-line, even if they -do not appear to be text. @xref{Binary}. - -@item -b -@itemx --ignore-space-change -Ignore changes in amount of white space. @xref{White Space}. - -@item -B -@itemx --ignore-blank-lines -Ignore changes that just insert or delete blank lines. @xref{Blank -Lines}. - -@item -d -@itemx --minimal -Change the algorithm to perhaps find a smaller set of changes. This -makes @command{sdiff} slower (sometimes much slower). @xref{diff -Performance}. - -@item --diff-program=@var{program} -Use the compatible comparison program @var{program} to compare files -instead of @command{diff}. - -@item -E -@itemx --ignore-tab-expansion -Ignore changes due to tab expansion. -@xref{White Space}. - -@item --help -Output a summary of usage and then exit. - -@item -i -@itemx --ignore-case -Ignore changes in case; consider upper- and lower-case to be the same. -@xref{Case Folding}. - -@item -I @var{regexp} -@itemx --ignore-matching-lines=@var{regexp} -Ignore changes that just insert or delete lines that match @var{regexp}. -@xref{Specified Folding}. - -@item -l -@itemx --left-column -Print only the left column of two common lines. -@xref{Side by Side Format}. - -@item -o @var{file} -@itemx --output=@var{file} -Put merged output into @var{file}. This option is required for merging. - -@item -s -@itemx --suppress-common-lines -Do not print common lines. @xref{Side by Side Format}. - -@item --speed-large-files -Use heuristics to speed handling of large files that have numerous -scattered small changes. @xref{diff Performance}. - -@item --strip-trailing-cr -Strip any trailing carriage return at the end of an input line. -@xref{Binary}. - -@item -t -@itemx --expand-tabs -Expand tabs to spaces in the output, to preserve the alignment of tabs -in the input files. @xref{Tabs}. - -@item -v -@itemx --version -Output version information and then exit. - -@item -w @var{columns} -@itemx --width=@var{columns} -Output at most @var{columns} (default 130) print columns per line. -@xref{Side by Side Format}. Note that for historical reasons, this -option is @option{-W} in @command{diff}, @option{-w} in @command{sdiff}. - -@item -W -@itemx --ignore-all-space -Ignore white space when comparing lines. @xref{White Space}. -Note that for historical reasons, this option is @option{-w} in @command{diff}, -@option{-W} in @command{sdiff}. -@end table - -@node Standards conformance -@chapter Standards conformance -@cindex @sc{posix} - -@vindex POSIXLY_CORRECT -In a few cases, the @sc{gnu} utilities' default behavior is -incompatible with the @sc{posix} standard. To suppress these -incompatibilities, define the @env{POSIXLY_CORRECT} environment -variable. Unless you are checking for @sc{posix} conformance, you -probably do not need to define @env{POSIXLY_CORRECT}. - -Normally options and operands can appear in any order, and programs act -as if all the options appear before any operands. For example, -@samp{diff lao tzu -C 2} acts like @samp{diff -C 2 lao tzu}, since -@samp{2} is an option-argument of @option{-C}. However, if the -@env{POSIXLY_CORRECT} environment variable is set, options must appear -before operands, unless otherwise specified for a particular command. - -Newer versions of @sc{posix} are occasionally incompatible with older -versions. For example, older versions of @sc{posix} allowed the -command @samp{diff -c -10} to have the same meaning as @samp{diff -C -10}, but @sc{posix} 1003.1-2001 @samp{diff} no longer allows -digit-string options like @option{-10}. - -@vindex _POSIX2_VERSION -The @sc{gnu} utilities normally conform to the version of @sc{posix} -that is standard for your system. To cause them to conform to a -different version of @sc{posix}, define the @env{_POSIX2_VERSION} -environment variable to a value of the form @var{yyyymm} specifying -the year and month the standard was adopted. Two values are currently -supported for @env{_POSIX2_VERSION}: @samp{199209} stands for -@sc{posix} 1003.2-1992, and @samp{200112} stands for @sc{posix} -1003.1-2001. For example, if you are running older software that -assumes an older version of @sc{posix} and uses @samp{diff -c -10}, -you can work around the compatibility problems by setting -@samp{_POSIX2_VERSION=199209} in your environment. - -@node Projects -@chapter Future Projects - -Here are some ideas for improving @sc{gnu} @command{diff} and -@command{patch}. The @sc{gnu} project has identified some -improvements as potential programming projects for volunteers. You -can also help by reporting any bugs that you find. - -If you are a programmer and would like to contribute something to the -@sc{gnu} project, please consider volunteering for one of these -projects. If you are seriously contemplating work, please write to -@email{gnu@@gnu.org} to coordinate with other volunteers. - -@menu -* Shortcomings:: Suggested projects for improvements. -* Bugs:: Reporting bugs. -@end menu - -@node Shortcomings -@section Suggested Projects for Improving @sc{gnu} @command{diff} and @command{patch} -@cindex projects for directories - -One should be able to use @sc{gnu} @command{diff} to generate a patch from any -pair of directory trees, and given the patch and a copy of one such -tree, use @command{patch} to generate a faithful copy of the other. -Unfortunately, some changes to directory trees cannot be expressed using -current patch formats; also, @command{patch} does not handle some of the -existing formats. These shortcomings motivate the following suggested -projects. - -@menu -* Internationalization:: Handling multibyte and varying-width characters. -* Changing Structure:: Handling changes to the directory structure. -* Special Files:: Handling symbolic links, device special files, etc. -* Unusual File Names:: Handling file names that contain unusual characters. -* Time Stamp Order:: Outputting diffs in time stamp order. -* Ignoring Changes:: Ignoring certain changes while showing others. -* Speedups:: Improving performance. -@end menu - -@node Internationalization -@subsection Handling Multibyte and Varying-Width Characters -@cindex multibyte characters -@cindex varying-width characters - -@command{diff}, @command{diff3} and @command{sdiff} treat each line of -input as a string of unibyte characters. This can mishandle multibyte -characters in some cases. For example, when asked to ignore spaces, -@command{diff} does not properly ignore a multibyte space character. - -Also, @command{diff} currently assumes that each byte is one column -wide, and this assumption is incorrect in some locales, e.g., locales -that use UTF-8 encoding. This causes problems with the @option{-y} or -@option{--side-by-side} option of @command{diff}. - -These problems need to be fixed without unduly affecting the -performance of the utilities in unibyte environments. - -The IBM GNU/Linux Technology Center Internationalization Team has -proposed some patches to support internationalized @command{diff} -@uref{http://oss.software.ibm.com/developer/opensource/linux/patches/i18n/diffutils-2.7.2-i18n-0.1.patch.gz}. -Unfortunately, these patches are incomplete and are to an older -version of @command{diff}, so more work needs to be done in this area. - -@node Changing Structure -@subsection Handling Changes to the Directory Structure -@cindex directory structure changes - -@command{diff} and @command{patch} do not handle some changes to directory -structure. For example, suppose one directory tree contains a directory -named @samp{D} with some subsidiary files, and another contains a file -with the same name @samp{D}. @samp{diff -r} does not output enough -information for @command{patch} to transform the directory subtree into -the file. - -There should be a way to specify that a file has been removed without -having to include its entire contents in the patch file. There should -also be a way to tell @command{patch} that a file was renamed, even if -there is no way for @command{diff} to generate such information. -There should be a way to tell @command{patch} that a file's time stamp -has changed, even if its contents have not changed. - -These problems can be fixed by extending the @command{diff} output format -to represent changes in directory structure, and extending @command{patch} -to understand these extensions. - -@node Special Files -@subsection Files that are Neither Directories Nor Regular Files -@cindex special files - -Some files are neither directories nor regular files: they are unusual -files like symbolic links, device special files, named pipes, and -sockets. Currently, @command{diff} treats symbolic links like regular files; -it treats other special files like regular files if they are specified -at the top level, but simply reports their presence when comparing -directories. This means that @command{patch} cannot represent changes -to such files. For example, if you change which file a symbolic link -points to, @command{diff} outputs the difference between the two files, -instead of the change to the symbolic link. - -@c This might not be a good idea; is it wise for root to install devices -@c this way? -@command{diff} should optionally report changes to special files specially, -and @command{patch} should be extended to understand these extensions. - -@node Unusual File Names -@subsection File Names that Contain Unusual Characters -@cindex file names with unusual characters - -When a file name contains an unusual character like a newline or -white space, @samp{diff -r} generates a patch that @command{patch} cannot -parse. The problem is with format of @command{diff} output, not just with -@command{patch}, because with odd enough file names one can cause -@command{diff} to generate a patch that is syntactically correct but -patches the wrong files. The format of @command{diff} output should be -extended to handle all possible file names. - -@node Time Stamp Order -@subsection Outputting Diffs in Time Stamp Order - -Applying @command{patch} to a multiple-file diff can result in files -whose time stamps are out of order. @sc{gnu} @command{patch} has -options to restore the time stamps of the updated files -(@pxref{Patching Time Stamps}), but sometimes it is useful to generate -a patch that works even if the recipient does not have @sc{gnu} patch, -or does not use these options. One way to do this would be to -implement a @command{diff} option to output diffs in time stamp order. - -@node Ignoring Changes -@subsection Ignoring Certain Changes - -It would be nice to have a feature for specifying two strings, one in -@var{from-file} and one in @var{to-file}, which should be considered to -match. Thus, if the two strings are @samp{foo} and @samp{bar}, then if -two lines differ only in that @samp{foo} in file 1 corresponds to -@samp{bar} in file 2, the lines are treated as identical. - -It is not clear how general this feature can or should be, or -what syntax should be used for it. - -A partial substitute is to filter one or both files before comparing, -e.g.: - -@example -sed 's/foo/bar/g' file1 | diff - file2 -@end example - -However, this outputs the filtered text, not the original. - -@node Speedups -@subsection Improving Performance - -When comparing two large directory structures, one of which was -originally copied from the other with time stamps preserved (e.g., -with @samp{cp -pR}), it would greatly improve performance if an option -told @command{diff} to assume that two files with the same size and -time stamps have the same content. @xref{diff Performance}. - -@node Bugs -@section Reporting Bugs -@cindex bug reports -@cindex reporting bugs - -If you think you have found a bug in @sc{gnu} @command{cmp}, -@command{diff}, @command{diff3}, or @command{sdiff}, please report it -by electronic mail to the -@uref{http://mail.gnu.org/mailman/listinfo/bug-gnu-utils,GNU utilities -bug report mailing list} @email{bug-gnu-utils@@gnu.org}. Please send -bug reports for @sc{gnu} @command{patch} to -@email{bug-patch@@gnu.org}. Send as precise a description of the -problem as you can, including the output of the @option{--version} -option and sample input files that produce the bug, if applicable. If -you have a nontrivial fix for the bug, please send it as well. If you -have a patch, please send it too. It may simplify the maintainer's -job if the patch is relative to a recent test release, which you can -find in the directory @uref{ftp://alpha.gnu.org/gnu/diffutils/}. - -@node Copying This Manual -@appendix Copying This Manual - -@menu -* GNU Free Documentation License:: License for copying this manual. -@end menu - -@include fdl.texi - -@node Index -@appendix Index - -@printindex cp - -@bye diff --git a/src/bin/diffutils/doc/fdl.texi b/src/bin/diffutils/doc/fdl.texi deleted file mode 100644 index 361f90f7bb..0000000000 --- a/src/bin/diffutils/doc/fdl.texi +++ /dev/null @@ -1,403 +0,0 @@ - -@node GNU Free Documentation License -@appendixsec GNU Free Documentation License - -@cindex FDL, GNU Free Documentation License -@center Version 1.1, March 2000 - -@display -Copyright @copyright{} 2000 Free Software Foundation, Inc. -59 Temple Place, Suite 330, Boston, MA 02111-1307, USA - -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. -@end display - -@enumerate 0 -@item -PREAMBLE - -The purpose of this License is to make a manual, textbook, or other -written document @dfn{free} in the sense of freedom: to assure everyone -the effective freedom to copy and redistribute it, with or without -modifying it, either commercially or noncommercially. Secondarily, -this License preserves for the author and publisher a way to get -credit for their work, while not being considered responsible for -modifications made by others. - -This License is a kind of ``copyleft'', which means that derivative -works of the document must themselves be free in the same sense. It -complements the GNU General Public License, which is a copyleft -license designed for free software. - -We have designed this License in order to use it for manuals for free -software, because free software needs free documentation: a free -program should come with manuals providing the same freedoms that the -software does. But this License is not limited to software manuals; -it can be used for any textual work, regardless of subject matter or -whether it is published as a printed book. We recommend this License -principally for works whose purpose is instruction or reference. - -@item -APPLICABILITY AND DEFINITIONS - -This License applies to any manual or other work that contains a -notice placed by the copyright holder saying it can be distributed -under the terms of this License. The ``Document'', below, refers to any -such manual or work. Any member of the public is a licensee, and is -addressed as ``you''. - -A ``Modified Version'' of the Document means any work containing the -Document or a portion of it, either copied verbatim, or with -modifications and/or translated into another language. - -A ``Secondary Section'' is a named appendix or a front-matter section of -the Document that deals exclusively with the relationship of the -publishers or authors of the Document to the Document's overall subject -(or to related matters) and contains nothing that could fall directly -within that overall subject. (For example, if the Document is in part a -textbook of mathematics, a Secondary Section may not explain any -mathematics.) The relationship could be a matter of historical -connection with the subject or with related matters, or of legal, -commercial, philosophical, ethical or political position regarding -them. - -The ``Invariant Sections'' are certain Secondary Sections whose titles -are designated, as being those of Invariant Sections, in the notice -that says that the Document is released under this License. - -The ``Cover Texts'' are certain short passages of text that are listed, -as Front-Cover Texts or Back-Cover Texts, in the notice that says that -the Document is released under this License. - -A ``Transparent'' copy of the Document means a machine-readable copy, -represented in a format whose specification is available to the -general public, whose contents can be viewed and edited directly and -straightforwardly with generic text editors or (for images composed of -pixels) generic paint programs or (for drawings) some widely available -drawing editor, and that is suitable for input to text formatters or -for automatic translation to a variety of formats suitable for input -to text formatters. A copy made in an otherwise Transparent file -format whose markup has been designed to thwart or discourage -subsequent modification by readers is not Transparent. A copy that is -not ``Transparent'' is called ``Opaque''. - -Examples of suitable formats for Transparent copies include plain -@sc{ascii} without markup, Texinfo input format, La@TeX{} input format, -@acronym{SGML} or @acronym{XML} using a publicly available -@acronym{DTD}, and standard-conforming simple @acronym{HTML} designed -for human modification. Opaque formats include PostScript, -@acronym{PDF}, proprietary formats that can be read and edited only by -proprietary word processors, @acronym{SGML} or @acronym{XML} for which -the @acronym{DTD} and/or processing tools are not generally available, -and the machine-generated @acronym{HTML} produced by some word -processors for output purposes only. - -The ``Title Page'' means, for a printed book, the title page itself, -plus such following pages as are needed to hold, legibly, the material -this License requires to appear in the title page. For works in -formats which do not have any title page as such, ``Title Page'' means -the text near the most prominent appearance of the work's title, -preceding the beginning of the body of the text. - -@item -VERBATIM COPYING - -You may copy and distribute the Document in any medium, either -commercially or noncommercially, provided that this License, the -copyright notices, and the license notice saying this License applies -to the Document are reproduced in all copies, and that you add no other -conditions whatsoever to those of this License. You may not use -technical measures to obstruct or control the reading or further -copying of the copies you make or distribute. However, you may accept -compensation in exchange for copies. If you distribute a large enough -number of copies you must also follow the conditions in section 3. - -You may also lend copies, under the same conditions stated above, and -you may publicly display copies. - -@item -COPYING IN QUANTITY - -If you publish printed copies of the Document numbering more than 100, -and the Document's license notice requires Cover Texts, you must enclose -the copies in covers that carry, clearly and legibly, all these Cover -Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on -the back cover. Both covers must also clearly and legibly identify -you as the publisher of these copies. The front cover must present -the full title with all words of the title equally prominent and -visible. You may add other material on the covers in addition. -Copying with changes limited to the covers, as long as they preserve -the title of the Document and satisfy these conditions, can be treated -as verbatim copying in other respects. - -If the required texts for either cover are too voluminous to fit -legibly, you should put the first ones listed (as many as fit -reasonably) on the actual cover, and continue the rest onto adjacent -pages. - -If you publish or distribute Opaque copies of the Document numbering -more than 100, you must either include a machine-readable Transparent -copy along with each Opaque copy, or state in or with each Opaque copy -a publicly-accessible computer-network location containing a complete -Transparent copy of the Document, free of added material, which the -general network-using public has access to download anonymously at no -charge using public-standard network protocols. If you use the latter -option, you must take reasonably prudent steps, when you begin -distribution of Opaque copies in quantity, to ensure that this -Transparent copy will remain thus accessible at the stated location -until at least one year after the last time you distribute an Opaque -copy (directly or through your agents or retailers) of that edition to -the public. - -It is requested, but not required, that you contact the authors of the -Document well before redistributing any large number of copies, to give -them a chance to provide you with an updated version of the Document. - -@item -MODIFICATIONS - -You may copy and distribute a Modified Version of the Document under -the conditions of sections 2 and 3 above, provided that you release -the Modified Version under precisely this License, with the Modified -Version filling the role of the Document, thus licensing distribution -and modification of the Modified Version to whoever possesses a copy -of it. In addition, you must do these things in the Modified Version: - -@enumerate A -@item -Use in the Title Page (and on the covers, if any) a title distinct -from that of the Document, and from those of previous versions -(which should, if there were any, be listed in the History section -of the Document). You may use the same title as a previous version -if the original publisher of that version gives permission. - -@item -List on the Title Page, as authors, one or more persons or entities -responsible for authorship of the modifications in the Modified -Version, together with at least five of the principal authors of the -Document (all of its principal authors, if it has less than five). - -@item -State on the Title page the name of the publisher of the -Modified Version, as the publisher. - -@item -Preserve all the copyright notices of the Document. - -@item -Add an appropriate copyright notice for your modifications -adjacent to the other copyright notices. - -@item -Include, immediately after the copyright notices, a license notice -giving the public permission to use the Modified Version under the -terms of this License, in the form shown in the Addendum below. - -@item -Preserve in that license notice the full lists of Invariant Sections -and required Cover Texts given in the Document's license notice. - -@item -Include an unaltered copy of this License. - -@item -Preserve the section entitled ``History'', and its title, and add to -it an item stating at least the title, year, new authors, and -publisher of the Modified Version as given on the Title Page. If -there is no section entitled ``History'' in the Document, create one -stating the title, year, authors, and publisher of the Document as -given on its Title Page, then add an item describing the Modified -Version as stated in the previous sentence. - -@item -Preserve the network location, if any, given in the Document for -public access to a Transparent copy of the Document, and likewise -the network locations given in the Document for previous versions -it was based on. These may be placed in the ``History'' section. -You may omit a network location for a work that was published at -least four years before the Document itself, or if the original -publisher of the version it refers to gives permission. - -@item -In any section entitled ``Acknowledgments'' or ``Dedications'', -preserve the section's title, and preserve in the section all the -substance and tone of each of the contributor acknowledgments -and/or dedications given therein. - -@item -Preserve all the Invariant Sections of the Document, -unaltered in their text and in their titles. Section numbers -or the equivalent are not considered part of the section titles. - -@item -Delete any section entitled ``Endorsements''. Such a section -may not be included in the Modified Version. - -@item -Do not retitle any existing section as ``Endorsements'' -or to conflict in title with any Invariant Section. -@end enumerate - -If the Modified Version includes new front-matter sections or -appendices that qualify as Secondary Sections and contain no material -copied from the Document, you may at your option designate some or all -of these sections as invariant. To do this, add their titles to the -list of Invariant Sections in the Modified Version's license notice. -These titles must be distinct from any other section titles. - -You may add a section entitled ``Endorsements'', provided it contains -nothing but endorsements of your Modified Version by various -parties---for example, statements of peer review or that the text has -been approved by an organization as the authoritative definition of a -standard. - -You may add a passage of up to five words as a Front-Cover Text, and a -passage of up to 25 words as a Back-Cover Text, to the end of the list -of Cover Texts in the Modified Version. Only one passage of -Front-Cover Text and one of Back-Cover Text may be added by (or -through arrangements made by) any one entity. If the Document already -includes a cover text for the same cover, previously added by you or -by arrangement made by the same entity you are acting on behalf of, -you may not add another; but you may replace the old one, on explicit -permission from the previous publisher that added the old one. - -The author(s) and publisher(s) of the Document do not by this License -give permission to use their names for publicity for or to assert or -imply endorsement of any Modified Version. - -@item -COMBINING DOCUMENTS - -You may combine the Document with other documents released under this -License, under the terms defined in section 4 above for modified -versions, provided that you include in the combination all of the -Invariant Sections of all of the original documents, unmodified, and -list them all as Invariant Sections of your combined work in its -license notice. - -The combined work need only contain one copy of this License, and -multiple identical Invariant Sections may be replaced with a single -copy. If there are multiple Invariant Sections with the same name but -different contents, make the title of each such section unique by -adding at the end of it, in parentheses, the name of the original -author or publisher of that section if known, or else a unique number. -Make the same adjustment to the section titles in the list of -Invariant Sections in the license notice of the combined work. - -In the combination, you must combine any sections entitled ``History'' -in the various original documents, forming one section entitled -``History''; likewise combine any sections entitled ``Acknowledgments'', -and any sections entitled ``Dedications''. You must delete all sections -entitled ``Endorsements.'' - -@item -COLLECTIONS OF DOCUMENTS - -You may make a collection consisting of the Document and other documents -released under this License, and replace the individual copies of this -License in the various documents with a single copy that is included in -the collection, provided that you follow the rules of this License for -verbatim copying of each of the documents in all other respects. - -You may extract a single document from such a collection, and distribute -it individually under this License, provided you insert a copy of this -License into the extracted document, and follow this License in all -other respects regarding verbatim copying of that document. - -@item -AGGREGATION WITH INDEPENDENT WORKS - -A compilation of the Document or its derivatives with other separate -and independent documents or works, in or on a volume of a storage or -distribution medium, does not as a whole count as a Modified Version -of the Document, provided no compilation copyright is claimed for the -compilation. Such a compilation is called an ``aggregate'', and this -License does not apply to the other self-contained works thus compiled -with the Document, on account of their being thus compiled, if they -are not themselves derivative works of the Document. - -If the Cover Text requirement of section 3 is applicable to these -copies of the Document, then if the Document is less than one quarter -of the entire aggregate, the Document's Cover Texts may be placed on -covers that surround only the Document within the aggregate. -Otherwise they must appear on covers around the whole aggregate. - -@item -TRANSLATION - -Translation is considered a kind of modification, so you may -distribute translations of the Document under the terms of section 4. -Replacing Invariant Sections with translations requires special -permission from their copyright holders, but you may include -translations of some or all Invariant Sections in addition to the -original versions of these Invariant Sections. You may include a -translation of this License provided that you also include the -original English version of this License. In case of a disagreement -between the translation and the original English version of this -License, the original English version will prevail. - -@item -TERMINATION - -You may not copy, modify, sublicense, or distribute the Document except -as expressly provided for under this License. Any other attempt to -copy, modify, sublicense or distribute the Document is void, and will -automatically terminate your rights under this License. However, -parties who have received copies, or rights, from you under this -License will not have their licenses terminated so long as such -parties remain in full compliance. - -@item -FUTURE REVISIONS OF THIS LICENSE - -The Free Software Foundation may publish new, revised versions -of the GNU Free Documentation License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. See -@uref{http://www.gnu.org/copyleft/}. - -Each version of the License is given a distinguishing version number. -If the Document specifies that a particular numbered version of this -License ``or any later version'' applies to it, you have the option of -following the terms and conditions either of that specified version or -of any later version that has been published (not as a draft) by the -Free Software Foundation. If the Document does not specify a version -number of this License, you may choose any version ever published (not -as a draft) by the Free Software Foundation. -@end enumerate - -@page -@appendixsubsec ADDENDUM: How to use this License for your documents - -To use this License in a document you have written, include a copy of -the License in the document and put the following copyright and -license notices just after the title page: - -@smallexample -@group - Copyright (C) @var{year} @var{your name}. - Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.1 - or any later version published by the Free Software Foundation; - with the Invariant Sections being @var{list their titles}, with the - Front-Cover Texts being @var{list}, and with the Back-Cover Texts being @var{list}. - A copy of the license is included in the section entitled ``GNU - Free Documentation License''. -@end group -@end smallexample - -If you have no Invariant Sections, write ``with no Invariant Sections'' -instead of saying which ones are invariant. If you have no -Front-Cover Texts, write ``no Front-Cover Texts'' instead of -``Front-Cover Texts being @var{list}''; likewise for Back-Cover Texts. - -If your document contains nontrivial examples of program code, we -recommend releasing these examples in parallel under your choice of -free software license, such as the GNU General Public License, -to permit their use in free software. - -@c Local Variables: -@c ispell-local-pdict: "ispell-dict" -@c End: - diff --git a/src/bin/diffutils/doc/stamp-vti b/src/bin/diffutils/doc/stamp-vti deleted file mode 100644 index 5e7a10cf72..0000000000 --- a/src/bin/diffutils/doc/stamp-vti +++ /dev/null @@ -1,4 +0,0 @@ -@set UPDATED 5 April 2002 -@set UPDATED-MONTH April 2002 -@set EDITION 2.8.1 -@set VERSION 2.8.1 diff --git a/src/bin/diffutils/doc/version.texi b/src/bin/diffutils/doc/version.texi deleted file mode 100644 index 5e7a10cf72..0000000000 --- a/src/bin/diffutils/doc/version.texi +++ /dev/null @@ -1,4 +0,0 @@ -@set UPDATED 5 April 2002 -@set UPDATED-MONTH April 2002 -@set EDITION 2.8.1 -@set VERSION 2.8.1 diff --git a/src/bin/diffutils/exgettext b/src/bin/diffutils/exgettext deleted file mode 100755 index c2a83466fe..0000000000 --- a/src/bin/diffutils/exgettext +++ /dev/null @@ -1,123 +0,0 @@ -#! /bin/sh -# Wrapper around gettext for programs using the msgid convention. - -# Copyright (C) 1998, 2001 Free Software Foundation, Inc. - -# Written by Paul Eggert . - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with GNU CC; see the file COPYING. If not, write to -# the Free Software Foundation, 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. - -# Always operate in the C locale. -LANG=C -LANGUAGE=C -LC_ALL=C -export LANG LANGUAGE LC_ALL - -# Set AWK if environment has not already set it. -AWK=${AWK-awk} - -# The argument to this wrapper is the xgettext command to be executed. -# Extract the xgettext program name from the rest of the command. -xgettext=${1?} -shift - -# Save work if we're just wrapping a no-op. -case $xgettext in -:) exit;; -esac - -# Find the files to be scanned, and the directory to scan them from. -directory=. -files= -for i -do - case $i in - --directory=*) - directory=`expr " $i" : ' --directory=\(.*\)'`;; - --files-from=*) - files_from=`expr " $i" : ' --files-from=\(.*\)'` - files=`$AWK '/^[^#]/ { print }' $files_from`;; - esac -done - -# Generate keyword options for xgettext, -# by scanning for declarations of functions -# whose parameter names end in "msgid". -generate_keyword_options=' - /^[A-Z_a-z].*\(.*msgid[,)]/ { - - paren_index = index($0, "(") - - name = substr($0, 1, paren_index - 1) - sub(/[^0-9A-Z_a-z]*$/, "", name) - sub(/[ ]+PARAMS/, "", name) - sub(/[ ]+VPARAMS/, "", name) - sub(/.*[^0-9A-Z_a-z]/, "", name) - - args = substr($0, paren_index) - sub(/msgid[,)].*/, "", args) - for (n = 1; sub(/^[^,]*,/, "", args); n++) { - continue; - } - - if (n == 1) { - keyword = name - } else { - keyword = name ":" n - } - - if (! keyword_seen[keyword]++) { - print "--keyword=" keyword - } - } -' -keyword_options=`( - cd $directory && - $AWK "$generate_keyword_options" $files < /dev/null -)` || exit - -# Generate temporary file reflecting the %e strings in the scanned files. -tmp=tmp-emsgids.c - -generate_emsgids=' - /%e.*}/ { - line = $0 - while ((percent_index = index(line, "%e")) != 0) { - line = substr(line, percent_index + 2) - bracket_index = index(line, "}") - if (bracket_index == 0) { - continue - } - msgid = substr(line, 1, bracket_index - 1) - if (index(msgid, "%") != 0) { - continue - } - printf "#line %d \"%s\"\n", FNR, FILENAME - printf "_(\"%s\")\n", msgid - line = substr(line, bracket_index + 1) - } - } -' -(cd $directory && - $AWK "$generate_emsgids" $files < /dev/null -) > $directory/$tmp || exit - -# Run the xgettext command, with temporary added as a file to scan. -"$xgettext" $keyword_options ${1+"$@"} $tmp || exit - -# Clean up. -# If we don't get here, `make clean' will remove this file later. -rm -f $directory/$tmp diff --git a/src/bin/diffutils/lib/Jamfile b/src/bin/diffutils/lib/Jamfile deleted file mode 100644 index 7cfee300e2..0000000000 --- a/src/bin/diffutils/lib/Jamfile +++ /dev/null @@ -1,49 +0,0 @@ -SubDir HAIKU_TOP src bin diffutils lib ; - -# filter warnings we don't want here -TARGET_WARNING_CCFLAGS_$(TARGET_PACKAGING_ARCH) - = [ FFilter $(TARGET_WARNING_CCFLAGS_$(TARGET_PACKAGING_ARCH)) - : -Wall -Wmissing-prototypes -Wsign-compare ] ; - -SubDirCcFlags -DHAVE_CONFIG_H ; -SubDirSysHdrs $(SUBDIR) ; -SubDirSysHdrs [ FDirName $(SUBDIR) $(DOTDOT) ] ; -SubDirSysHdrs [ FDirName $(HAIKU_TOP) headers ] ; - -StaticLibrary libdiffutils.a : -# alloca.c - basename.c - c-stack.c - cmpbuf.c - error.c - exclude.c - exitfail.c - fnmatch.c - freesoft.c - getopt.c - getopt1.c - hard-locale.c - imaxtostr.c - malloc.c - memchr.c - mkstemp.c - offtostr.c - posixver.c - prepargs.c - quotesys.c - realloc.c -# regex.c - setmode.c - strcasecmp.c - strftime.c - strtol.c - strtoul.c - strtoull.c - strtoumax.c - tempname.c - umaxtostr.c - waitpid.c - xmalloc.c - xstrtol.c - xstrtoumax.c -; diff --git a/src/bin/diffutils/lib/Makefile b/src/bin/diffutils/lib/Makefile deleted file mode 100644 index 7276c1b46b..0000000000 --- a/src/bin/diffutils/lib/Makefile +++ /dev/null @@ -1,493 +0,0 @@ -# Makefile.in generated by automake 1.6 from Makefile.am. -# lib/Makefile. Generated from Makefile.in by configure. - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - - -# Automakefile for GNU Diffutils library. - -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. -SHELL = /bin/sh - -srcdir = . -top_srcdir = .. - -prefix = /boot/common -exec_prefix = ${prefix} - -bindir = ${exec_prefix}/bin -sbindir = ${exec_prefix}/sbin -libexecdir = ${exec_prefix}/libexec -datadir = ${prefix}/share -sysconfdir = ${prefix}/etc -sharedstatedir = ${prefix}/com -localstatedir = ${prefix}/var -libdir = ${exec_prefix}/lib -infodir = ${prefix}/info -mandir = ${prefix}/man -includedir = ${prefix}/include -oldincludedir = /usr/include -pkgdatadir = $(datadir)/diffutils -pkglibdir = $(libdir)/diffutils -pkgincludedir = $(includedir)/diffutils -top_builddir = .. - -ACLOCAL = ${SHELL} /boot/home/svnhaiku/haiku/src/bin/diffutils/config/missing --run aclocal-1.6 -AUTOCONF = ${SHELL} /boot/home/svnhaiku/haiku/src/bin/diffutils/config/missing --run autoconf -AUTOMAKE = ${SHELL} /boot/home/svnhaiku/haiku/src/bin/diffutils/config/missing --run automake-1.6 -AUTOHEADER = ${SHELL} /boot/home/svnhaiku/haiku/src/bin/diffutils/config/missing --run autoheader - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = /bin/install -c -INSTALL_PROGRAM = ${INSTALL} -INSTALL_DATA = ${INSTALL} -m 644 -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -INSTALL_SCRIPT = ${INSTALL} -INSTALL_HEADER = $(INSTALL_DATA) -transform = s,x,x, -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = -host_triplet = i586-pc-haiku - -EXEEXT = -OBJEXT = o -PATH_SEPARATOR = : -AMTAR = ${SHELL} /boot/home/svnhaiku/haiku/src/bin/diffutils/config/missing --run tar -AWK = gawk -BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ -CATOBJEXT = @CATOBJEXT@ -CC = gcc -CPP = gcc -E -DATADIRNAME = @DATADIRNAME@ -DEPDIR = .deps -GENCAT = @GENCAT@ -GLIBC21 = @GLIBC21@ -GMSGFMT = : -HAVE_LIB = @HAVE_LIB@ -HELP2MAN = ${SHELL} /boot/home/svnhaiku/haiku/src/bin/diffutils/config/missing --run help2man -INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s -INSTOBJEXT = @INSTOBJEXT@ -INTLBISON = @INTLBISON@ -INTLLIBS = -INTLOBJS = @INTLOBJS@ -INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -LIB = @LIB@ -LIBICONV = /boot/common/lib/libiconv.a -LIBINTL = -LIB_CLOCK_GETTIME = -LTLIB = @LTLIB@ -LTLIBICONV = -L/boot/common/lib -liconv -LTLIBINTL = -MKINSTALLDIRS = config/mkinstalldirs -PACKAGE = diffutils -POSUB = -PR_PROGRAM = /bin/pr -RANLIB = ranlib -STRIP = -U = -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = no -VERSION = 2.8.1 -am__include = include -am__quote = -install_sh = /boot/home/svnhaiku/haiku/src/bin/diffutils/config/install-sh - -noinst_LIBRARIES = libdiffutils.a - -EXTRA_DIST = alloca.c fnmatch.c inttostr.c malloc.c memchr.c mkstemp.c \ - realloc.c regex.c strcasecmp.c strtoimax.c strtol.c tempname.c waitpid.c \ - xstrtol.c - -SUBDIRS = posix - -noinst_HEADERS = \ - c-stack.h cmpbuf.h dirname.h error.h exclude.h exitfail.h \ - fnmatch.hin freesoft.h getopt.h \ - gettext.h hard-locale.h inttostr.h prepargs.h posixver.h quotesys.h \ - regex.hin setmode.h unlocked-io.h xalloc.h xstrtol.h - - -libdiffutils_a_SOURCES = \ - basename.c c-stack.c cmpbuf.c error.c exclude.c exitfail.c \ - freesoft.c getopt.c getopt1.c \ - hard-locale.c imaxtostr.c offtostr.c prepargs.c posixver.c quotesys.c \ - setmode.c strftime.c umaxtostr.c xmalloc.c xstrtoumax.c - - -libdiffutils_a_LIBADD = -libdiffutils_a_DEPENDENCIES = $(libdiffutils_a_LIBADD) - -DISTCLEANFILES = fnmatch.h fnmatch.hno regex.h regex.hno -subdir = lib -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -LIBRARIES = $(noinst_LIBRARIES) - -libdiffutils_a_AR = $(AR) cru -am_libdiffutils_a_OBJECTS = basename.$(OBJEXT) c-stack.$(OBJEXT) \ - cmpbuf.$(OBJEXT) error.$(OBJEXT) exclude.$(OBJEXT) \ - exitfail.$(OBJEXT) freesoft.$(OBJEXT) getopt.$(OBJEXT) \ - getopt1.$(OBJEXT) hard-locale.$(OBJEXT) imaxtostr.$(OBJEXT) \ - offtostr.$(OBJEXT) prepargs.$(OBJEXT) posixver.$(OBJEXT) \ - quotesys.$(OBJEXT) setmode.$(OBJEXT) strftime.$(OBJEXT) \ - umaxtostr.$(OBJEXT) xmalloc.$(OBJEXT) xstrtoumax.$(OBJEXT) -libdiffutils_a_OBJECTS = $(am_libdiffutils_a_OBJECTS) - -DEFS = -DHAVE_CONFIG_H -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -CPPFLAGS = -I/boot/common/include -LDFLAGS = -LIBS = -depcomp = $(SHELL) $(top_srcdir)/config/depcomp -am__depfiles_maybe = depfiles -DEP_FILES = $(DEPDIR)/alloca.Po $(DEPDIR)/fnmatch.Po \ - $(DEPDIR)/malloc.Po $(DEPDIR)/memchr.Po \ - $(DEPDIR)/mkstemp.Po $(DEPDIR)/realloc.Po \ - $(DEPDIR)/regex.Po $(DEPDIR)/strcasecmp.Po \ - $(DEPDIR)/strtoul.Po $(DEPDIR)/strtoull.Po \ - $(DEPDIR)/strtoumax.Po $(DEPDIR)/tempname.Po \ - $(DEPDIR)/waitpid.Po ./$(DEPDIR)/basename.Po \ - ./$(DEPDIR)/c-stack.Po ./$(DEPDIR)/cmpbuf.Po \ - ./$(DEPDIR)/error.Po ./$(DEPDIR)/exclude.Po \ - ./$(DEPDIR)/exitfail.Po ./$(DEPDIR)/freesoft.Po \ - ./$(DEPDIR)/getopt.Po ./$(DEPDIR)/getopt1.Po \ - ./$(DEPDIR)/hard-locale.Po ./$(DEPDIR)/imaxtostr.Po \ - ./$(DEPDIR)/offtostr.Po ./$(DEPDIR)/posixver.Po \ - ./$(DEPDIR)/prepargs.Po ./$(DEPDIR)/quotesys.Po \ - ./$(DEPDIR)/setmode.Po ./$(DEPDIR)/strftime.Po \ - ./$(DEPDIR)/umaxtostr.Po ./$(DEPDIR)/xmalloc.Po \ - ./$(DEPDIR)/xstrtoumax.Po -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -CFLAGS = -g -O2 -DIST_SOURCES = $(libdiffutils_a_SOURCES) -HEADERS = $(noinst_HEADERS) - - -RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \ - uninstall-info-recursive all-recursive install-data-recursive \ - install-exec-recursive installdirs-recursive install-recursive \ - uninstall-recursive check-recursive installcheck-recursive -DIST_COMMON = $(noinst_HEADERS) Makefile.am Makefile.in alloca.c \ - fnmatch.c malloc.c memchr.c mkstemp.c realloc.c regex.c \ - strcasecmp.c strtoul.c strtoull.c strtoumax.c tempname.c \ - waitpid.c -DIST_SUBDIRS = $(SUBDIRS) -SOURCES = $(libdiffutils_a_SOURCES) - -all: all-recursive - -.SUFFIXES: -.SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits lib/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) - -AR = ar - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -libdiffutils.a: $(libdiffutils_a_OBJECTS) $(libdiffutils_a_DEPENDENCIES) - -rm -f libdiffutils.a - $(libdiffutils_a_AR) libdiffutils.a $(libdiffutils_a_OBJECTS) $(libdiffutils_a_LIBADD) - $(RANLIB) libdiffutils.a - -mostlyclean-compile: - -rm -f *.$(OBJEXT) core *.core - -distclean-compile: - -rm -f *.tab.c - -include $(DEPDIR)/alloca.Po -include $(DEPDIR)/fnmatch.Po -include $(DEPDIR)/malloc.Po -include $(DEPDIR)/memchr.Po -include $(DEPDIR)/mkstemp.Po -include $(DEPDIR)/realloc.Po -include $(DEPDIR)/regex.Po -include $(DEPDIR)/strcasecmp.Po -include $(DEPDIR)/strtoul.Po -include $(DEPDIR)/strtoull.Po -include $(DEPDIR)/strtoumax.Po -include $(DEPDIR)/tempname.Po -include $(DEPDIR)/waitpid.Po -include ./$(DEPDIR)/basename.Po -include ./$(DEPDIR)/c-stack.Po -include ./$(DEPDIR)/cmpbuf.Po -include ./$(DEPDIR)/error.Po -include ./$(DEPDIR)/exclude.Po -include ./$(DEPDIR)/exitfail.Po -include ./$(DEPDIR)/freesoft.Po -include ./$(DEPDIR)/getopt.Po -include ./$(DEPDIR)/getopt1.Po -include ./$(DEPDIR)/hard-locale.Po -include ./$(DEPDIR)/imaxtostr.Po -include ./$(DEPDIR)/offtostr.Po -include ./$(DEPDIR)/posixver.Po -include ./$(DEPDIR)/prepargs.Po -include ./$(DEPDIR)/quotesys.Po -include ./$(DEPDIR)/setmode.Po -include ./$(DEPDIR)/strftime.Po -include ./$(DEPDIR)/umaxtostr.Po -include ./$(DEPDIR)/xmalloc.Po -include ./$(DEPDIR)/xstrtoumax.Po - -distclean-depend: - -rm -rf $(DEPDIR) ./$(DEPDIR) - -.c.o: - source='$<' object='$@' libtool=no \ - depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' \ - $(CCDEPMODE) $(depcomp) \ - $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< - -.c.obj: - source='$<' object='$@' libtool=no \ - depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' \ - $(CCDEPMODE) $(depcomp) \ - $(COMPILE) -c `cygpath -w $<` -CCDEPMODE = depmode=gcc -uninstall-info-am: - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @set fnord $(MAKEFLAGS); amf=$$2; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: - @set fnord $(MAKEFLAGS); amf=$$2; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done - -ETAGS = etags -ETAGSFLAGS = - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$tags$$unique" \ - || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir)$$dir \ - || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -d $(distdir)/$$subdir \ - || mkdir $(distdir)/$$subdir \ - || exit 1; \ - (cd $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$(top_distdir)" \ - distdir=../$(distdir)/$$subdir \ - distdir) \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-recursive -all-am: Makefile $(LIBRARIES) $(HEADERS) -installdirs: installdirs-recursive -installdirs-am: - -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* - -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am - -distclean: distclean-recursive - -distclean-am: clean-am distclean-compile distclean-depend \ - distclean-generic distclean-tags - -dvi: dvi-recursive - -dvi-am: - -info: info-recursive - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-recursive - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -uninstall-am: uninstall-info-am - -uninstall-info: uninstall-info-recursive - -.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \ - clean-generic clean-noinstLIBRARIES clean-recursive distclean \ - distclean-compile distclean-depend distclean-generic \ - distclean-recursive distclean-tags distdir dvi dvi-am \ - dvi-recursive info info-am info-recursive install install-am \ - install-data install-data-am install-data-recursive \ - install-exec install-exec-am install-exec-recursive \ - install-info install-info-am install-info-recursive install-man \ - install-recursive install-strip installcheck installcheck-am \ - installdirs installdirs-am installdirs-recursive \ - maintainer-clean maintainer-clean-generic \ - maintainer-clean-recursive mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-recursive tags tags-recursive \ - uninstall uninstall-am uninstall-info-am \ - uninstall-info-recursive uninstall-recursive - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/bin/diffutils/lib/Makefile.am b/src/bin/diffutils/lib/Makefile.am deleted file mode 100644 index dd3ae13dff..0000000000 --- a/src/bin/diffutils/lib/Makefile.am +++ /dev/null @@ -1,42 +0,0 @@ -# Automakefile for GNU Diffutils library. - -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. - -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2, or (at your option) -## any later version. - -## This program is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. - -## You should have received a copy of the GNU General Public License -## along with this program; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -## 02111-1307, USA. - -noinst_LIBRARIES = libdiffutils.a - -EXTRA_DIST = alloca.c fnmatch.c inttostr.c malloc.c memchr.c mkstemp.c \ - realloc.c regex.c strcasecmp.c strtoimax.c strtol.c tempname.c waitpid.c \ - xstrtol.c -SUBDIRS = posix - -noinst_HEADERS = \ - c-stack.h cmpbuf.h dirname.h error.h exclude.h exitfail.h \ - fnmatch.hin freesoft.h getopt.h \ - gettext.h hard-locale.h inttostr.h prepargs.h posixver.h quotesys.h \ - regex.hin setmode.h unlocked-io.h xalloc.h xstrtol.h - -libdiffutils_a_SOURCES = \ - basename.c c-stack.c cmpbuf.c error.c exclude.c exitfail.c \ - freesoft.c getopt.c getopt1.c \ - hard-locale.c imaxtostr.c offtostr.c prepargs.c posixver.c quotesys.c \ - setmode.c strftime.c umaxtostr.c xmalloc.c xstrtoumax.c - -libdiffutils_a_LIBADD = @ALLOCA@ @LIBOBJS@ -libdiffutils_a_DEPENDENCIES = $(libdiffutils_a_LIBADD) - -DISTCLEANFILES = fnmatch.h fnmatch.hno regex.h regex.hno diff --git a/src/bin/diffutils/lib/Makefile.in b/src/bin/diffutils/lib/Makefile.in deleted file mode 100644 index d0fbd2ff89..0000000000 --- a/src/bin/diffutils/lib/Makefile.in +++ /dev/null @@ -1,493 +0,0 @@ -# Makefile.in generated by automake 1.6 from Makefile.am. -# @configure_input@ - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# Automakefile for GNU Diffutils library. - -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_HEADER = $(INSTALL_DATA) -transform = @program_transform_name@ -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ - -EXEEXT = @EXEEXT@ -OBJEXT = @OBJEXT@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -AMTAR = @AMTAR@ -AWK = @AWK@ -BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -CPP = @CPP@ -DATADIRNAME = @DATADIRNAME@ -DEPDIR = @DEPDIR@ -GENCAT = @GENCAT@ -GLIBC21 = @GLIBC21@ -GMSGFMT = @GMSGFMT@ -HAVE_LIB = @HAVE_LIB@ -HELP2MAN = @HELP2MAN@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTOBJEXT = @INSTOBJEXT@ -INTLBISON = @INTLBISON@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ -INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -LIB = @LIB@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ -LTLIB = @LTLIB@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -PACKAGE = @PACKAGE@ -POSUB = @POSUB@ -PR_PROGRAM = @PR_PROGRAM@ -RANLIB = @RANLIB@ -STRIP = @STRIP@ -U = @U@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -am__include = @am__include@ -am__quote = @am__quote@ -install_sh = @install_sh@ - -noinst_LIBRARIES = libdiffutils.a - -EXTRA_DIST = alloca.c fnmatch.c inttostr.c malloc.c memchr.c mkstemp.c \ - realloc.c regex.c strcasecmp.c strtoimax.c strtol.c tempname.c waitpid.c \ - xstrtol.c - -SUBDIRS = posix - -noinst_HEADERS = \ - c-stack.h cmpbuf.h dirname.h error.h exclude.h exitfail.h \ - fnmatch.hin freesoft.h getopt.h \ - gettext.h hard-locale.h inttostr.h prepargs.h posixver.h quotesys.h \ - regex.hin setmode.h unlocked-io.h xalloc.h xstrtol.h - - -libdiffutils_a_SOURCES = \ - basename.c c-stack.c cmpbuf.c error.c exclude.c exitfail.c \ - freesoft.c getopt.c getopt1.c \ - hard-locale.c imaxtostr.c offtostr.c prepargs.c posixver.c quotesys.c \ - setmode.c strftime.c umaxtostr.c xmalloc.c xstrtoumax.c - - -libdiffutils_a_LIBADD = @ALLOCA@ @LIBOBJS@ -libdiffutils_a_DEPENDENCIES = $(libdiffutils_a_LIBADD) - -DISTCLEANFILES = fnmatch.h fnmatch.hno regex.h regex.hno -subdir = lib -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -LIBRARIES = $(noinst_LIBRARIES) - -libdiffutils_a_AR = $(AR) cru -am_libdiffutils_a_OBJECTS = basename.$(OBJEXT) c-stack.$(OBJEXT) \ - cmpbuf.$(OBJEXT) error.$(OBJEXT) exclude.$(OBJEXT) \ - exitfail.$(OBJEXT) freesoft.$(OBJEXT) getopt.$(OBJEXT) \ - getopt1.$(OBJEXT) hard-locale.$(OBJEXT) imaxtostr.$(OBJEXT) \ - offtostr.$(OBJEXT) prepargs.$(OBJEXT) posixver.$(OBJEXT) \ - quotesys.$(OBJEXT) setmode.$(OBJEXT) strftime.$(OBJEXT) \ - umaxtostr.$(OBJEXT) xmalloc.$(OBJEXT) xstrtoumax.$(OBJEXT) -libdiffutils_a_OBJECTS = $(am_libdiffutils_a_OBJECTS) - -DEFS = @DEFS@ -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -CPPFLAGS = @CPPFLAGS@ -LDFLAGS = @LDFLAGS@ -LIBS = @LIBS@ -depcomp = $(SHELL) $(top_srcdir)/config/depcomp -am__depfiles_maybe = depfiles -@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/alloca.Po $(DEPDIR)/fnmatch.Po \ -@AMDEP_TRUE@ $(DEPDIR)/malloc.Po $(DEPDIR)/memchr.Po \ -@AMDEP_TRUE@ $(DEPDIR)/mkstemp.Po $(DEPDIR)/realloc.Po \ -@AMDEP_TRUE@ $(DEPDIR)/regex.Po $(DEPDIR)/strcasecmp.Po \ -@AMDEP_TRUE@ $(DEPDIR)/strtoul.Po $(DEPDIR)/strtoull.Po \ -@AMDEP_TRUE@ $(DEPDIR)/strtoumax.Po $(DEPDIR)/tempname.Po \ -@AMDEP_TRUE@ $(DEPDIR)/waitpid.Po ./$(DEPDIR)/basename.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/c-stack.Po ./$(DEPDIR)/cmpbuf.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/error.Po ./$(DEPDIR)/exclude.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/exitfail.Po ./$(DEPDIR)/freesoft.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/getopt.Po ./$(DEPDIR)/getopt1.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/hard-locale.Po ./$(DEPDIR)/imaxtostr.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/offtostr.Po ./$(DEPDIR)/posixver.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/prepargs.Po ./$(DEPDIR)/quotesys.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/setmode.Po ./$(DEPDIR)/strftime.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/umaxtostr.Po ./$(DEPDIR)/xmalloc.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/xstrtoumax.Po -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -CFLAGS = @CFLAGS@ -DIST_SOURCES = $(libdiffutils_a_SOURCES) -HEADERS = $(noinst_HEADERS) - - -RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \ - uninstall-info-recursive all-recursive install-data-recursive \ - install-exec-recursive installdirs-recursive install-recursive \ - uninstall-recursive check-recursive installcheck-recursive -DIST_COMMON = $(noinst_HEADERS) Makefile.am Makefile.in alloca.c \ - fnmatch.c malloc.c memchr.c mkstemp.c realloc.c regex.c \ - strcasecmp.c strtoul.c strtoull.c strtoumax.c tempname.c \ - waitpid.c -DIST_SUBDIRS = $(SUBDIRS) -SOURCES = $(libdiffutils_a_SOURCES) - -all: all-recursive - -.SUFFIXES: -.SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits lib/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) - -AR = ar - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -libdiffutils.a: $(libdiffutils_a_OBJECTS) $(libdiffutils_a_DEPENDENCIES) - -rm -f libdiffutils.a - $(libdiffutils_a_AR) libdiffutils.a $(libdiffutils_a_OBJECTS) $(libdiffutils_a_LIBADD) - $(RANLIB) libdiffutils.a - -mostlyclean-compile: - -rm -f *.$(OBJEXT) core *.core - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/alloca.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/fnmatch.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/malloc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/memchr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/mkstemp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/realloc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/regex.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strcasecmp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strtoul.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strtoull.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strtoumax.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/tempname.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/waitpid.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basename.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c-stack.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmpbuf.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exclude.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exitfail.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/freesoft.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hard-locale.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imaxtostr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/offtostr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/posixver.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prepargs.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quotesys.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setmode.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strftime.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umaxtostr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmalloc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrtoumax.Po@am__quote@ - -distclean-depend: - -rm -rf $(DEPDIR) ./$(DEPDIR) - -.c.o: -@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< - -.c.obj: -@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `cygpath -w $<` -CCDEPMODE = @CCDEPMODE@ -uninstall-info-am: - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @set fnord $(MAKEFLAGS); amf=$$2; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: - @set fnord $(MAKEFLAGS); amf=$$2; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done - -ETAGS = etags -ETAGSFLAGS = - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$tags$$unique" \ - || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir)$$dir \ - || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -d $(distdir)/$$subdir \ - || mkdir $(distdir)/$$subdir \ - || exit 1; \ - (cd $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$(top_distdir)" \ - distdir=../$(distdir)/$$subdir \ - distdir) \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-recursive -all-am: Makefile $(LIBRARIES) $(HEADERS) -installdirs: installdirs-recursive -installdirs-am: - -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* - -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am - -distclean: distclean-recursive - -distclean-am: clean-am distclean-compile distclean-depend \ - distclean-generic distclean-tags - -dvi: dvi-recursive - -dvi-am: - -info: info-recursive - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-recursive - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -uninstall-am: uninstall-info-am - -uninstall-info: uninstall-info-recursive - -.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \ - clean-generic clean-noinstLIBRARIES clean-recursive distclean \ - distclean-compile distclean-depend distclean-generic \ - distclean-recursive distclean-tags distdir dvi dvi-am \ - dvi-recursive info info-am info-recursive install install-am \ - install-data install-data-am install-data-recursive \ - install-exec install-exec-am install-exec-recursive \ - install-info install-info-am install-info-recursive install-man \ - install-recursive install-strip installcheck installcheck-am \ - installdirs installdirs-am installdirs-recursive \ - maintainer-clean maintainer-clean-generic \ - maintainer-clean-recursive mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-recursive tags tags-recursive \ - uninstall uninstall-am uninstall-info-am \ - uninstall-info-recursive uninstall-recursive - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/bin/diffutils/lib/alloca.c b/src/bin/diffutils/lib/alloca.c deleted file mode 100644 index 6ad425a4cd..0000000000 --- a/src/bin/diffutils/lib/alloca.c +++ /dev/null @@ -1,504 +0,0 @@ -/* alloca.c -- allocate automatically reclaimed memory - (Mostly) portable public-domain implementation -- D A Gwyn - - This implementation of the PWB library alloca function, - which is used to allocate space off the run-time stack so - that it is automatically reclaimed upon procedure exit, - was inspired by discussions with J. Q. Johnson of Cornell. - J.Otto Tennant contributed the Cray support. - - There are some preprocessor constants that can - be defined when compiling for your specific system, for - improved efficiency; however, the defaults should be okay. - - The general concept of this implementation is to keep - track of all alloca-allocated blocks, and reclaim any - that are found to be deeper in the stack than the current - invocation. This heuristic does not reclaim storage as - soon as it becomes invalid, but it will do so eventually. - - As a special case, alloca(0) reclaims storage without - allocating any. It is a good idea to use alloca(0) in - your main control loop, etc. to force garbage collection. */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#if HAVE_STRING_H -# include -#endif -#if HAVE_STDLIB_H -# include -#endif - -#ifdef emacs -# include "blockinput.h" -#endif - -/* If compiling with GCC 2, this file's not needed. */ -#if !defined (__GNUC__) || __GNUC__ < 2 - -/* If someone has defined alloca as a macro, - there must be some other way alloca is supposed to work. */ -# ifndef alloca - -# ifdef emacs -# ifdef static -/* actually, only want this if static is defined as "" - -- this is for usg, in which emacs must undefine static - in order to make unexec workable - */ -# ifndef STACK_DIRECTION -you -lose --- must know STACK_DIRECTION at compile-time -# endif /* STACK_DIRECTION undefined */ -# endif /* static */ -# endif /* emacs */ - -/* If your stack is a linked list of frames, you have to - provide an "address metric" ADDRESS_FUNCTION macro. */ - -# if defined (CRAY) && defined (CRAY_STACKSEG_END) -long i00afunc (); -# define ADDRESS_FUNCTION(arg) (char *) i00afunc (&(arg)) -# else -# define ADDRESS_FUNCTION(arg) &(arg) -# endif - -# if __STDC__ -typedef void *pointer; -# else -typedef char *pointer; -# endif - -# ifndef NULL -# define NULL 0 -# endif - -/* Different portions of Emacs need to call different versions of - malloc. The Emacs executable needs alloca to call xmalloc, because - ordinary malloc isn't protected from input signals. On the other - hand, the utilities in lib-src need alloca to call malloc; some of - them are very simple, and don't have an xmalloc routine. - - Non-Emacs programs expect this to call xmalloc. - - Callers below should use malloc. */ - -# ifndef emacs -# undef malloc -# define malloc xmalloc -# endif -extern pointer malloc (); - -/* Define STACK_DIRECTION if you know the direction of stack - growth for your system; otherwise it will be automatically - deduced at run-time. - - STACK_DIRECTION > 0 => grows toward higher addresses - STACK_DIRECTION < 0 => grows toward lower addresses - STACK_DIRECTION = 0 => direction of growth unknown */ - -# ifndef STACK_DIRECTION -# define STACK_DIRECTION 0 /* Direction unknown. */ -# endif - -# if STACK_DIRECTION != 0 - -# define STACK_DIR STACK_DIRECTION /* Known at compile-time. */ - -# else /* STACK_DIRECTION == 0; need run-time code. */ - -static int stack_dir; /* 1 or -1 once known. */ -# define STACK_DIR stack_dir - -static void -find_stack_direction () -{ - static char *addr = NULL; /* Address of first `dummy', once known. */ - auto char dummy; /* To get stack address. */ - - if (addr == NULL) - { /* Initial entry. */ - addr = ADDRESS_FUNCTION (dummy); - - find_stack_direction (); /* Recurse once. */ - } - else - { - /* Second entry. */ - if (ADDRESS_FUNCTION (dummy) > addr) - stack_dir = 1; /* Stack grew upward. */ - else - stack_dir = -1; /* Stack grew downward. */ - } -} - -# endif /* STACK_DIRECTION == 0 */ - -/* An "alloca header" is used to: - (a) chain together all alloca'ed blocks; - (b) keep track of stack depth. - - It is very important that sizeof(header) agree with malloc - alignment chunk size. The following default should work okay. */ - -# ifndef ALIGN_SIZE -# define ALIGN_SIZE sizeof(double) -# endif - -typedef union hdr -{ - char align[ALIGN_SIZE]; /* To force sizeof(header). */ - struct - { - union hdr *next; /* For chaining headers. */ - char *deep; /* For stack depth measure. */ - } h; -} header; - -static header *last_alloca_header = NULL; /* -> last alloca header. */ - -/* Return a pointer to at least SIZE bytes of storage, - which will be automatically reclaimed upon exit from - the procedure that called alloca. Originally, this space - was supposed to be taken from the current stack frame of the - caller, but that method cannot be made to work for some - implementations of C, for example under Gould's UTX/32. */ - -pointer -alloca (size_t size) -{ - auto char probe; /* Probes stack depth: */ - register char *depth = ADDRESS_FUNCTION (probe); - -# if STACK_DIRECTION == 0 - if (STACK_DIR == 0) /* Unknown growth direction. */ - find_stack_direction (); -# endif - - /* Reclaim garbage, defined as all alloca'd storage that - was allocated from deeper in the stack than currently. */ - - { - register header *hp; /* Traverses linked list. */ - -# ifdef emacs - BLOCK_INPUT; -# endif - - for (hp = last_alloca_header; hp != NULL;) - if ((STACK_DIR > 0 && hp->h.deep > depth) - || (STACK_DIR < 0 && hp->h.deep < depth)) - { - register header *np = hp->h.next; - - free ((pointer) hp); /* Collect garbage. */ - - hp = np; /* -> next header. */ - } - else - break; /* Rest are not deeper. */ - - last_alloca_header = hp; /* -> last valid storage. */ - -# ifdef emacs - UNBLOCK_INPUT; -# endif - } - - if (size == 0) - return NULL; /* No allocation required. */ - - /* Allocate combined header + user data storage. */ - - { - register pointer new = malloc (sizeof (header) + size); - /* Address of header. */ - - if (new == 0) - abort(); - - ((header *) new)->h.next = last_alloca_header; - ((header *) new)->h.deep = depth; - - last_alloca_header = (header *) new; - - /* User storage begins just after header. */ - - return (pointer) ((char *) new + sizeof (header)); - } -} - -# if defined (CRAY) && defined (CRAY_STACKSEG_END) - -# ifdef DEBUG_I00AFUNC -# include -# endif - -# ifndef CRAY_STACK -# define CRAY_STACK -# ifndef CRAY2 -/* Stack structures for CRAY-1, CRAY X-MP, and CRAY Y-MP */ -struct stack_control_header - { - long shgrow:32; /* Number of times stack has grown. */ - long shaseg:32; /* Size of increments to stack. */ - long shhwm:32; /* High water mark of stack. */ - long shsize:32; /* Current size of stack (all segments). */ - }; - -/* The stack segment linkage control information occurs at - the high-address end of a stack segment. (The stack - grows from low addresses to high addresses.) The initial - part of the stack segment linkage control information is - 0200 (octal) words. This provides for register storage - for the routine which overflows the stack. */ - -struct stack_segment_linkage - { - long ss[0200]; /* 0200 overflow words. */ - long sssize:32; /* Number of words in this segment. */ - long ssbase:32; /* Offset to stack base. */ - long:32; - long sspseg:32; /* Offset to linkage control of previous - segment of stack. */ - long:32; - long sstcpt:32; /* Pointer to task common address block. */ - long sscsnm; /* Private control structure number for - microtasking. */ - long ssusr1; /* Reserved for user. */ - long ssusr2; /* Reserved for user. */ - long sstpid; /* Process ID for pid based multi-tasking. */ - long ssgvup; /* Pointer to multitasking thread giveup. */ - long sscray[7]; /* Reserved for Cray Research. */ - long ssa0; - long ssa1; - long ssa2; - long ssa3; - long ssa4; - long ssa5; - long ssa6; - long ssa7; - long sss0; - long sss1; - long sss2; - long sss3; - long sss4; - long sss5; - long sss6; - long sss7; - }; - -# else /* CRAY2 */ -/* The following structure defines the vector of words - returned by the STKSTAT library routine. */ -struct stk_stat - { - long now; /* Current total stack size. */ - long maxc; /* Amount of contiguous space which would - be required to satisfy the maximum - stack demand to date. */ - long high_water; /* Stack high-water mark. */ - long overflows; /* Number of stack overflow ($STKOFEN) calls. */ - long hits; /* Number of internal buffer hits. */ - long extends; /* Number of block extensions. */ - long stko_mallocs; /* Block allocations by $STKOFEN. */ - long underflows; /* Number of stack underflow calls ($STKRETN). */ - long stko_free; /* Number of deallocations by $STKRETN. */ - long stkm_free; /* Number of deallocations by $STKMRET. */ - long segments; /* Current number of stack segments. */ - long maxs; /* Maximum number of stack segments so far. */ - long pad_size; /* Stack pad size. */ - long current_address; /* Current stack segment address. */ - long current_size; /* Current stack segment size. This - number is actually corrupted by STKSTAT to - include the fifteen word trailer area. */ - long initial_address; /* Address of initial segment. */ - long initial_size; /* Size of initial segment. */ - }; - -/* The following structure describes the data structure which trails - any stack segment. I think that the description in 'asdef' is - out of date. I only describe the parts that I am sure about. */ - -struct stk_trailer - { - long this_address; /* Address of this block. */ - long this_size; /* Size of this block (does not include - this trailer). */ - long unknown2; - long unknown3; - long link; /* Address of trailer block of previous - segment. */ - long unknown5; - long unknown6; - long unknown7; - long unknown8; - long unknown9; - long unknown10; - long unknown11; - long unknown12; - long unknown13; - long unknown14; - }; - -# endif /* CRAY2 */ -# endif /* not CRAY_STACK */ - -# ifdef CRAY2 -/* Determine a "stack measure" for an arbitrary ADDRESS. - I doubt that "lint" will like this much. */ - -static long -i00afunc (long *address) -{ - struct stk_stat status; - struct stk_trailer *trailer; - long *block, size; - long result = 0; - - /* We want to iterate through all of the segments. The first - step is to get the stack status structure. We could do this - more quickly and more directly, perhaps, by referencing the - $LM00 common block, but I know that this works. */ - - STKSTAT (&status); - - /* Set up the iteration. */ - - trailer = (struct stk_trailer *) (status.current_address - + status.current_size - - 15); - - /* There must be at least one stack segment. Therefore it is - a fatal error if "trailer" is null. */ - - if (trailer == 0) - abort (); - - /* Discard segments that do not contain our argument address. */ - - while (trailer != 0) - { - block = (long *) trailer->this_address; - size = trailer->this_size; - if (block == 0 || size == 0) - abort (); - trailer = (struct stk_trailer *) trailer->link; - if ((block <= address) && (address < (block + size))) - break; - } - - /* Set the result to the offset in this segment and add the sizes - of all predecessor segments. */ - - result = address - block; - - if (trailer == 0) - { - return result; - } - - do - { - if (trailer->this_size <= 0) - abort (); - result += trailer->this_size; - trailer = (struct stk_trailer *) trailer->link; - } - while (trailer != 0); - - /* We are done. Note that if you present a bogus address (one - not in any segment), you will get a different number back, formed - from subtracting the address of the first block. This is probably - not what you want. */ - - return (result); -} - -# else /* not CRAY2 */ -/* Stack address function for a CRAY-1, CRAY X-MP, or CRAY Y-MP. - Determine the number of the cell within the stack, - given the address of the cell. The purpose of this - routine is to linearize, in some sense, stack addresses - for alloca. */ - -static long -i00afunc (long address) -{ - long stkl = 0; - - long size, pseg, this_segment, stack; - long result = 0; - - struct stack_segment_linkage *ssptr; - - /* Register B67 contains the address of the end of the - current stack segment. If you (as a subprogram) store - your registers on the stack and find that you are past - the contents of B67, you have overflowed the segment. - - B67 also points to the stack segment linkage control - area, which is what we are really interested in. */ - - stkl = CRAY_STACKSEG_END (); - ssptr = (struct stack_segment_linkage *) stkl; - - /* If one subtracts 'size' from the end of the segment, - one has the address of the first word of the segment. - - If this is not the first segment, 'pseg' will be - nonzero. */ - - pseg = ssptr->sspseg; - size = ssptr->sssize; - - this_segment = stkl - size; - - /* It is possible that calling this routine itself caused - a stack overflow. Discard stack segments which do not - contain the target address. */ - - while (!(this_segment <= address && address <= stkl)) - { -# ifdef DEBUG_I00AFUNC - fprintf (stderr, "%011o %011o %011o\n", this_segment, address, stkl); -# endif - if (pseg == 0) - break; - stkl = stkl - pseg; - ssptr = (struct stack_segment_linkage *) stkl; - size = ssptr->sssize; - pseg = ssptr->sspseg; - this_segment = stkl - size; - } - - result = address - this_segment; - - /* If you subtract pseg from the current end of the stack, - you get the address of the previous stack segment's end. - This seems a little convoluted to me, but I'll bet you save - a cycle somewhere. */ - - while (pseg != 0) - { -# ifdef DEBUG_I00AFUNC - fprintf (stderr, "%011o %011o\n", pseg, size); -# endif - stkl = stkl - pseg; - ssptr = (struct stack_segment_linkage *) stkl; - size = ssptr->sssize; - pseg = ssptr->sspseg; - result += size; - } - return (result); -} - -# endif /* not CRAY2 */ -# endif /* CRAY */ - -# endif /* no alloca */ -#endif /* not GCC version 2 */ diff --git a/src/bin/diffutils/lib/basename.c b/src/bin/diffutils/lib/basename.c deleted file mode 100644 index 54f037ed5f..0000000000 --- a/src/bin/diffutils/lib/basename.c +++ /dev/null @@ -1,79 +0,0 @@ -/* basename.c -- return the last element in a path - Copyright (C) 1990, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#if HAVE_CONFIG_H -# include -#endif - -#if STDC_HEADERS || HAVE_STRING_H -# include -#endif -#include "dirname.h" - -/* In general, we can't use the builtin `basename' function if available, - since it has different meanings in different environments. - In some environments the builtin `basename' modifies its argument. - - Return the address of the last file name component of NAME. If - NAME has no file name components because it is all slashes, return - NAME if it is empty, the address of its last slash otherwise. */ - -char * -base_name (char const *name) -{ - char const *base = name + FILESYSTEM_PREFIX_LEN (name); - char const *p; - - for (p = base; *p; p++) - { - if (ISSLASH (*p)) - { - /* Treat multiple adjacent slashes like a single slash. */ - do p++; - while (ISSLASH (*p)); - - /* If the file name ends in slash, use the trailing slash as - the basename if no non-slashes have been found. */ - if (! *p) - { - if (ISSLASH (*base)) - base = p - 1; - break; - } - - /* *P is a non-slash preceded by a slash. */ - base = p; - } - } - - return (char *) base; -} - -/* Return the length of of the basename NAME. Typically NAME is the - value returned by base_name. Act like strlen (NAME), except omit - redundant trailing slashes. */ - -size_t -base_len (char const *name) -{ - size_t len; - - for (len = strlen (name); 1 < len && ISSLASH (name[len - 1]); len--) - continue; - - return len; -} diff --git a/src/bin/diffutils/lib/c-stack.c b/src/bin/diffutils/lib/c-stack.c deleted file mode 100644 index b601eceaa4..0000000000 --- a/src/bin/diffutils/lib/c-stack.c +++ /dev/null @@ -1,237 +0,0 @@ -/* Stack overflow handling. - - Copyright (C) 2002 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by Paul Eggert. */ - -/* This module assumes that each stack frame is smaller than a page. - If you use alloca, dynamic arrays, or large local variables, your - program may extend the stack by more than a page at a time. If so, - the code below may incorrectly report a program error, or worse - yet, may not detect the overflow at all. To avoid this problem, - don't use large local arrays. */ - -#if HAVE_CONFIG_H -# include -#endif - -#include "gettext.h" -#define _(msgid) gettext (msgid) - -#include -#ifndef ENOTSUP -# define ENOTSUP EINVAL -#endif - -#if HAVE_INTTYPES_H -# include -#else -# if HAVE_STDINT_H -# include -# endif -#endif - -#include -#include -#include - -#if HAVE_UNISTD_H -# include -#endif -#ifndef STDERR_FILENO -# define STDERR_FILENO 2 -#endif - -#include "c-stack.h" -#include "exitfail.h" - -extern char *program_name; - -#if HAVE_XSI_STACK_OVERFLOW_HEURISTIC - -# include - - -/* Storage for the alternate signal stack. */ -static union -{ - char buffer[SIGSTKSZ]; - - /* These other members are for proper alignment. There's no - standard way to guarantee stack alignment, but this seems enough - in practice. */ - long double ld; - uintmax_t u; - void *p; -} alternate_signal_stack; - - -/* Direction of the C runtime stack. This function is - async-signal-safe. */ - -# if STACK_DIRECTION -# define find_stack_direction(ptr) STACK_DIRECTION -# else -static int -find_stack_direction (char const *addr) -{ - char dummy; - return ! addr ? find_stack_direction (&dummy) : addr < &dummy ? 1 : -1; -} -# endif - -/* The SIGSEGV handler. */ -static void (* volatile segv_action) (int, siginfo_t *, void *); - -/* Handle a segmentation violation and exit. This function is - async-signal-safe. */ - -static void -segv_handler (int signo, siginfo_t *info, void *context) -{ - /* Clear SIGNO if it seems to have been a stack overflow. */ - if (0 < info->si_code) - { - /* If the faulting address is within the stack, or within one - page of the stack end, assume that it is a stack - overflow. */ - ucontext_t const *user_context = context; - char const *stack_min = user_context->uc_stack.ss_sp; - size_t stack_size = user_context->uc_stack.ss_size; - char const *faulting_address = info->si_addr; - size_t s = faulting_address - stack_min; - size_t page_size = sysconf (_SC_PAGESIZE); - if (find_stack_direction (0) < 0) - s += page_size; - if (s < stack_size + page_size) - signo = 0; - } - - segv_action (signo, info, context); -} - -#endif /* HAVE_XSI_STACK_OVERFLOW_HEURISTIC */ - - -/* Translated messages for program errors and stack overflow. Do not - translate them in the signal handler, since gettext is not - async-signal-safe. */ -static char const * volatile program_error_message; -static char const * volatile stack_overflow_message; - -/* Output an error message, then exit with status EXIT_FAILURE if it - appears to have been a stack overflow, or with a core dump - otherwise. This function is async-signal-safe. */ - -void -c_stack_die (int signo, siginfo_t *info, void *context) -{ - char const *message = - signo ? program_error_message : stack_overflow_message; - write (STDERR_FILENO, program_name, strlen (program_name)); - write (STDERR_FILENO, ": ", 2); - write (STDERR_FILENO, message, strlen (message)); - write (STDERR_FILENO, "\n", 1); - if (! signo) - _exit (exit_failure); -#if HAVE_SIGINFO_T - if (context && info && 0 <= info->si_code) - { - /* Re-raise the exception at the same address. */ - char *addr = info->si_addr; - *addr = 0; - } -#endif - kill (getpid (), signo); -} - - -/* Set up ACTION so that it is invoked on C stack overflow. Return -1 - (setting errno) if this cannot be done. - - ACTION must invoke only async-signal-safe functions. ACTION - together with its callees must not require more than SIGSTKSZ bytes - of stack space. */ - -int -c_stack_action (void (*action) (int, siginfo_t *, void *)) -{ -#if ! HAVE_XSI_STACK_OVERFLOW_HEURISTIC - errno = ENOTSUP; - return -1; -#else - struct sigaction act; - stack_t st; - int r; - - st.ss_flags = 0; - st.ss_sp = alternate_signal_stack.buffer; - st.ss_size = sizeof alternate_signal_stack.buffer; - r = sigaltstack (&st, 0); - if (r != 0) - return r; - - program_error_message = _("program error"); - stack_overflow_message = _("stack overflow"); - segv_action = action; - - sigemptyset (&act.sa_mask); - - /* POSIX 1003.1-2001 says SA_RESETHAND implies SA_NODEFER, but this - is not true on Solaris 8 at least. It doesn't hurt to use - SA_NODEFER here, so leave it in. */ - act.sa_flags = SA_NODEFER | SA_ONSTACK | SA_RESETHAND | SA_SIGINFO; - - act.sa_sigaction = segv_handler; - return sigaction (SIGSEGV, &act, 0); -#endif -} - -#if 0 - -#include - -int volatile exit_failure; - -static long -recurse (char *p) -{ - char array[500]; - array[0] = 1; - return *p + recurse (array); -} - -char *program_name; - -int -main (int argc, char **argv) -{ - program_name = argv[0]; - c_stack_action (c_stack_die); - return recurse ("\1"); -} - -#endif - -/* -Local Variables: -compile-command: "gcc -D_GNU_SOURCE -DDEBUG \ - -DHAVE_INTTYPES_H -DHAVE_SIGINFO_T \ - -DHAVE_XSI_STACK_OVERFLOW_HEURISTIC -DHAVE_UNISTD_H \ - -Wall -W -g c-stack.c -o c-stack" -End: -*/ diff --git a/src/bin/diffutils/lib/c-stack.h b/src/bin/diffutils/lib/c-stack.h deleted file mode 100644 index d592f3d60a..0000000000 --- a/src/bin/diffutils/lib/c-stack.h +++ /dev/null @@ -1,24 +0,0 @@ -/* Stack overflow handling. - - Copyright (C) 2002 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#if ! HAVE_SIGINFO_T -# define siginfo_t void -#endif - -int c_stack_action (void (*) (int, siginfo_t *, void *)); -void c_stack_die (int, siginfo_t *, void *); diff --git a/src/bin/diffutils/lib/cmpbuf.c b/src/bin/diffutils/lib/cmpbuf.c deleted file mode 100644 index 858aa39346..0000000000 --- a/src/bin/diffutils/lib/cmpbuf.c +++ /dev/null @@ -1,147 +0,0 @@ -/* Buffer primitives for comparison operations. - - Copyright (C) 1993, 1995, 1998, 2001, 2002 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#if HAVE_CONFIG_H -# include -#endif - -#include -#include - -#include -#ifndef SA_RESTART -# ifdef SA_INTERRUPT /* e.g. SunOS 4.1.x */ -# define SA_RESTART SA_INTERRUPT -# else -# define SA_RESTART 0 -# endif -#endif - -#if HAVE_UNISTD_H -# include -#endif - -#if HAVE_INTTYPES_H -# include -#endif - -#include -#include "cmpbuf.h" - -/* Determine whether an integer type is signed, and its bounds. - This code assumes two's (or one's!) complement with no holes. */ - -/* The extra casts work around common compiler bugs, - e.g. Cray C 5.0.3.0 when t == time_t. */ -#ifndef TYPE_SIGNED -# define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) -#endif -#ifndef TYPE_MINIMUM -# define TYPE_MINIMUM(t) ((t) (TYPE_SIGNED (t) \ - ? ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1) \ - : (t) 0)) -#endif -#ifndef TYPE_MAXIMUM -# define TYPE_MAXIMUM(t) ((t) (~ (t) 0 - TYPE_MINIMUM (t))) -#endif - -#ifndef PTRDIFF_MAX -# define PTRDIFF_MAX TYPE_MAXIMUM (ptrdiff_t) -#endif -#ifndef SIZE_MAX -# define SIZE_MAX TYPE_MAXIMUM (size_t) -#endif -#ifndef SSIZE_MAX -# define SSIZE_MAX TYPE_MAXIMUM (ssize_t) -#endif - -#undef MIN -#define MIN(a, b) ((a) <= (b) ? (a) : (b)) - -/* Read NBYTES bytes from descriptor FD into BUF. - NBYTES must not be SIZE_MAX. - Return the number of characters successfully read. - On error, return SIZE_MAX, setting errno. - The number returned is always NBYTES unless end-of-file or error. */ - -size_t -block_read (int fd, char *buf, size_t nbytes) -{ - char *bp = buf; - char const *buflim = buf + nbytes; - size_t readlim = SSIZE_MAX; - - do - { - size_t bytes_to_read = MIN (buflim - bp, readlim); - ssize_t nread = read (fd, bp, bytes_to_read); - if (nread <= 0) - { - if (nread == 0) - break; - - /* Accommodate Tru64 5.1, which can't read more than INT_MAX - bytes at a time. They call that a 64-bit OS? */ - if (errno == EINVAL && INT_MAX < bytes_to_read) - { - readlim = INT_MAX; - continue; - } - - /* This is needed for programs that have signal handlers on - older hosts without SA_RESTART. It also accommodates - ancient AIX hosts that set errno to EINTR after uncaught - SIGCONT. See - (1993-04-22). */ - if (! SA_RESTART && errno == EINTR) - continue; - - return SIZE_MAX; - } - bp += nread; - } - while (bp < buflim); - - return bp - buf; -} - -/* Least common multiple of two buffer sizes A and B. However, if - either A or B is zero, or if the multiple is greater than LCM_MAX, - return a reasonable buffer size. */ - -size_t -buffer_lcm (size_t a, size_t b, size_t lcm_max) -{ - size_t lcm, m, n, q, r; - - /* Yield reasonable values if buffer sizes are zero. */ - if (!a) - return b ? b : 8 * 1024; - if (!b) - return a; - - /* n = gcd (a, b) */ - for (m = a, n = b; (r = m % n) != 0; m = n, n = r) - continue; - - /* Yield a if there is an overflow. */ - q = a / n; - lcm = q * b; - return lcm <= lcm_max && lcm / b == q ? lcm : a; -} diff --git a/src/bin/diffutils/lib/cmpbuf.h b/src/bin/diffutils/lib/cmpbuf.h deleted file mode 100644 index 9b29cd0827..0000000000 --- a/src/bin/diffutils/lib/cmpbuf.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Buffer primitives for comparison operations. - - Copyright (C) 2002 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -size_t block_read (int, char *, size_t); -size_t buffer_lcm (size_t, size_t, size_t); diff --git a/src/bin/diffutils/lib/dirname.h b/src/bin/diffutils/lib/dirname.h deleted file mode 100644 index cea14c04ff..0000000000 --- a/src/bin/diffutils/lib/dirname.h +++ /dev/null @@ -1,47 +0,0 @@ -/* Copyright (C) 1998, 2001 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifndef DIRNAME_H_ -# define DIRNAME_H_ 1 - -# ifndef PARAMS -# if defined PROTOTYPES || (defined __STDC__ && __STDC__) -# define PARAMS(Args) Args -# else -# define PARAMS(Args) () -# endif -# endif - -# ifndef DIRECTORY_SEPARATOR -# define DIRECTORY_SEPARATOR '/' -# endif - -# ifndef ISSLASH -# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR) -# endif - -# ifndef FILESYSTEM_PREFIX_LEN -# define FILESYSTEM_PREFIX_LEN(Filename) 0 -# endif - -char *base_name PARAMS ((char const *path)); -char *dir_name PARAMS ((char const *path)); -size_t base_len PARAMS ((char const *path)); -size_t dir_len PARAMS ((char const *path)); - -int strip_trailing_slashes PARAMS ((char *path)); - -#endif /* not DIRNAME_H_ */ diff --git a/src/bin/diffutils/lib/error.c b/src/bin/diffutils/lib/error.c deleted file mode 100644 index 902519ca33..0000000000 --- a/src/bin/diffutils/lib/error.c +++ /dev/null @@ -1,400 +0,0 @@ -/* Error handler for noninteractive utilities - Copyright (C) 1990-1998, 2000, 2001 Free Software Foundation, Inc. - This file is part of the GNU C Library. Its master source is NOT part of - the C library, however. The master source lives in /gd/gnu/lib. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by David MacKenzie . */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include -#if HAVE_LIBINTL_H -# include -#endif -#ifdef _LIBC -# include -# define mbsrtowcs __mbsrtowcs -#endif - -#if HAVE_VPRINTF || HAVE_DOPRNT || _LIBC -# if __STDC__ -# include -# define VA_START(args, lastarg) va_start(args, lastarg) -# else -# include -# define VA_START(args, lastarg) va_start(args) -# endif -#else -# define va_alist a1, a2, a3, a4, a5, a6, a7, a8 -# define va_dcl char *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8; -#endif - -#if STDC_HEADERS || _LIBC -# include -# include -#else -void exit (); -#endif - -#include "error.h" -#include "unlocked-io.h" - -#ifndef _ -# define _(String) String -#endif - -/* If NULL, error will flush stdout, then print on stderr the program - name, a colon and a space. Otherwise, error will call this - function without parameters instead. */ -void (*error_print_progname) ( -#if __STDC__ - 0 - void -#endif - ); - -/* This variable is incremented each time `error' is called. */ -unsigned int error_message_count; - -#ifdef _LIBC -/* In the GNU C library, there is a predefined variable for this. */ - -# define program_name program_invocation_name -# include - -/* In GNU libc we want do not want to use the common name `error' directly. - Instead make it a weak alias. */ -extern void __error (int status, int errnum, const char *message, ...) - __attribute__ ((__format__ (__printf__, 3, 4))); -extern void __error_at_line (int status, int errnum, const char *file_name, - unsigned int line_number, const char *message, - ...) - __attribute__ ((__format__ (__printf__, 5, 6)));; -# define error __error -# define error_at_line __error_at_line - -# ifdef USE_IN_LIBIO -# include -# define fflush(s) _IO_fflush (s) -# endif - -#else /* not _LIBC */ - -# if !HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P -# ifndef HAVE_DECL_STRERROR_R -"this configure-time declaration test was not run" -# endif -char *strerror_r (); -# endif - -/* The calling program should define program_name and set it to the - name of the executing program. */ -extern char *program_name; - -# if HAVE_STRERROR_R || defined strerror_r -# define __strerror_r strerror_r -# else -# if HAVE_STRERROR -# ifndef HAVE_DECL_STRERROR -"this configure-time declaration test was not run" -# endif -# if !HAVE_DECL_STRERROR -char *strerror (); -# endif -# else -static char * -private_strerror (int errnum) -{ - extern char *sys_errlist[]; - extern int sys_nerr; - - if (errnum > 0 && errnum <= sys_nerr) - return _(sys_errlist[errnum]); - return _("Unknown system error"); -} -# define strerror private_strerror -# endif /* HAVE_STRERROR */ -# endif /* HAVE_STRERROR_R || defined strerror_r */ -#endif /* not _LIBC */ - -static void -print_errno_message (int errnum) -{ - char const *s; - -#if defined HAVE_STRERROR_R || _LIBC - char errbuf[1024]; -# if STRERROR_R_CHAR_P || _LIBC - s = __strerror_r (errnum, errbuf, sizeof errbuf); -# else - if (__strerror_r (errnum, errbuf, sizeof errbuf) == 0) - s = errbuf; - else - s = 0; -# endif -#else - s = strerror (errnum); -#endif - -#if !_LIBC - if (! s) - s = _("Unknown system error"); -#endif - -#if _LIBC && USE_IN_LIBIO - if (_IO_fwide (stderr, 0) > 0) - { - __fwprintf (stderr, L": %s", s); - return; - } -#endif - - fprintf (stderr, ": %s", s); -} - -#ifdef VA_START -static void -error_tail (int status, int errnum, const char *message, va_list args) -{ -# if HAVE_VPRINTF || _LIBC -# if _LIBC && USE_IN_LIBIO - if (_IO_fwide (stderr, 0) > 0) - { -# define ALLOCA_LIMIT 2000 - size_t len = strlen (message) + 1; - wchar_t *wmessage = NULL; - mbstate_t st; - size_t res; - const char *tmp; - - do - { - if (len < ALLOCA_LIMIT) - wmessage = (wchar_t *) alloca (len * sizeof (wchar_t)); - else - { - if (wmessage != NULL && len / 2 < ALLOCA_LIMIT) - wmessage = NULL; - - wmessage = (wchar_t *) realloc (wmessage, - len * sizeof (wchar_t)); - - if (wmessage == NULL) - { - fputws_unlocked (L"out of memory\n", stderr); - return; - } - } - - memset (&st, '\0', sizeof (st)); - tmp =message; - } - while ((res = mbsrtowcs (wmessage, &tmp, len, &st)) == len); - - if (res == (size_t) -1) - /* The string cannot be converted. */ - wmessage = (wchar_t *) L"???"; - - __vfwprintf (stderr, wmessage, args); - } - else -# endif - vfprintf (stderr, message, args); -# else - _doprnt (message, args, stderr); -# endif - va_end (args); - - ++error_message_count; - if (errnum) - print_errno_message (errnum); -# if _LIBC && USE_IN_LIBIO - if (_IO_fwide (stderr, 0) > 0) - putwc (L'\n', stderr); - else -# endif - putc ('\n', stderr); - fflush (stderr); - if (status) - exit (status); -} -#endif - - -/* Print the program name and error message MESSAGE, which is a printf-style - format string with optional args. - If ERRNUM is nonzero, print its corresponding system error message. - Exit with status STATUS if it is nonzero. */ -/* VARARGS */ -void -#if defined VA_START && __STDC__ -error (int status, int errnum, const char *message, ...) -#else -error (status, errnum, message, va_alist) - int status; - int errnum; - char *message; - va_dcl -#endif -{ -#ifdef VA_START - va_list args; -#endif - - fflush (stdout); -#ifdef _LIBC -# ifdef USE_IN_LIBIO - _IO_flockfile (stderr); -# else - __flockfile (stderr); -# endif -#endif - if (error_print_progname) - (*error_print_progname) (); - else - { -#if _LIBC && USE_IN_LIBIO - if (_IO_fwide (stderr, 0) > 0) - __fwprintf (stderr, L"%s: ", program_name); - else -#endif - fprintf (stderr, "%s: ", program_name); - } - -#ifdef VA_START - VA_START (args, message); - error_tail (status, errnum, message, args); -#else - fprintf (stderr, message, a1, a2, a3, a4, a5, a6, a7, a8); - - ++error_message_count; - if (errnum) - print_errno_message (errnum); - putc ('\n', stderr); - fflush (stderr); - if (status) - exit (status); -#endif - -#ifdef _LIBC -# ifdef USE_IN_LIBIO - _IO_funlockfile (stderr); -# else - __funlockfile (stderr); -# endif -#endif -} - -/* Sometimes we want to have at most one error per line. This - variable controls whether this mode is selected or not. */ -int error_one_per_line; - -void -#if defined VA_START && __STDC__ -error_at_line (int status, int errnum, const char *file_name, - unsigned int line_number, const char *message, ...) -#else -error_at_line (status, errnum, file_name, line_number, message, va_alist) - int status; - int errnum; - const char *file_name; - unsigned int line_number; - char *message; - va_dcl -#endif -{ -#ifdef VA_START - va_list args; -#endif - - if (error_one_per_line) - { - static const char *old_file_name; - static unsigned int old_line_number; - - if (old_line_number == line_number - && (file_name == old_file_name - || strcmp (old_file_name, file_name) == 0)) - /* Simply return and print nothing. */ - return; - - old_file_name = file_name; - old_line_number = line_number; - } - - fflush (stdout); -#ifdef _LIBC -# ifdef USE_IN_LIBIO - _IO_flockfile (stderr); -# else - __flockfile (stderr); -# endif -#endif - if (error_print_progname) - (*error_print_progname) (); - else - { -#if _LIBC && USE_IN_LIBIO - if (_IO_fwide (stderr, 0) > 0) - __fwprintf (stderr, L"%s: ", program_name); - else -#endif - fprintf (stderr, "%s:", program_name); - } - - if (file_name != NULL) - { -#if _LIBC && USE_IN_LIBIO - if (_IO_fwide (stderr, 0) > 0) - __fwprintf (stderr, L"%s:%d: ", file_name, line_number); - else -#endif - fprintf (stderr, "%s:%d: ", file_name, line_number); - } - -#ifdef VA_START - VA_START (args, message); - error_tail (status, errnum, message, args); -#else - fprintf (stderr, message, a1, a2, a3, a4, a5, a6, a7, a8); - - ++error_message_count; - if (errnum) - print_errno_message (errnum); - putc ('\n', stderr); - fflush (stderr); - if (status) - exit (status); -#endif - -#ifdef _LIBC -# ifdef USE_IN_LIBIO - _IO_funlockfile (stderr); -# else - __funlockfile (stderr); -# endif -#endif -} - -#ifdef _LIBC -/* Make the weak alias. */ -# undef error -# undef error_at_line -weak_alias (__error, error) -weak_alias (__error_at_line, error_at_line) -#endif diff --git a/src/bin/diffutils/lib/error.h b/src/bin/diffutils/lib/error.h deleted file mode 100644 index 177b2dcbe8..0000000000 --- a/src/bin/diffutils/lib/error.h +++ /dev/null @@ -1,78 +0,0 @@ -/* Declaration for error-reporting function - Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. - - - NOTE: The canonical source of this file is maintained with the GNU C Library. - Bugs can be reported to bug-glibc@prep.ai.mit.edu. - - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, - USA. */ - -#ifndef _ERROR_H -#define _ERROR_H 1 - -#ifndef __attribute__ -/* This feature is available in gcc versions 2.5 and later. */ -# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) -# define __attribute__(Spec) /* empty */ -# endif -/* The __-protected variants of `format' and `printf' attributes - are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */ -# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) -# define __format__ format -# define __printf__ printf -# endif -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#if defined (__STDC__) && __STDC__ - -/* Print a message with `fprintf (stderr, FORMAT, ...)'; - if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM). - If STATUS is nonzero, terminate the program with `exit (STATUS)'. */ - -extern void error (int status, int errnum, const char *format, ...) - __attribute__ ((__format__ (__printf__, 3, 4))); - -extern void error_at_line (int status, int errnum, const char *fname, - unsigned int lineno, const char *format, ...) - __attribute__ ((__format__ (__printf__, 5, 6))); - -/* If NULL, error will flush stdout, then print on stderr the program - name, a colon and a space. Otherwise, error will call this - function without parameters instead. */ -extern void (*error_print_progname) (void); - -#else -void error (); -void error_at_line (); -extern void (*error_print_progname) (); -#endif - -/* This variable is incremented each time `error' is called. */ -extern unsigned int error_message_count; - -/* Sometimes we want to have at most one error per line. This - variable controls whether this mode is selected or not. */ -extern int error_one_per_line; - -#ifdef __cplusplus -} -#endif - -#endif /* error.h */ diff --git a/src/bin/diffutils/lib/exclude.c b/src/bin/diffutils/lib/exclude.c deleted file mode 100644 index 35f9f0d194..0000000000 --- a/src/bin/diffutils/lib/exclude.c +++ /dev/null @@ -1,268 +0,0 @@ -/* exclude.c -- exclude file names - - Copyright 1992, 1993, 1994, 1997, 1999, 2000, 2001 Free Software - Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by Paul Eggert */ - -#if HAVE_CONFIG_H -# include -#endif - -#if HAVE_STDBOOL_H -# include -#else -typedef enum {false = 0, true = 1} bool; -#endif - -#include -#ifndef errno -extern int errno; -#endif -#include -#if HAVE_SYS_TYPES_H -# include -#endif -#if HAVE_STDLIB_H -# include -#endif -#if HAVE_STRING_H -# include -#endif -#if HAVE_STRINGS_H -# include -#endif -#if HAVE_INTTYPES_H -# include -#else -# if HAVE_STDINT_H -# include -# endif -#endif - -#include "exclude.h" -#include "fnmatch.h" -#include "unlocked-io.h" -#include "xalloc.h" - -#ifndef SIZE_MAX -# define SIZE_MAX ((size_t) -1) -#endif - -/* Verify a requirement at compile-time (unlike assert, which is runtime). */ -#define verify(name, assertion) struct name { char a[(assertion) ? 1 : -1]; } - -verify (EXCLUDE_macros_do_not_collide_with_FNM_macros, - (((EXCLUDE_ANCHORED | EXCLUDE_INCLUDE | EXCLUDE_WILDCARDS) - & (FNM_FILE_NAME | FNM_NOESCAPE | FNM_PERIOD | FNM_LEADING_DIR - | FNM_CASEFOLD)) - == 0)); - -/* An exclude pattern-options pair. The options are fnmatch options - ORed with EXCLUDE_* options. */ - -struct patopts - { - char const *pattern; - int options; - }; - -/* An exclude list, of pattern-options pairs. */ - -struct exclude - { - struct patopts *exclude; - size_t exclude_alloc; - size_t exclude_count; - }; - -/* Return a newly allocated and empty exclude list. */ - -struct exclude * -new_exclude (void) -{ - struct exclude *ex = (struct exclude *) xmalloc (sizeof *ex); - ex->exclude_count = 0; - ex->exclude_alloc = (1 << 6); /* This must be a power of 2. */ - ex->exclude = (struct patopts *) xmalloc (ex->exclude_alloc - * sizeof ex->exclude[0]); - return ex; -} - -/* Free the storage associated with an exclude list. */ - -void -free_exclude (struct exclude *ex) -{ - free (ex->exclude); - free (ex); -} - -/* Return zero if PATTERN matches F, obeying OPTIONS, except that - (unlike fnmatch) wildcards are disabled in PATTERN. */ - -static int -fnmatch_no_wildcards (char const *pattern, char const *f, int options) -{ - if (! (options & FNM_LEADING_DIR)) - return ((options & FNM_CASEFOLD) - ? strcasecmp (pattern, f) - : strcmp (pattern, f)); - else - { - size_t patlen = strlen (pattern); - int r = ((options & FNM_CASEFOLD) - ? strncasecmp (pattern, f, patlen) - : strncmp (pattern, f, patlen)); - if (! r) - { - r = f[patlen]; - if (r == '/') - r = 0; - } - return r; - } -} - -/* Return true if EX excludes F. */ - -bool -excluded_filename (struct exclude const *ex, char const *f) -{ - size_t exclude_count = ex->exclude_count; - - /* If no options are given, the default is to include. */ - if (exclude_count == 0) - return false; - else - { - struct patopts const *exclude = ex->exclude; - size_t i; - - /* Otherwise, the default is the opposite of the first option. */ - bool excluded = !! (exclude[0].options & EXCLUDE_INCLUDE); - - /* Scan through the options, seeing whether they change F from - excluded to included or vice versa. */ - for (i = 0; i < exclude_count; i++) - { - char const *pattern = exclude[i].pattern; - int options = exclude[i].options; - if (excluded == !! (options & EXCLUDE_INCLUDE)) - { - int (*matcher) PARAMS ((char const *, char const *, int)) = - (options & EXCLUDE_WILDCARDS - ? fnmatch - : fnmatch_no_wildcards); - bool matched = ((*matcher) (pattern, f, options) == 0); - char const *p; - - if (! (options & EXCLUDE_ANCHORED)) - for (p = f; *p && ! matched; p++) - if (*p == '/' && p[1] != '/') - matched = ((*matcher) (pattern, p + 1, options) == 0); - - excluded ^= matched; - } - } - - return excluded; - } -} - -/* Append to EX the exclusion PATTERN with OPTIONS. */ - -void -add_exclude (struct exclude *ex, char const *pattern, int options) -{ - struct patopts *patopts; - - if (ex->exclude_alloc <= ex->exclude_count) - { - size_t s = 2 * ex->exclude_alloc; - if (! (0 < s && s <= SIZE_MAX / sizeof ex->exclude[0])) - xalloc_die (); - ex->exclude_alloc = s; - ex->exclude = (struct patopts *) xrealloc (ex->exclude, - s * sizeof ex->exclude[0]); - } - - patopts = &ex->exclude[ex->exclude_count++]; - patopts->pattern = pattern; - patopts->options = options; -} - -/* Use ADD_FUNC to append to EX the patterns in FILENAME, each with - OPTIONS. LINE_END terminates each pattern in the file. Return -1 - on failure, 0 on success. */ - -int -add_exclude_file (void (*add_func) PARAMS ((struct exclude *, - char const *, int)), - struct exclude *ex, char const *filename, int options, - char line_end) -{ - bool use_stdin = filename[0] == '-' && !filename[1]; - FILE *in; - char *buf; - char *p; - char const *pattern; - char const *lim; - size_t buf_alloc = (1 << 10); /* This must be a power of two. */ - size_t buf_count = 0; - int c; - int e = 0; - - if (use_stdin) - in = stdin; - else if (! (in = fopen (filename, "r"))) - return -1; - - buf = xmalloc (buf_alloc); - - while ((c = getc (in)) != EOF) - { - buf[buf_count++] = c; - if (buf_count == buf_alloc) - { - buf_alloc *= 2; - if (! buf_alloc) - xalloc_die (); - buf = xrealloc (buf, buf_alloc); - } - } - - if (ferror (in)) - e = errno; - - if (!use_stdin && fclose (in) != 0) - e = errno; - - buf = xrealloc (buf, buf_count + 1); - - for (pattern = p = buf, lim = buf + buf_count; p <= lim; p++) - if (p < lim ? *p == line_end : buf < p && p[-1]) - { - *p = '\0'; - (*add_func) (ex, pattern, options); - pattern = p + 1; - } - - errno = e; - return e ? -1 : 0; -} diff --git a/src/bin/diffutils/lib/exclude.h b/src/bin/diffutils/lib/exclude.h deleted file mode 100644 index 54c33ef60d..0000000000 --- a/src/bin/diffutils/lib/exclude.h +++ /dev/null @@ -1,49 +0,0 @@ -/* exclude.h -- declarations for excluding file names - Copyright 1992, 1993, 1994, 1997, 1999, 2001 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by Paul Eggert */ - -#ifndef PARAMS -# if defined PROTOTYPES || (defined __STDC__ && __STDC__) -# define PARAMS(Args) Args -# else -# define PARAMS(Args) () -# endif -#endif - -/* Exclude options, which can be ORed with fnmatch options. */ - -/* Patterns must match the start of file names, instead of matching - anywhere after a '/'. */ -#define EXCLUDE_ANCHORED (1 << 5) - -/* Include instead of exclude. */ -#define EXCLUDE_INCLUDE (1 << 6) - -/* '?', '*', '[', and '\\' are special in patterns. Without this - option, these characters are ordinary and fnmatch is not used. */ -#define EXCLUDE_WILDCARDS (1 << 7) - -struct exclude; - -struct exclude *new_exclude PARAMS ((void)); -void free_exclude PARAMS ((struct exclude *)); -void add_exclude PARAMS ((struct exclude *, char const *, int)); -int add_exclude_file PARAMS ((void (*) (struct exclude *, char const *, int), - struct exclude *, char const *, int, char)); -bool excluded_filename PARAMS ((struct exclude const *, char const *)); diff --git a/src/bin/diffutils/lib/exitfail.c b/src/bin/diffutils/lib/exitfail.c deleted file mode 100644 index eec8234ff1..0000000000 --- a/src/bin/diffutils/lib/exitfail.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Failure exit status - - Copyright (C) 2002 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#if HAVE_CONFIG_H -# include -#endif - -#if HAVE_STDLIB_H -# include -#endif -#ifndef EXIT_FAILURE -# define EXIT_FAILURE 1 -#endif - -int volatile exit_failure = EXIT_FAILURE; diff --git a/src/bin/diffutils/lib/exitfail.h b/src/bin/diffutils/lib/exitfail.h deleted file mode 100644 index cf5ab71958..0000000000 --- a/src/bin/diffutils/lib/exitfail.h +++ /dev/null @@ -1,20 +0,0 @@ -/* Failure exit status - - Copyright (C) 2002 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -extern int volatile exit_failure; diff --git a/src/bin/diffutils/lib/fnmatch.c b/src/bin/diffutils/lib/fnmatch.c deleted file mode 100644 index 9bff8c220a..0000000000 --- a/src/bin/diffutils/lib/fnmatch.c +++ /dev/null @@ -1,230 +0,0 @@ -/* Copyright 1991, 1992, 1993, 1996, 1997, 2000 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#if HAVE_CONFIG_H -# include -#endif - -/* Enable GNU extensions in fnmatch.h. */ -#ifndef _GNU_SOURCE -# define _GNU_SOURCE 1 -#endif - -#include -#include -#include - -#if defined STDC_HEADERS || !defined isascii -# define IN_CTYPE_DOMAIN(c) 1 -#else -# define IN_CTYPE_DOMAIN(c) isascii (c) -#endif - -#define ISUPPER(c) (IN_CTYPE_DOMAIN (c) && isupper (c)) - - -#ifndef errno -extern int errno; -#endif - -/* Match STRING against the filename pattern PATTERN, returning zero if - it matches, nonzero if not. */ -int -fnmatch (const char *pattern, const char *string, int flags) -{ - register const char *p = pattern, *n = string; - register char c; - -/* Note that this evaluates C many times. */ -#define FOLD(c) ((flags & FNM_CASEFOLD) && ISUPPER ((unsigned char) (c)) \ - ? tolower ((unsigned char) (c)) \ - : (c)) - - while ((c = *p++) != '\0') - { - c = FOLD (c); - - switch (c) - { - case '?': - if (*n == '\0') - return FNM_NOMATCH; - else if ((flags & FNM_FILE_NAME) && *n == '/') - return FNM_NOMATCH; - else if ((flags & FNM_PERIOD) && *n == '.' && - (n == string || ((flags & FNM_FILE_NAME) && n[-1] == '/'))) - return FNM_NOMATCH; - break; - - case '\\': - if (!(flags & FNM_NOESCAPE)) - { - c = *p++; - if (c == '\0') - /* Trailing \ loses. */ - return FNM_NOMATCH; - c = FOLD (c); - } - if (FOLD (*n) != c) - return FNM_NOMATCH; - break; - - case '*': - if ((flags & FNM_PERIOD) && *n == '.' && - (n == string || ((flags & FNM_FILE_NAME) && n[-1] == '/'))) - return FNM_NOMATCH; - - for (c = *p++; c == '?' || c == '*'; c = *p++) - { - if (c == '?') - { - /* A ? needs to match one character. */ - if (*n == '\0' || (*n == '/' && (flags & FNM_FILE_NAME))) - /* There isn't another character; no match. */ - return FNM_NOMATCH; - else - /* One character of the string is consumed in matching - this ? wildcard, so *??? won't match if there are - less than three characters. */ - ++n; - } - } - - if (c == '\0') - { - if ((flags & (FNM_FILE_NAME | FNM_LEADING_DIR)) == FNM_FILE_NAME) - for (; *n != '\0'; n++) - if (*n == '/') - return FNM_NOMATCH; - return 0; - } - - { - char c1 = (!(flags & FNM_NOESCAPE) && c == '\\') ? *p : c; - c1 = FOLD (c1); - for (--p; *n != '\0'; ++n) - if ((c == '[' || FOLD (*n) == c1) && - fnmatch (p, n, flags & ~FNM_PERIOD) == 0) - return 0; - else if (*n == '/' && (flags & FNM_FILE_NAME)) - break; - return FNM_NOMATCH; - } - - case '[': - { - /* Nonzero if the sense of the character class is inverted. */ - register int not; - - if (*n == '\0') - return FNM_NOMATCH; - - if ((flags & FNM_PERIOD) && *n == '.' && - (n == string || ((flags & FNM_FILE_NAME) && n[-1] == '/'))) - return FNM_NOMATCH; - - not = (*p == '!' || *p == '^'); - if (not) - ++p; - - c = *p++; - for (;;) - { - register char cstart = c, cend = c; - - if (!(flags & FNM_NOESCAPE) && c == '\\') - { - if (*p == '\0') - return FNM_NOMATCH; - cstart = cend = *p++; - } - - cstart = cend = FOLD (cstart); - - if (c == '\0') - /* [ (unterminated) loses. */ - return FNM_NOMATCH; - - c = *p++; - c = FOLD (c); - - if ((flags & FNM_FILE_NAME) && c == '/') - /* [/] can never match. */ - return FNM_NOMATCH; - - if (c == '-' && *p != ']') - { - cend = *p++; - if (!(flags & FNM_NOESCAPE) && cend == '\\') - cend = *p++; - if (cend == '\0') - return FNM_NOMATCH; - cend = FOLD (cend); - - c = *p++; - } - - if (FOLD (*n) >= cstart && FOLD (*n) <= cend) - goto matched; - - if (c == ']') - break; - } - if (!not) - return FNM_NOMATCH; - break; - - matched:; - /* Skip the rest of the [...] that already matched. */ - while (c != ']') - { - if (c == '\0') - /* [... (unterminated) loses. */ - return FNM_NOMATCH; - - c = *p++; - if (!(flags & FNM_NOESCAPE) && c == '\\') - { - if (*p == '\0') - return FNM_NOMATCH; - /* XXX 1003.2d11 is unclear if this is right. */ - ++p; - } - } - if (not) - return FNM_NOMATCH; - } - break; - - default: - if (c != FOLD (*n)) - return FNM_NOMATCH; - } - - ++n; - } - - if (*n == '\0') - return 0; - - if ((flags & FNM_LEADING_DIR) && *n == '/') - /* The FNM_LEADING_DIR flag says that "foo*" matches "foobar/frobozz". */ - return 0; - - return FNM_NOMATCH; - -#undef FOLD -} diff --git a/src/bin/diffutils/lib/fnmatch.hin b/src/bin/diffutils/lib/fnmatch.hin deleted file mode 100644 index af1dcf523b..0000000000 --- a/src/bin/diffutils/lib/fnmatch.hin +++ /dev/null @@ -1,69 +0,0 @@ -/* Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc. - -NOTE: The canonical source of this file is maintained with the GNU C Library. -Bugs can be reported to bug-glibc@prep.ai.mit.edu. - -This program is free software; you can redistribute it and/or modify it -under the terms of the GNU General Public License as published by the -Free Software Foundation; either version 2, or (at your option) any -later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software Foundation, -Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifndef _FNMATCH_H - -#define _FNMATCH_H 1 - -#ifdef __cplusplus -extern "C" { -#endif - -#if defined (__cplusplus) || (defined (__STDC__) && __STDC__) -#undef __P -#define __P(protos) protos -#else /* Not C++ or ANSI C. */ -#undef __P -#define __P(protos) () -/* We can get away without defining `const' here only because in this file - it is used only inside the prototype for `fnmatch', which is elided in - non-ANSI C where `const' is problematical. */ -#endif /* C++ or ANSI C. */ - - -/* We #undef these before defining them because some losing systems - (HP-UX A.08.07 for example) define these in . */ -#undef FNM_PATHNAME -#undef FNM_NOESCAPE -#undef FNM_PERIOD - -/* Bits set in the FLAGS argument to `fnmatch'. */ -#define FNM_PATHNAME (1 << 0) /* No wildcard can ever match `/'. */ -#define FNM_NOESCAPE (1 << 1) /* Backslashes don't quote special chars. */ -#define FNM_PERIOD (1 << 2) /* Leading `.' is matched only explicitly. */ - -#if !defined (_POSIX_C_SOURCE) || _POSIX_C_SOURCE < 2 || defined (_GNU_SOURCE) -#define FNM_FILE_NAME FNM_PATHNAME /* Preferred GNU name. */ -#define FNM_LEADING_DIR (1 << 3) /* Ignore `/...' after a match. */ -#define FNM_CASEFOLD (1 << 4) /* Compare without regard to case. */ -#endif - -/* Value returned by `fnmatch' if STRING does not match PATTERN. */ -#define FNM_NOMATCH 1 - -/* Match STRING against the filename pattern PATTERN, - returning zero if it matches, FNM_NOMATCH if not. */ -extern int fnmatch __P ((const char *__pattern, const char *__string, - int __flags)); - -#ifdef __cplusplus -} -#endif - -#endif /* fnmatch.h */ diff --git a/src/bin/diffutils/lib/freesoft.c b/src/bin/diffutils/lib/freesoft.c deleted file mode 100644 index af2458fbaa..0000000000 --- a/src/bin/diffutils/lib/freesoft.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Free software message ID. - - Copyright (C) 2001 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#if HAVE_CONFIG_H -# include -#endif - -#include "freesoft.h" - -#define N_(Text) Text - -char const free_software_msgid[] = N_("\ -This program comes with NO WARRANTY, to the extent permitted by law.\n\ -You may redistribute copies of this program\n\ -under the terms of the GNU General Public License.\n\ -For more information about these matters, see the file named COPYING."); diff --git a/src/bin/diffutils/lib/freesoft.h b/src/bin/diffutils/lib/freesoft.h deleted file mode 100644 index 941eb920b2..0000000000 --- a/src/bin/diffutils/lib/freesoft.h +++ /dev/null @@ -1 +0,0 @@ -extern char const free_software_msgid[]; diff --git a/src/bin/diffutils/lib/getopt.c b/src/bin/diffutils/lib/getopt.c deleted file mode 100644 index ed32692933..0000000000 --- a/src/bin/diffutils/lib/getopt.c +++ /dev/null @@ -1,1067 +0,0 @@ -/* Getopt for GNU. - NOTE: getopt is now part of the C library, so if you don't know what - "Keep this file name-space clean" means, talk to drepper@gnu.org - before changing it! - Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* This tells Alpha OSF/1 not to define a getopt prototype in . - Ditto for AIX 3.2 and . */ -#ifndef _NO_PROTO -# define _NO_PROTO -#endif - -#ifdef HAVE_CONFIG_H -# include -#endif - -#if !defined __STDC__ || !__STDC__ -/* This is a separate conditional since some stdc systems - reject `defined (const)'. */ -# ifndef const -# define const -# endif -#endif - -#include - -/* Comment out all this code if we are using the GNU C Library, and are not - actually compiling the library itself. This code is part of the GNU C - Library, but also included in many other GNU distributions. Compiling - and linking in this code is a waste when using the GNU C library - (especially if it is a shared library). Rather than having every GNU - program understand `configure --with-gnu-libc' and omit the object files, - it is simpler to just do this in the source for each such file. */ - -#define GETOPT_INTERFACE_VERSION 2 -#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2 -# include -# if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION -# define ELIDE_CODE -# endif -#endif - -#ifndef ELIDE_CODE - - -/* This needs to come after some library #include - to get __GNU_LIBRARY__ defined. */ -#ifdef __GNU_LIBRARY__ -/* Don't include stdlib.h for non-GNU C libraries because some of them - contain conflicting prototypes for getopt. */ -# include -# include -#endif /* GNU C library. */ - -#ifdef VMS -# include -# if HAVE_STRING_H - 0 -# include -# endif -#endif - -#ifndef _ -/* This is for other GNU distributions with internationalized messages. */ -# if (HAVE_LIBINTL_H && ENABLE_NLS) || defined _LIBC -# include -# ifndef _ -# define _(msgid) gettext (msgid) -# endif -# else -# define _(msgid) (msgid) -# endif -#endif - -/* This version of `getopt' appears to the caller like standard Unix `getopt' - but it behaves differently for the user, since it allows the user - to intersperse the options with the other arguments. - - As `getopt' works, it permutes the elements of ARGV so that, - when it is done, all the options precede everything else. Thus - all application programs are extended to handle flexible argument order. - - Setting the environment variable POSIXLY_CORRECT disables permutation. - Then the behavior is completely standard. - - GNU application programs can use a third alternative mode in which - they can distinguish the relative order of options and other arguments. */ - -#include "getopt.h" - -/* For communication from `getopt' to the caller. - When `getopt' finds an option that takes an argument, - the argument value is returned here. - Also, when `ordering' is RETURN_IN_ORDER, - each non-option ARGV-element is returned here. */ - -char *optarg; - -/* Index in ARGV of the next element to be scanned. - This is used for communication to and from the caller - and for communication between successive calls to `getopt'. - - On entry to `getopt', zero means this is the first call; initialize. - - When `getopt' returns -1, this is the index of the first of the - non-option elements that the caller should itself scan. - - Otherwise, `optind' communicates from one call to the next - how much of ARGV has been scanned so far. */ - -/* 1003.2 says this must be 1 before any call. */ -int optind = 1; - -/* Formerly, initialization of getopt depended on optind==0, which - causes problems with re-calling getopt as programs generally don't - know that. */ - -int __getopt_initialized; - -/* The next char to be scanned in the option-element - in which the last option character we returned was found. - This allows us to pick up the scan where we left off. - - If this is zero, or a null string, it means resume the scan - by advancing to the next ARGV-element. */ - -static char *nextchar; - -/* Callers store zero here to inhibit the error message - for unrecognized options. */ - -int opterr = 1; - -/* Set to an option character which was unrecognized. - This must be initialized on some systems to avoid linking in the - system's own getopt implementation. */ - -int optopt = '?'; - -/* Describe how to deal with options that follow non-option ARGV-elements. - - If the caller did not specify anything, - the default is REQUIRE_ORDER if the environment variable - POSIXLY_CORRECT is defined, PERMUTE otherwise. - - REQUIRE_ORDER means don't recognize them as options; - stop option processing when the first non-option is seen. - This is what Unix does. - This mode of operation is selected by either setting the environment - variable POSIXLY_CORRECT, or using `+' as the first character - of the list of option characters. - - PERMUTE is the default. We permute the contents of ARGV as we scan, - so that eventually all the non-options are at the end. This allows options - to be given in any order, even with programs that were not written to - expect this. - - RETURN_IN_ORDER is an option available to programs that were written - to expect options and other ARGV-elements in any order and that care about - the ordering of the two. We describe each non-option ARGV-element - as if it were the argument of an option with character code 1. - Using `-' as the first character of the list of option characters - selects this mode of operation. - - The special argument `--' forces an end of option-scanning regardless - of the value of `ordering'. In the case of RETURN_IN_ORDER, only - `--' can cause `getopt' to return -1 with `optind' != ARGC. */ - -static enum -{ - REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER -} ordering; - -/* Value of POSIXLY_CORRECT environment variable. */ -static char *posixly_correct; - -#ifdef __GNU_LIBRARY__ -/* We want to avoid inclusion of string.h with non-GNU libraries - because there are many ways it can cause trouble. - On some systems, it contains special magic macros that don't work - in GCC. */ -# include -# define my_index strchr -#else - -# if HAVE_STRING_H -# include -# else -# include -# endif - -/* Avoid depending on library functions or files - whose names are inconsistent. */ - -#ifndef getenv -extern char *getenv (); -#endif - -static char * -my_index (str, chr) - const char *str; - int chr; -{ - while (*str) - { - if (*str == chr) - return (char *) str; - str++; - } - return 0; -} - -/* If using GCC, we can safely declare strlen this way. - If not using GCC, it is ok not to declare it. */ -#ifdef __GNUC__ -/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h. - That was relevant to code that was here before. */ -# if (!defined __STDC__ || !__STDC__) && !defined strlen -/* gcc with -traditional declares the built-in strlen to return int, - and has done so at least since version 2.4.5. -- rms. */ -extern int strlen (const char *); -# endif /* not __STDC__ */ -#endif /* __GNUC__ */ - -#endif /* not __GNU_LIBRARY__ */ - -/* Handle permutation of arguments. */ - -/* Describe the part of ARGV that contains non-options that have - been skipped. `first_nonopt' is the index in ARGV of the first of them; - `last_nonopt' is the index after the last of them. */ - -static int first_nonopt; -static int last_nonopt; - -#ifdef _LIBC -/* Bash 2.0 gives us an environment variable containing flags - indicating ARGV elements that should not be considered arguments. */ - -#ifdef USE_NONOPTION_FLAGS -/* Defined in getopt_init.c */ -extern char *__getopt_nonoption_flags; - -static int nonoption_flags_max_len; -static int nonoption_flags_len; -#endif - -static int original_argc; -static char *const *original_argv; - -/* Make sure the environment variable bash 2.0 puts in the environment - is valid for the getopt call we must make sure that the ARGV passed - to getopt is that one passed to the process. */ -static void -__attribute__ ((unused)) -store_args_and_env (int argc, char *const *argv) -{ - /* XXX This is no good solution. We should rather copy the args so - that we can compare them later. But we must not use malloc(3). */ - original_argc = argc; - original_argv = argv; -} -# ifdef text_set_element -text_set_element (__libc_subinit, store_args_and_env); -# endif /* text_set_element */ - -# ifdef USE_NONOPTION_FLAGS -# define SWAP_FLAGS(ch1, ch2) \ - if (nonoption_flags_len > 0) \ - { \ - char __tmp = __getopt_nonoption_flags[ch1]; \ - __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \ - __getopt_nonoption_flags[ch2] = __tmp; \ - } -# else -# define SWAP_FLAGS(ch1, ch2) -# endif -#else /* !_LIBC */ -# define SWAP_FLAGS(ch1, ch2) -#endif /* _LIBC */ - -/* Exchange two adjacent subsequences of ARGV. - One subsequence is elements [first_nonopt,last_nonopt) - which contains all the non-options that have been skipped so far. - The other is elements [last_nonopt,optind), which contains all - the options processed since those non-options were skipped. - - `first_nonopt' and `last_nonopt' are relocated so that they describe - the new indices of the non-options in ARGV after they are moved. */ - -#if defined __STDC__ && __STDC__ -static void exchange (char **); -#endif - -static void -exchange (argv) - char **argv; -{ - int bottom = first_nonopt; - int middle = last_nonopt; - int top = optind; - char *tem; - - /* Exchange the shorter segment with the far end of the longer segment. - That puts the shorter segment into the right place. - It leaves the longer segment in the right place overall, - but it consists of two parts that need to be swapped next. */ - -#if defined _LIBC && defined USE_NONOPTION_FLAGS - /* First make sure the handling of the `__getopt_nonoption_flags' - string can work normally. Our top argument must be in the range - of the string. */ - if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len) - { - /* We must extend the array. The user plays games with us and - presents new arguments. */ - char *new_str = malloc (top + 1); - if (new_str == NULL) - nonoption_flags_len = nonoption_flags_max_len = 0; - else - { - memset (__mempcpy (new_str, __getopt_nonoption_flags, - nonoption_flags_max_len), - '\0', top + 1 - nonoption_flags_max_len); - nonoption_flags_max_len = top + 1; - __getopt_nonoption_flags = new_str; - } - } -#endif - - while (top > middle && middle > bottom) - { - if (top - middle > middle - bottom) - { - /* Bottom segment is the short one. */ - int len = middle - bottom; - register int i; - - /* Swap it with the top part of the top segment. */ - for (i = 0; i < len; i++) - { - tem = argv[bottom + i]; - argv[bottom + i] = argv[top - (middle - bottom) + i]; - argv[top - (middle - bottom) + i] = tem; - SWAP_FLAGS (bottom + i, top - (middle - bottom) + i); - } - /* Exclude the moved bottom segment from further swapping. */ - top -= len; - } - else - { - /* Top segment is the short one. */ - int len = top - middle; - register int i; - - /* Swap it with the bottom part of the bottom segment. */ - for (i = 0; i < len; i++) - { - tem = argv[bottom + i]; - argv[bottom + i] = argv[middle + i]; - argv[middle + i] = tem; - SWAP_FLAGS (bottom + i, middle + i); - } - /* Exclude the moved top segment from further swapping. */ - bottom += len; - } - } - - /* Update records for the slots the non-options now occupy. */ - - first_nonopt += (optind - last_nonopt); - last_nonopt = optind; -} - -/* Initialize the internal data when the first call is made. */ - -#if defined __STDC__ && __STDC__ -static const char *_getopt_initialize (int, char *const *, const char *); -#endif -static const char * -_getopt_initialize (argc, argv, optstring) - int argc; - char *const *argv; - const char *optstring; -{ - /* Start processing options with ARGV-element 1 (since ARGV-element 0 - is the program name); the sequence of previously skipped - non-option ARGV-elements is empty. */ - - first_nonopt = last_nonopt = optind; - - nextchar = NULL; - - posixly_correct = getenv ("POSIXLY_CORRECT"); - - /* Determine how to handle the ordering of options and nonoptions. */ - - if (optstring[0] == '-') - { - ordering = RETURN_IN_ORDER; - ++optstring; - } - else if (optstring[0] == '+') - { - ordering = REQUIRE_ORDER; - ++optstring; - } - else if (posixly_correct != NULL) - ordering = REQUIRE_ORDER; - else - ordering = PERMUTE; - -#if defined _LIBC && defined USE_NONOPTION_FLAGS - if (posixly_correct == NULL - && argc == original_argc && argv == original_argv) - { - if (nonoption_flags_max_len == 0) - { - if (__getopt_nonoption_flags == NULL - || __getopt_nonoption_flags[0] == '\0') - nonoption_flags_max_len = -1; - else - { - const char *orig_str = __getopt_nonoption_flags; - int len = nonoption_flags_max_len = strlen (orig_str); - if (nonoption_flags_max_len < argc) - nonoption_flags_max_len = argc; - __getopt_nonoption_flags = - (char *) malloc (nonoption_flags_max_len); - if (__getopt_nonoption_flags == NULL) - nonoption_flags_max_len = -1; - else - memset (__mempcpy (__getopt_nonoption_flags, orig_str, len), - '\0', nonoption_flags_max_len - len); - } - } - nonoption_flags_len = nonoption_flags_max_len; - } - else - nonoption_flags_len = 0; -#endif - - return optstring; -} - -/* Scan elements of ARGV (whose length is ARGC) for option characters - given in OPTSTRING. - - If an element of ARGV starts with '-', and is not exactly "-" or "--", - then it is an option element. The characters of this element - (aside from the initial '-') are option characters. If `getopt' - is called repeatedly, it returns successively each of the option characters - from each of the option elements. - - If `getopt' finds another option character, it returns that character, - updating `optind' and `nextchar' so that the next call to `getopt' can - resume the scan with the following option character or ARGV-element. - - If there are no more option characters, `getopt' returns -1. - Then `optind' is the index in ARGV of the first ARGV-element - that is not an option. (The ARGV-elements have been permuted - so that those that are not options now come last.) - - OPTSTRING is a string containing the legitimate option characters. - If an option character is seen that is not listed in OPTSTRING, - return '?' after printing an error message. If you set `opterr' to - zero, the error message is suppressed but we still return '?'. - - If a char in OPTSTRING is followed by a colon, that means it wants an arg, - so the following text in the same ARGV-element, or the text of the following - ARGV-element, is returned in `optarg'. Two colons mean an option that - wants an optional arg; if there is text in the current ARGV-element, - it is returned in `optarg', otherwise `optarg' is set to zero. - - If OPTSTRING starts with `-' or `+', it requests different methods of - handling the non-option ARGV-elements. - See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above. - - Long-named options begin with `--' instead of `-'. - Their names may be abbreviated as long as the abbreviation is unique - or is an exact match for some defined option. If they have an - argument, it follows the option name in the same ARGV-element, separated - from the option name by a `=', or else the in next ARGV-element. - When `getopt' finds a long-named option, it returns 0 if that option's - `flag' field is nonzero, the value of the option's `val' field - if the `flag' field is zero. - - The elements of ARGV aren't really const, because we permute them. - But we pretend they're const in the prototype to be compatible - with other systems. - - LONGOPTS is a vector of `struct option' terminated by an - element containing a name which is zero. - - LONGIND returns the index in LONGOPT of the long-named option found. - It is only valid when a long-named option has been found by the most - recent call. - - If LONG_ONLY is nonzero, '-' as well as '--' can introduce - long-named options. */ - -int -_getopt_internal (argc, argv, optstring, longopts, longind, long_only) - int argc; - char *const *argv; - const char *optstring; - const struct option *longopts; - int *longind; - int long_only; -{ - int print_errors = opterr; - if (optstring[0] == ':') - print_errors = 0; - - if (argc < 1) - return -1; - - optarg = NULL; - - if (optind == 0 || !__getopt_initialized) - { - if (optind == 0) - optind = 1; /* Don't scan ARGV[0], the program name. */ - optstring = _getopt_initialize (argc, argv, optstring); - __getopt_initialized = 1; - } - - /* Test whether ARGV[optind] points to a non-option argument. - Either it does not have option syntax, or there is an environment flag - from the shell indicating it is not an option. The later information - is only used when the used in the GNU libc. */ -#if defined _LIBC && defined USE_NONOPTION_FLAGS -# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \ - || (optind < nonoption_flags_len \ - && __getopt_nonoption_flags[optind] == '1')) -#else -# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0') -#endif - - if (nextchar == NULL || *nextchar == '\0') - { - /* Advance to the next ARGV-element. */ - - /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been - moved back by the user (who may also have changed the arguments). */ - if (last_nonopt > optind) - last_nonopt = optind; - if (first_nonopt > optind) - first_nonopt = optind; - - if (ordering == PERMUTE) - { - /* If we have just processed some options following some non-options, - exchange them so that the options come first. */ - - if (first_nonopt != last_nonopt && last_nonopt != optind) - exchange ((char **) argv); - else if (last_nonopt != optind) - first_nonopt = optind; - - /* Skip any additional non-options - and extend the range of non-options previously skipped. */ - - while (optind < argc && NONOPTION_P) - optind++; - last_nonopt = optind; - } - - /* The special ARGV-element `--' means premature end of options. - Skip it like a null option, - then exchange with previous non-options as if it were an option, - then skip everything else like a non-option. */ - - if (optind != argc && !strcmp (argv[optind], "--")) - { - optind++; - - if (first_nonopt != last_nonopt && last_nonopt != optind) - exchange ((char **) argv); - else if (first_nonopt == last_nonopt) - first_nonopt = optind; - last_nonopt = argc; - - optind = argc; - } - - /* If we have done all the ARGV-elements, stop the scan - and back over any non-options that we skipped and permuted. */ - - if (optind == argc) - { - /* Set the next-arg-index to point at the non-options - that we previously skipped, so the caller will digest them. */ - if (first_nonopt != last_nonopt) - optind = first_nonopt; - return -1; - } - - /* If we have come to a non-option and did not permute it, - either stop the scan or describe it to the caller and pass it by. */ - - if (NONOPTION_P) - { - if (ordering == REQUIRE_ORDER) - return -1; - optarg = argv[optind++]; - return 1; - } - - /* We have found another option-ARGV-element. - Skip the initial punctuation. */ - - nextchar = (argv[optind] + 1 - + (longopts != NULL && argv[optind][1] == '-')); - } - - /* Decode the current option-ARGV-element. */ - - /* Check whether the ARGV-element is a long option. - - If long_only and the ARGV-element has the form "-f", where f is - a valid short option, don't consider it an abbreviated form of - a long option that starts with f. Otherwise there would be no - way to give the -f short option. - - On the other hand, if there's a long option "fubar" and - the ARGV-element is "-fu", do consider that an abbreviation of - the long option, just like "--fu", and not "-f" with arg "u". - - This distinction seems to be the most useful approach. */ - - if (longopts != NULL - && (argv[optind][1] == '-' - || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1]))))) - { - char *nameend; - const struct option *p; - const struct option *pfound = NULL; - int exact = 0; - int ambig = 0; - int indfound = -1; - int option_index; - - for (nameend = nextchar; *nameend && *nameend != '='; nameend++) - /* Do nothing. */ ; - - /* Test all long options for either exact match - or abbreviated matches. */ - for (p = longopts, option_index = 0; p->name; p++, option_index++) - if (!strncmp (p->name, nextchar, nameend - nextchar)) - { - if ((unsigned int) (nameend - nextchar) - == (unsigned int) strlen (p->name)) - { - /* Exact match found. */ - pfound = p; - indfound = option_index; - exact = 1; - break; - } - else if (pfound == NULL) - { - /* First nonexact match found. */ - pfound = p; - indfound = option_index; - } - else if (long_only - || pfound->has_arg != p->has_arg - || pfound->flag != p->flag - || pfound->val != p->val) - /* Second or later nonexact match found. */ - ambig = 1; - } - - if (ambig && !exact) - { - if (print_errors) - fprintf (stderr, _("%s: option `%s' is ambiguous\n"), - argv[0], argv[optind]); - nextchar += strlen (nextchar); - optind++; - optopt = 0; - return '?'; - } - - if (pfound != NULL) - { - option_index = indfound; - optind++; - if (*nameend) - { - /* Don't test has_arg with >, because some C compilers don't - allow it to be used on enums. */ - if (pfound->has_arg) - optarg = nameend + 1; - else - { - if (print_errors) - { - if (argv[optind - 1][1] == '-') - /* --option */ - fprintf (stderr, - _("%s: option `--%s' doesn't allow an argument\n"), - argv[0], pfound->name); - else - /* +option or -option */ - fprintf (stderr, - _("%s: option `%c%s' doesn't allow an argument\n"), - argv[0], argv[optind - 1][0], pfound->name); - } - - nextchar += strlen (nextchar); - - optopt = pfound->val; - return '?'; - } - } - else if (pfound->has_arg == 1) - { - if (optind < argc) - optarg = argv[optind++]; - else - { - if (print_errors) - fprintf (stderr, - _("%s: option `%s' requires an argument\n"), - argv[0], argv[optind - 1]); - nextchar += strlen (nextchar); - optopt = pfound->val; - return optstring[0] == ':' ? ':' : '?'; - } - } - nextchar += strlen (nextchar); - if (longind != NULL) - *longind = option_index; - if (pfound->flag) - { - *(pfound->flag) = pfound->val; - return 0; - } - return pfound->val; - } - - /* Can't find it as a long option. If this is not getopt_long_only, - or the option starts with '--' or is not a valid short - option, then it's an error. - Otherwise interpret it as a short option. */ - if (!long_only || argv[optind][1] == '-' - || my_index (optstring, *nextchar) == NULL) - { - if (print_errors) - { - if (argv[optind][1] == '-') - /* --option */ - fprintf (stderr, _("%s: unrecognized option `--%s'\n"), - argv[0], nextchar); - else - /* +option or -option */ - fprintf (stderr, _("%s: unrecognized option `%c%s'\n"), - argv[0], argv[optind][0], nextchar); - } - nextchar = (char *) ""; - optind++; - optopt = 0; - return '?'; - } - } - - /* Look at and handle the next short option-character. */ - - { - char c = *nextchar++; - char *temp = my_index (optstring, c); - - /* Increment `optind' when we start to process its last character. */ - if (*nextchar == '\0') - ++optind; - - if (temp == NULL || c == ':') - { - if (print_errors) - { - if (posixly_correct) - /* 1003.2 specifies the format of this message. */ - fprintf (stderr, _("%s: illegal option -- %c\n"), - argv[0], c); - else - fprintf (stderr, _("%s: invalid option -- %c\n"), - argv[0], c); - } - optopt = c; - return '?'; - } - /* Convenience. Treat POSIX -W foo same as long option --foo */ - if (temp[0] == 'W' && temp[1] == ';') - { - char *nameend; - const struct option *p; - const struct option *pfound = NULL; - int exact = 0; - int ambig = 0; - int indfound = 0; - int option_index; - - /* This is an option that requires an argument. */ - if (*nextchar != '\0') - { - optarg = nextchar; - /* If we end this ARGV-element by taking the rest as an arg, - we must advance to the next element now. */ - optind++; - } - else if (optind == argc) - { - if (print_errors) - { - /* 1003.2 specifies the format of this message. */ - fprintf (stderr, _("%s: option requires an argument -- %c\n"), - argv[0], c); - } - optopt = c; - if (optstring[0] == ':') - c = ':'; - else - c = '?'; - return c; - } - else - /* We already incremented `optind' once; - increment it again when taking next ARGV-elt as argument. */ - optarg = argv[optind++]; - - /* optarg is now the argument, see if it's in the - table of longopts. */ - - for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++) - /* Do nothing. */ ; - - /* Test all long options for either exact match - or abbreviated matches. */ - for (p = longopts, option_index = 0; p->name; p++, option_index++) - if (!strncmp (p->name, nextchar, nameend - nextchar)) - { - if ((unsigned int) (nameend - nextchar) == strlen (p->name)) - { - /* Exact match found. */ - pfound = p; - indfound = option_index; - exact = 1; - break; - } - else if (pfound == NULL) - { - /* First nonexact match found. */ - pfound = p; - indfound = option_index; - } - else - /* Second or later nonexact match found. */ - ambig = 1; - } - if (ambig && !exact) - { - if (print_errors) - fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"), - argv[0], argv[optind]); - nextchar += strlen (nextchar); - optind++; - return '?'; - } - if (pfound != NULL) - { - option_index = indfound; - if (*nameend) - { - /* Don't test has_arg with >, because some C compilers don't - allow it to be used on enums. */ - if (pfound->has_arg) - optarg = nameend + 1; - else - { - if (print_errors) - fprintf (stderr, _("\ -%s: option `-W %s' doesn't allow an argument\n"), - argv[0], pfound->name); - - nextchar += strlen (nextchar); - return '?'; - } - } - else if (pfound->has_arg == 1) - { - if (optind < argc) - optarg = argv[optind++]; - else - { - if (print_errors) - fprintf (stderr, - _("%s: option `%s' requires an argument\n"), - argv[0], argv[optind - 1]); - nextchar += strlen (nextchar); - return optstring[0] == ':' ? ':' : '?'; - } - } - nextchar += strlen (nextchar); - if (longind != NULL) - *longind = option_index; - if (pfound->flag) - { - *(pfound->flag) = pfound->val; - return 0; - } - return pfound->val; - } - nextchar = NULL; - return 'W'; /* Let the application handle it. */ - } - if (temp[1] == ':') - { - if (temp[2] == ':') - { - /* This is an option that accepts an argument optionally. */ - if (*nextchar != '\0') - { - optarg = nextchar; - optind++; - } - else - optarg = NULL; - nextchar = NULL; - } - else - { - /* This is an option that requires an argument. */ - if (*nextchar != '\0') - { - optarg = nextchar; - /* If we end this ARGV-element by taking the rest as an arg, - we must advance to the next element now. */ - optind++; - } - else if (optind == argc) - { - if (print_errors) - { - /* 1003.2 specifies the format of this message. */ - fprintf (stderr, - _("%s: option requires an argument -- %c\n"), - argv[0], c); - } - optopt = c; - if (optstring[0] == ':') - c = ':'; - else - c = '?'; - } - else - /* We already incremented `optind' once; - increment it again when taking next ARGV-elt as argument. */ - optarg = argv[optind++]; - nextchar = NULL; - } - } - return c; - } -} - -int -getopt (argc, argv, optstring) - int argc; - char *const *argv; - const char *optstring; -{ - return _getopt_internal (argc, argv, optstring, - (const struct option *) 0, - (int *) 0, - 0); -} - -#endif /* Not ELIDE_CODE. */ - -#ifdef TEST - -/* Compile with -DTEST to make an executable for use in testing - the above definition of `getopt'. */ - -int -main (argc, argv) - int argc; - char **argv; -{ - int c; - int digit_optind = 0; - - while (1) - { - int this_option_optind = optind ? optind : 1; - - c = getopt (argc, argv, "abc:d:0123456789"); - if (c == -1) - break; - - switch (c) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - if (digit_optind != 0 && digit_optind != this_option_optind) - printf ("digits occur in two different argv-elements.\n"); - digit_optind = this_option_optind; - printf ("option %c\n", c); - break; - - case 'a': - printf ("option a\n"); - break; - - case 'b': - printf ("option b\n"); - break; - - case 'c': - printf ("option c with value `%s'\n", optarg); - break; - - case '?': - break; - - default: - printf ("?? getopt returned character code 0%o ??\n", c); - } - } - - if (optind < argc) - { - printf ("non-option ARGV-elements: "); - while (optind < argc) - printf ("%s ", argv[optind++]); - printf ("\n"); - } - - exit (0); -} - -#endif /* TEST */ diff --git a/src/bin/diffutils/lib/getopt.h b/src/bin/diffutils/lib/getopt.h deleted file mode 100644 index 18e102696c..0000000000 --- a/src/bin/diffutils/lib/getopt.h +++ /dev/null @@ -1,179 +0,0 @@ -/* Declarations for getopt. - Copyright (C) 1989-1994, 1996-1999, 2001 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifndef _GETOPT_H - -#ifndef __need_getopt -# define _GETOPT_H 1 -#endif - -/* If __GNU_LIBRARY__ is not already defined, either we are being used - standalone, or this is the first header included in the source file. - If we are being used with glibc, we need to include , but - that does not exist if we are standalone. So: if __GNU_LIBRARY__ is - not defined, include , which will pull in for us - if it's from glibc. (Why ctype.h? It's guaranteed to exist and it - doesn't flood the namespace with stuff the way some other headers do.) */ -#if !defined __GNU_LIBRARY__ -# include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* For communication from `getopt' to the caller. - When `getopt' finds an option that takes an argument, - the argument value is returned here. - Also, when `ordering' is RETURN_IN_ORDER, - each non-option ARGV-element is returned here. */ - -extern char *optarg; - -/* Index in ARGV of the next element to be scanned. - This is used for communication to and from the caller - and for communication between successive calls to `getopt'. - - On entry to `getopt', zero means this is the first call; initialize. - - When `getopt' returns -1, this is the index of the first of the - non-option elements that the caller should itself scan. - - Otherwise, `optind' communicates from one call to the next - how much of ARGV has been scanned so far. */ - -extern int optind; - -/* Callers store zero here to inhibit the error message `getopt' prints - for unrecognized options. */ - -extern int opterr; - -/* Set to an option character which was unrecognized. */ - -extern int optopt; - -#ifndef __need_getopt -/* Describe the long-named options requested by the application. - The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector - of `struct option' terminated by an element containing a name which is - zero. - - The field `has_arg' is: - no_argument (or 0) if the option does not take an argument, - required_argument (or 1) if the option requires an argument, - optional_argument (or 2) if the option takes an optional argument. - - If the field `flag' is not NULL, it points to a variable that is set - to the value given in the field `val' when the option is found, but - left unchanged if the option is not found. - - To have a long-named option do something other than set an `int' to - a compiled-in constant, such as set a value from `optarg', set the - option's `flag' field to zero and its `val' field to a nonzero - value (the equivalent single-letter option character, if there is - one). For long options that have a zero `flag' field, `getopt' - returns the contents of the `val' field. */ - -struct option -{ -# if (defined __STDC__ && __STDC__) || defined __cplusplus - const char *name; -# else - char *name; -# endif - /* has_arg can't be an enum because some compilers complain about - type mismatches in all the code that assumes it is an int. */ - int has_arg; - int *flag; - int val; -}; - -/* Names for the values of the `has_arg' field of `struct option'. */ - -# define no_argument 0 -# define required_argument 1 -# define optional_argument 2 -#endif /* need getopt */ - - -/* Get definitions and prototypes for functions to process the - arguments in ARGV (ARGC of them, minus the program name) for - options given in OPTS. - - Return the option character from OPTS just read. Return -1 when - there are no more options. For unrecognized options, or options - missing arguments, `optopt' is set to the option letter, and '?' is - returned. - - The OPTS string is a list of characters which are recognized option - letters, optionally followed by colons, specifying that that letter - takes an argument, to be placed in `optarg'. - - If a letter in OPTS is followed by two colons, its argument is - optional. This behavior is specific to the GNU `getopt'. - - The argument `--' causes premature termination of argument - scanning, explicitly telling `getopt' that there are no more - options. - - If OPTS begins with `--', then non-option arguments are treated as - arguments to the option '\0'. This behavior is specific to the GNU - `getopt'. */ - -#if (defined __STDC__ && __STDC__) || defined __cplusplus -# ifdef __GNU_LIBRARY__ -/* Many other libraries have conflicting prototypes for getopt, with - differences in the consts, in stdlib.h. To avoid compilation - errors, only prototype getopt for the GNU C library. */ -extern int getopt (int __argc, char *const *__argv, const char *__shortopts); -# else /* not __GNU_LIBRARY__ */ -extern int getopt (); -# endif /* __GNU_LIBRARY__ */ - -# ifndef __need_getopt -extern int getopt_long (int __argc, char *const *__argv, const char *__shortopts, - const struct option *__longopts, int *__longind); -extern int getopt_long_only (int __argc, char *const *__argv, - const char *__shortopts, - const struct option *__longopts, int *__longind); - -/* Internal only. Users should not call this directly. */ -extern int _getopt_internal (int __argc, char *const *__argv, - const char *__shortopts, - const struct option *__longopts, int *__longind, - int __long_only); -# endif -#else /* not __STDC__ */ -extern int getopt (); -# ifndef __need_getopt -extern int getopt_long (); -extern int getopt_long_only (); - -extern int _getopt_internal (); -# endif -#endif /* __STDC__ */ - -#ifdef __cplusplus -} -#endif - -/* Make sure we later can get all the definitions and declarations. */ -#undef __need_getopt - -#endif /* getopt.h */ diff --git a/src/bin/diffutils/lib/getopt1.c b/src/bin/diffutils/lib/getopt1.c deleted file mode 100644 index 62c55cfd62..0000000000 --- a/src/bin/diffutils/lib/getopt1.c +++ /dev/null @@ -1,187 +0,0 @@ -/* getopt_long and getopt_long_only entry points for GNU getopt. - Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include "getopt.h" - -#if !defined __STDC__ || !__STDC__ -/* This is a separate conditional since some stdc systems - reject `defined (const)'. */ -#ifndef const -#define const -#endif -#endif - -#include - -/* Comment out all this code if we are using the GNU C Library, and are not - actually compiling the library itself. This code is part of the GNU C - Library, but also included in many other GNU distributions. Compiling - and linking in this code is a waste when using the GNU C library - (especially if it is a shared library). Rather than having every GNU - program understand `configure --with-gnu-libc' and omit the object files, - it is simpler to just do this in the source for each such file. */ - -#define GETOPT_INTERFACE_VERSION 2 -#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2 -#include -#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION -#define ELIDE_CODE -#endif -#endif - -#ifndef ELIDE_CODE - - -/* This needs to come after some library #include - to get __GNU_LIBRARY__ defined. */ -#ifdef __GNU_LIBRARY__ -#include -#endif - -#ifndef NULL -#define NULL 0 -#endif - -int -getopt_long (argc, argv, options, long_options, opt_index) - int argc; - char *const *argv; - const char *options; - const struct option *long_options; - int *opt_index; -{ - return _getopt_internal (argc, argv, options, long_options, opt_index, 0); -} - -/* Like getopt_long, but '-' as well as '--' can indicate a long option. - If an option that starts with '-' (not '--') doesn't match a long option, - but does match a short option, it is parsed as a short option - instead. */ - -int -getopt_long_only (argc, argv, options, long_options, opt_index) - int argc; - char *const *argv; - const char *options; - const struct option *long_options; - int *opt_index; -{ - return _getopt_internal (argc, argv, options, long_options, opt_index, 1); -} - - -#endif /* Not ELIDE_CODE. */ - -#ifdef TEST - -#include - -int -main (argc, argv) - int argc; - char **argv; -{ - int c; - int digit_optind = 0; - - while (1) - { - int this_option_optind = optind ? optind : 1; - int option_index = 0; - static struct option long_options[] = - { - {"add", 1, 0, 0}, - {"append", 0, 0, 0}, - {"delete", 1, 0, 0}, - {"verbose", 0, 0, 0}, - {"create", 0, 0, 0}, - {"file", 1, 0, 0}, - {0, 0, 0, 0} - }; - - c = getopt_long (argc, argv, "abc:d:0123456789", - long_options, &option_index); - if (c == -1) - break; - - switch (c) - { - case 0: - printf ("option %s", long_options[option_index].name); - if (optarg) - printf (" with arg %s", optarg); - printf ("\n"); - break; - - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - if (digit_optind != 0 && digit_optind != this_option_optind) - printf ("digits occur in two different argv-elements.\n"); - digit_optind = this_option_optind; - printf ("option %c\n", c); - break; - - case 'a': - printf ("option a\n"); - break; - - case 'b': - printf ("option b\n"); - break; - - case 'c': - printf ("option c with value `%s'\n", optarg); - break; - - case 'd': - printf ("option d with value `%s'\n", optarg); - break; - - case '?': - break; - - default: - printf ("?? getopt returned character code 0%o ??\n", c); - } - } - - if (optind < argc) - { - printf ("non-option ARGV-elements: "); - while (optind < argc) - printf ("%s ", argv[optind++]); - printf ("\n"); - } - - exit (0); -} - -#endif /* TEST */ diff --git a/src/bin/diffutils/lib/gettext.h b/src/bin/diffutils/lib/gettext.h deleted file mode 100644 index ea67f30815..0000000000 --- a/src/bin/diffutils/lib/gettext.h +++ /dev/null @@ -1,59 +0,0 @@ -/* Convenience header for conditional use of GNU . - Copyright (C) 1995-1998, 2000-2002 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU Library General Public License as published - by the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, - USA. */ - -#ifndef _LIBGETTEXT_H -#define _LIBGETTEXT_H 1 - -/* NLS can be disabled through the configure --disable-nls option. */ -#if ENABLE_NLS - -/* Get declarations of GNU message catalog functions. */ -# include - -#else - -/* Disabled NLS. - The casts to 'const char *' serve the purpose of producing warnings - for invalid uses of the value returned from these functions. - On pre-ANSI systems without 'const', the config.h file is supposed to - contain "#define const". */ -# define gettext(Msgid) ((const char *) (Msgid)) -# define dgettext(Domainname, Msgid) ((const char *) (Msgid)) -# define dcgettext(Domainname, Msgid, Category) ((const char *) (Msgid)) -# define ngettext(Msgid1, Msgid2, N) \ - ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) -# define dngettext(Domainname, Msgid1, Msgid2, N) \ - ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) -# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ - ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) -# define textdomain(Domainname) ((const char *) (Domainname)) -# define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname)) -# define bind_textdomain_codeset(Domainname, Codeset) ((const char *) (Codeset)) - -#endif - -/* A pseudo function call that serves as a marker for the automated - extraction of messages, but does not call gettext(). The run-time - translation is done at a different place in the code. - The argument, String, should be a literal string. Concatenated strings - and other string expressions won't work. - The macro's expansion is not parenthesized, so that it is suitable as - initializer for static 'char[]' or 'const char[]' variables. */ -#define gettext_noop(String) String - -#endif /* _LIBGETTEXT_H */ diff --git a/src/bin/diffutils/lib/hard-locale.c b/src/bin/diffutils/lib/hard-locale.c deleted file mode 100644 index 0070542e09..0000000000 --- a/src/bin/diffutils/lib/hard-locale.c +++ /dev/null @@ -1,79 +0,0 @@ -/* hard-locale.c -- Determine whether a locale is hard. - - Copyright (C) 1997, 1998, 1999, 2002 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#if HAVE_CONFIG_H -# include -#endif - -#if HAVE_LOCALE_H -# include -#endif - -#if HAVE_STDLIB_H -# include -#endif - -#if HAVE_STRING_H -# include -#endif - -#include "hard-locale.h" - -/* Return nonzero if the current CATEGORY locale is hard, i.e. if you - can't get away with assuming traditional C or POSIX behavior. */ -int -hard_locale (int category) -{ -#if ! HAVE_SETLOCALE - return 0; -#else - - int hard = 1; - char const *p = setlocale (category, 0); - - if (p) - { -# if defined __GLIBC__ && 2 <= __GLIBC__ - if (strcmp (p, "C") == 0 || strcmp (p, "POSIX") == 0) - hard = 0; -# else - char *locale = malloc (strlen (p) + 1); - if (locale) - { - strcpy (locale, p); - - /* Temporarily set the locale to the "C" and "POSIX" locales - to find their names, so that we can determine whether one - or the other is the caller's locale. */ - if (((p = setlocale (category, "C")) - && strcmp (p, locale) == 0) - || ((p = setlocale (category, "POSIX")) - && strcmp (p, locale) == 0)) - hard = 0; - - /* Restore the caller's locale. */ - setlocale (category, locale); - free (locale); - } -# endif - } - - return hard; - -#endif -} diff --git a/src/bin/diffutils/lib/hard-locale.h b/src/bin/diffutils/lib/hard-locale.h deleted file mode 100644 index 5b054d9a5c..0000000000 --- a/src/bin/diffutils/lib/hard-locale.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef HARD_LOCALE_H_ -# define HARD_LOCALE_H_ 1 - -# if HAVE_CONFIG_H -# include -# endif - -# ifndef PARAMS -# if defined PROTOTYPES || (defined __STDC__ && __STDC__) -# define PARAMS(Args) Args -# else -# define PARAMS(Args) () -# endif -# endif - -int hard_locale PARAMS ((int)); - -#endif /* HARD_LOCALE_H_ */ diff --git a/src/bin/diffutils/lib/imaxtostr.c b/src/bin/diffutils/lib/imaxtostr.c deleted file mode 100644 index 5e87ad526f..0000000000 --- a/src/bin/diffutils/lib/imaxtostr.c +++ /dev/null @@ -1,3 +0,0 @@ -#define inttostr imaxtostr -#define inttype intmax_t -#include "inttostr.c" diff --git a/src/bin/diffutils/lib/inttostr.c b/src/bin/diffutils/lib/inttostr.c deleted file mode 100644 index 78a48af84c..0000000000 --- a/src/bin/diffutils/lib/inttostr.c +++ /dev/null @@ -1,49 +0,0 @@ -/* inttostr.c -- convert integers to printable strings - - Copyright (C) 2001 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by Paul Eggert */ - -#include "inttostr.h" - -/* Convert I to a printable string in BUF, which must be at least - INT_BUFSIZE_BOUND (INTTYPE) bytes long. Return the address of the - printable string, which need not start at BUF. */ - -char * -inttostr (inttype i, char *buf) -{ - char *p = buf + INT_STRLEN_BOUND (inttype); - *p = 0; - - if (i < 0) - { - do - *--p = '0' - i % 10; - while ((i /= 10) != 0); - - *--p = '-'; - } - else - { - do - *--p = '0' + i % 10; - while ((i /= 10) != 0); - } - - return p; -} diff --git a/src/bin/diffutils/lib/inttostr.h b/src/bin/diffutils/lib/inttostr.h deleted file mode 100644 index 3d7ece2876..0000000000 --- a/src/bin/diffutils/lib/inttostr.h +++ /dev/null @@ -1,60 +0,0 @@ -/* inttostr.h -- convert integers to printable strings - - Copyright (C) 2001 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by Paul Eggert */ - -#if HAVE_CONFIG_H -# include -#endif - -#if HAVE_INTTYPES_H -# include -#endif - -#if HAVE_LIMITS_H -# include -#endif -#ifndef CHAR_BIT -# define CHAR_BIT 8 -#endif - -#if HAVE_SYS_TYPES_H -# include -#endif - -#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) - -/* Upper bound on the string length of an integer converted to string. - 302 / 1000 is ceil (log10 (2.0)). Subtract 1 for the sign bit; - add 1 for integer division truncation; add 1 more for a minus sign. */ -#define INT_STRLEN_BOUND(t) \ - ((sizeof (t) * CHAR_BIT - TYPE_SIGNED (t)) * 302 / 1000 + 1 + TYPE_SIGNED (t)) - -#define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1) - -#ifndef PARAMS -# if defined PROTOTYPES || defined __STDC__ -# define PARAMS(Args) Args -# else -# define PARAMS(Args) () -# endif -#endif - -char *offtostr PARAMS ((off_t, char *)); -char *imaxtostr PARAMS ((intmax_t, char *)); -char *umaxtostr PARAMS ((uintmax_t, char *)); diff --git a/src/bin/diffutils/lib/malloc.c b/src/bin/diffutils/lib/malloc.c deleted file mode 100644 index 5e7674bd47..0000000000 --- a/src/bin/diffutils/lib/malloc.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Work around bug on some systems where malloc (0) fails. - Copyright (C) 1997, 1998 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* written by Jim Meyering */ - -#if HAVE_CONFIG_H -# include -#endif -#undef malloc - -#include - -char *malloc (); - -/* Allocate an N-byte block of memory from the heap. - If N is zero, allocate a 1-byte block. */ - -char * -rpl_malloc (size_t n) -{ - if (n == 0) - n = 1; - return malloc (n); -} diff --git a/src/bin/diffutils/lib/memchr.c b/src/bin/diffutils/lib/memchr.c deleted file mode 100644 index 4b28e481f8..0000000000 --- a/src/bin/diffutils/lib/memchr.c +++ /dev/null @@ -1,216 +0,0 @@ -/* Copyright (C) 1991,93,96,97,99,2000 Free Software Foundation, Inc. - Based on strlen implementation by Torbjorn Granlund (tege@sics.se), - with help from Dan Sahlin (dan@sics.se) and - commentary by Jim Blandy (jimb@ai.mit.edu); - adaptation to memchr suggested by Dick Karpinski (dick@cca.ucsf.edu), - and implemented by Roland McGrath (roland@ai.mit.edu). - -NOTE: The canonical source of this file is maintained with the GNU C Library. -Bugs can be reported to bug-glibc@prep.ai.mit.edu. - -This program is free software; you can redistribute it and/or modify it -under the terms of the GNU General Public License as published by the -Free Software Foundation; either version 2, or (at your option) any -later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, -USA. */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#undef __ptr_t -#if defined (__cplusplus) || (defined (__STDC__) && __STDC__) -# define __ptr_t void * -#else /* Not C++ or ANSI C. */ -# define __ptr_t char * -#endif /* C++ or ANSI C. */ - -#if defined _LIBC -# include -# include -#else -# define reg_char char -#endif - -#if HAVE_STDLIB_H || defined _LIBC -# include -#endif - -#if HAVE_LIMITS_H || defined _LIBC -# include -#endif - -#define LONG_MAX_32_BITS 2147483647 - -#ifndef LONG_MAX -# define LONG_MAX LONG_MAX_32_BITS -#endif - -#include -#if HAVE_BP_SYM_H || defined _LIBC -# include -#else -# define BP_SYM(sym) sym -#endif - -#undef memchr -#undef __memchr - -/* Search no more than N bytes of S for C. */ -__ptr_t -__memchr (s, c_in, n) - const __ptr_t s; - int c_in; - size_t n; -{ - const unsigned char *char_ptr; - const unsigned long int *longword_ptr; - unsigned long int longword, magic_bits, charmask; - unsigned reg_char c; - - c = (unsigned char) c_in; - - /* Handle the first few characters by reading one character at a time. - Do this until CHAR_PTR is aligned on a longword boundary. */ - for (char_ptr = (const unsigned char *) s; - n > 0 && ((unsigned long int) char_ptr - & (sizeof (longword) - 1)) != 0; - --n, ++char_ptr) - if (*char_ptr == c) - return (__ptr_t) char_ptr; - - /* All these elucidatory comments refer to 4-byte longwords, - but the theory applies equally well to 8-byte longwords. */ - - longword_ptr = (unsigned long int *) char_ptr; - - /* Bits 31, 24, 16, and 8 of this number are zero. Call these bits - the "holes." Note that there is a hole just to the left of - each byte, with an extra at the end: - - bits: 01111110 11111110 11111110 11111111 - bytes: AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDD - - The 1-bits make sure that carries propagate to the next 0-bit. - The 0-bits provide holes for carries to fall into. */ - - if (sizeof (longword) != 4 && sizeof (longword) != 8) - abort (); - -#if LONG_MAX <= LONG_MAX_32_BITS - magic_bits = 0x7efefeff; -#else - magic_bits = ((unsigned long int) 0x7efefefe << 32) | 0xfefefeff; -#endif - - /* Set up a longword, each of whose bytes is C. */ - charmask = c | (c << 8); - charmask |= charmask << 16; -#if LONG_MAX > LONG_MAX_32_BITS - charmask |= charmask << 32; -#endif - - /* Instead of the traditional loop which tests each character, - we will test a longword at a time. The tricky part is testing - if *any of the four* bytes in the longword in question are zero. */ - while (n >= sizeof (longword)) - { - /* We tentatively exit the loop if adding MAGIC_BITS to - LONGWORD fails to change any of the hole bits of LONGWORD. - - 1) Is this safe? Will it catch all the zero bytes? - Suppose there is a byte with all zeros. Any carry bits - propagating from its left will fall into the hole at its - least significant bit and stop. Since there will be no - carry from its most significant bit, the LSB of the - byte to the left will be unchanged, and the zero will be - detected. - - 2) Is this worthwhile? Will it ignore everything except - zero bytes? Suppose every byte of LONGWORD has a bit set - somewhere. There will be a carry into bit 8. If bit 8 - is set, this will carry into bit 16. If bit 8 is clear, - one of bits 9-15 must be set, so there will be a carry - into bit 16. Similarly, there will be a carry into bit - 24. If one of bits 24-30 is set, there will be a carry - into bit 31, so all of the hole bits will be changed. - - The one misfire occurs when bits 24-30 are clear and bit - 31 is set; in this case, the hole at bit 31 is not - changed. If we had access to the processor carry flag, - we could close this loophole by putting the fourth hole - at bit 32! - - So it ignores everything except 128's, when they're aligned - properly. - - 3) But wait! Aren't we looking for C, not zero? - Good point. So what we do is XOR LONGWORD with a longword, - each of whose bytes is C. This turns each byte that is C - into a zero. */ - - longword = *longword_ptr++ ^ charmask; - - /* Add MAGIC_BITS to LONGWORD. */ - if ((((longword + magic_bits) - - /* Set those bits that were unchanged by the addition. */ - ^ ~longword) - - /* Look at only the hole bits. If any of the hole bits - are unchanged, most likely one of the bytes was a - zero. */ - & ~magic_bits) != 0) - { - /* Which of the bytes was C? If none of them were, it was - a misfire; continue the search. */ - - const unsigned char *cp = (const unsigned char *) (longword_ptr - 1); - - if (cp[0] == c) - return (__ptr_t) cp; - if (cp[1] == c) - return (__ptr_t) &cp[1]; - if (cp[2] == c) - return (__ptr_t) &cp[2]; - if (cp[3] == c) - return (__ptr_t) &cp[3]; -#if LONG_MAX > 2147483647 - if (cp[4] == c) - return (__ptr_t) &cp[4]; - if (cp[5] == c) - return (__ptr_t) &cp[5]; - if (cp[6] == c) - return (__ptr_t) &cp[6]; - if (cp[7] == c) - return (__ptr_t) &cp[7]; -#endif - } - - n -= sizeof (longword); - } - - char_ptr = (const unsigned char *) longword_ptr; - - while (n-- > 0) - { - if (*char_ptr == c) - return (__ptr_t) char_ptr; - else - ++char_ptr; - } - - return 0; -} -#ifdef weak_alias -weak_alias (__memchr, BP_SYM (memchr)) -#endif diff --git a/src/bin/diffutils/lib/mkstemp.c b/src/bin/diffutils/lib/mkstemp.c deleted file mode 100644 index b82ae617f6..0000000000 --- a/src/bin/diffutils/lib/mkstemp.c +++ /dev/null @@ -1,42 +0,0 @@ -/* Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc. - This file is derived from the one in the GNU C Library. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include - -/* Disable the definition of mkstemp to rpl_mkstemp (from config.h) in this - file. Otherwise, we'd get conflicting prototypes for rpl_mkstemp on - most systems. */ -#undef mkstemp - -#include -#include - -#ifndef __GT_FILE -# define __GT_FILE 0 -#endif - -int __gen_tempname (); - -/* Generate a unique temporary file name from TEMPLATE. - The last six characters of TEMPLATE must be "XXXXXX"; - they are replaced with a string that makes the filename unique. - Then open the file and return a fd. */ -int -rpl_mkstemp (char *template) -{ - return __gen_tempname (template, __GT_FILE); -} diff --git a/src/bin/diffutils/lib/offtostr.c b/src/bin/diffutils/lib/offtostr.c deleted file mode 100644 index 45196e28a4..0000000000 --- a/src/bin/diffutils/lib/offtostr.c +++ /dev/null @@ -1,3 +0,0 @@ -#define inttostr offtostr -#define inttype off_t -#include "inttostr.c" diff --git a/src/bin/diffutils/lib/posix/Makefile.am b/src/bin/diffutils/lib/posix/Makefile.am deleted file mode 100644 index 610ef229dd..0000000000 --- a/src/bin/diffutils/lib/posix/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ -## Process this file with automake to create Makefile.in -AUTOMAKE_OPTIONS=no-dependencies - -EXTRA_DIST = regex.h diff --git a/src/bin/diffutils/lib/posix/Makefile.in b/src/bin/diffutils/lib/posix/Makefile.in deleted file mode 100644 index 47d8ee8935..0000000000 --- a/src/bin/diffutils/lib/posix/Makefile.in +++ /dev/null @@ -1,229 +0,0 @@ -# Makefile.in generated by automake 1.6 from Makefile.am. -# @configure_input@ - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../.. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_HEADER = $(INSTALL_DATA) -transform = @program_transform_name@ -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ - -EXEEXT = @EXEEXT@ -OBJEXT = @OBJEXT@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -AMTAR = @AMTAR@ -AWK = @AWK@ -BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -CPP = @CPP@ -DATADIRNAME = @DATADIRNAME@ -DEPDIR = @DEPDIR@ -GENCAT = @GENCAT@ -GLIBC21 = @GLIBC21@ -GMSGFMT = @GMSGFMT@ -HAVE_LIB = @HAVE_LIB@ -HELP2MAN = @HELP2MAN@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTOBJEXT = @INSTOBJEXT@ -INTLBISON = @INTLBISON@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ -INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -LIB = @LIB@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ -LTLIB = @LTLIB@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -PACKAGE = @PACKAGE@ -POSUB = @POSUB@ -PR_PROGRAM = @PR_PROGRAM@ -RANLIB = @RANLIB@ -STRIP = @STRIP@ -U = @U@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -am__include = @am__include@ -am__quote = @am__quote@ -install_sh = @install_sh@ -AUTOMAKE_OPTIONS = no-dependencies - -EXTRA_DIST = regex.h -subdir = lib/posix -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -depcomp = -am__depfiles_maybe = -DIST_SOURCES = -DIST_COMMON = Makefile.am Makefile.in -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits lib/posix/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) -uninstall-info-am: -tags: TAGS -TAGS: - -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = ../.. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir)$$dir \ - || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile - -installdirs: - -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic mostlyclean-am - -distclean: distclean-am - -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic - -uninstall-am: uninstall-info-am - -.PHONY: all all-am check check-am clean clean-generic distclean \ - distclean-generic distdir dvi dvi-am info info-am install \ - install-am install-data install-data-am install-exec \ - install-exec-am install-info install-info-am install-man \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic uninstall uninstall-am uninstall-info-am - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/bin/diffutils/lib/posix/regex.h b/src/bin/diffutils/lib/posix/regex.h deleted file mode 100644 index c4a6e071fc..0000000000 --- a/src/bin/diffutils/lib/posix/regex.h +++ /dev/null @@ -1,562 +0,0 @@ -/* Definitions for data structures and routines for the regular - expression library, version 0.12. - Copyright (C) 1985,1989-1993,1995-1998, 2000 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifndef _REGEX_H -#define _REGEX_H 1 - -/* Allow the use in C++ code. */ -#ifdef __cplusplus -extern "C" { -#endif - -/* POSIX says that must be included (by the caller) before - . */ - -#if !defined _POSIX_C_SOURCE && !defined _POSIX_SOURCE && defined VMS -/* VMS doesn't have `size_t' in , even though POSIX says it - should be there. */ -# include -#endif - -/* The following two types have to be signed and unsigned integer type - wide enough to hold a value of a pointer. For most ANSI compilers - ptrdiff_t and size_t should be likely OK. Still size of these two - types is 2 for Microsoft C. Ugh... */ -typedef long int s_reg_t; -typedef unsigned long int active_reg_t; - -/* The following bits are used to determine the regexp syntax we - recognize. The set/not-set meanings are chosen so that Emacs syntax - remains the value 0. The bits are given in alphabetical order, and - the definitions shifted by one from the previous bit; thus, when we - add or remove a bit, only one other definition need change. */ -typedef unsigned long int reg_syntax_t; - -/* If this bit is not set, then \ inside a bracket expression is literal. - If set, then such a \ quotes the following character. */ -#define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1) - -/* If this bit is not set, then + and ? are operators, and \+ and \? are - literals. - If set, then \+ and \? are operators and + and ? are literals. */ -#define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1) - -/* If this bit is set, then character classes are supported. They are: - [:alpha:], [:upper:], [:lower:], [:digit:], [:alnum:], [:xdigit:], - [:space:], [:print:], [:punct:], [:graph:], and [:cntrl:]. - If not set, then character classes are not supported. */ -#define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1) - -/* If this bit is set, then ^ and $ are always anchors (outside bracket - expressions, of course). - If this bit is not set, then it depends: - ^ is an anchor if it is at the beginning of a regular - expression or after an open-group or an alternation operator; - $ is an anchor if it is at the end of a regular expression, or - before a close-group or an alternation operator. - - This bit could be (re)combined with RE_CONTEXT_INDEP_OPS, because - POSIX draft 11.2 says that * etc. in leading positions is undefined. - We already implemented a previous draft which made those constructs - invalid, though, so we haven't changed the code back. */ -#define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1) - -/* If this bit is set, then special characters are always special - regardless of where they are in the pattern. - If this bit is not set, then special characters are special only in - some contexts; otherwise they are ordinary. Specifically, - * + ? and intervals are only special when not after the beginning, - open-group, or alternation operator. */ -#define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1) - -/* If this bit is set, then *, +, ?, and { cannot be first in an re or - immediately after an alternation or begin-group operator. */ -#define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1) - -/* If this bit is set, then . matches newline. - If not set, then it doesn't. */ -#define RE_DOT_NEWLINE (RE_CONTEXT_INVALID_OPS << 1) - -/* If this bit is set, then . doesn't match NUL. - If not set, then it does. */ -#define RE_DOT_NOT_NULL (RE_DOT_NEWLINE << 1) - -/* If this bit is set, nonmatching lists [^...] do not match newline. - If not set, they do. */ -#define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL << 1) - -/* If this bit is set, either \{...\} or {...} defines an - interval, depending on RE_NO_BK_BRACES. - If not set, \{, \}, {, and } are literals. */ -#define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1) - -/* If this bit is set, +, ? and | aren't recognized as operators. - If not set, they are. */ -#define RE_LIMITED_OPS (RE_INTERVALS << 1) - -/* If this bit is set, newline is an alternation operator. - If not set, newline is literal. */ -#define RE_NEWLINE_ALT (RE_LIMITED_OPS << 1) - -/* If this bit is set, then `{...}' defines an interval, and \{ and \} - are literals. - If not set, then `\{...\}' defines an interval. */ -#define RE_NO_BK_BRACES (RE_NEWLINE_ALT << 1) - -/* If this bit is set, (...) defines a group, and \( and \) are literals. - If not set, \(...\) defines a group, and ( and ) are literals. */ -#define RE_NO_BK_PARENS (RE_NO_BK_BRACES << 1) - -/* If this bit is set, then \ matches . - If not set, then \ is a back-reference. */ -#define RE_NO_BK_REFS (RE_NO_BK_PARENS << 1) - -/* If this bit is set, then | is an alternation operator, and \| is literal. - If not set, then \| is an alternation operator, and | is literal. */ -#define RE_NO_BK_VBAR (RE_NO_BK_REFS << 1) - -/* If this bit is set, then an ending range point collating higher - than the starting range point, as in [z-a], is invalid. - If not set, then when ending range point collates higher than the - starting range point, the range is ignored. */ -#define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1) - -/* If this bit is set, then an unmatched ) is ordinary. - If not set, then an unmatched ) is invalid. */ -#define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES << 1) - -/* If this bit is set, succeed as soon as we match the whole pattern, - without further backtracking. */ -#define RE_NO_POSIX_BACKTRACKING (RE_UNMATCHED_RIGHT_PAREN_ORD << 1) - -/* If this bit is set, do not process the GNU regex operators. - If not set, then the GNU regex operators are recognized. */ -#define RE_NO_GNU_OPS (RE_NO_POSIX_BACKTRACKING << 1) - -/* If this bit is set, turn on internal regex debugging. - If not set, and debugging was on, turn it off. - This only works if regex.c is compiled -DDEBUG. - We define this bit always, so that all that's needed to turn on - debugging is to recompile regex.c; the calling code can always have - this bit set, and it won't affect anything in the normal case. */ -#define RE_DEBUG (RE_NO_GNU_OPS << 1) - -/* If this bit is set, a syntactically invalid interval is treated as - a string of ordinary characters. For example, the ERE 'a{1' is - treated as 'a\{1'. */ -#define RE_INVALID_INTERVAL_ORD (RE_DEBUG << 1) - -/* This global variable defines the particular regexp syntax to use (for - some interfaces). When a regexp is compiled, the syntax used is - stored in the pattern buffer, so changing this does not affect - already-compiled regexps. */ -extern reg_syntax_t re_syntax_options; - -/* Define combinations of the above bits for the standard possibilities. - (The [[[ comments delimit what gets put into the Texinfo file, so - don't delete them!) */ -/* [[[begin syntaxes]]] */ -#define RE_SYNTAX_EMACS 0 - -#define RE_SYNTAX_AWK \ - (RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DOT_NOT_NULL \ - | RE_NO_BK_PARENS | RE_NO_BK_REFS \ - | RE_NO_BK_VBAR | RE_NO_EMPTY_RANGES \ - | RE_DOT_NEWLINE | RE_CONTEXT_INDEP_ANCHORS \ - | RE_UNMATCHED_RIGHT_PAREN_ORD | RE_NO_GNU_OPS) - -#define RE_SYNTAX_GNU_AWK \ - ((RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DEBUG) \ - & ~(RE_DOT_NOT_NULL | RE_INTERVALS | RE_CONTEXT_INDEP_OPS)) - -#define RE_SYNTAX_POSIX_AWK \ - (RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS \ - | RE_INTERVALS | RE_NO_GNU_OPS) - -#define RE_SYNTAX_GREP \ - (RE_BK_PLUS_QM | RE_CHAR_CLASSES \ - | RE_HAT_LISTS_NOT_NEWLINE | RE_INTERVALS \ - | RE_NEWLINE_ALT) - -#define RE_SYNTAX_EGREP \ - (RE_CHAR_CLASSES | RE_CONTEXT_INDEP_ANCHORS \ - | RE_CONTEXT_INDEP_OPS | RE_HAT_LISTS_NOT_NEWLINE \ - | RE_NEWLINE_ALT | RE_NO_BK_PARENS \ - | RE_NO_BK_VBAR) - -#define RE_SYNTAX_POSIX_EGREP \ - (RE_SYNTAX_EGREP | RE_INTERVALS | RE_NO_BK_BRACES \ - | RE_INVALID_INTERVAL_ORD) - -/* P1003.2/D11.2, section 4.20.7.1, lines 5078ff. */ -#define RE_SYNTAX_ED RE_SYNTAX_POSIX_BASIC - -#define RE_SYNTAX_SED RE_SYNTAX_POSIX_BASIC - -/* Syntax bits common to both basic and extended POSIX regex syntax. */ -#define _RE_SYNTAX_POSIX_COMMON \ - (RE_CHAR_CLASSES | RE_DOT_NEWLINE | RE_DOT_NOT_NULL \ - | RE_INTERVALS | RE_NO_EMPTY_RANGES) - -#define RE_SYNTAX_POSIX_BASIC \ - (_RE_SYNTAX_POSIX_COMMON | RE_BK_PLUS_QM) - -/* Differs from ..._POSIX_BASIC only in that RE_BK_PLUS_QM becomes - RE_LIMITED_OPS, i.e., \? \+ \| are not recognized. Actually, this - isn't minimal, since other operators, such as \`, aren't disabled. */ -#define RE_SYNTAX_POSIX_MINIMAL_BASIC \ - (_RE_SYNTAX_POSIX_COMMON | RE_LIMITED_OPS) - -#define RE_SYNTAX_POSIX_EXTENDED \ - (_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \ - | RE_CONTEXT_INDEP_OPS | RE_NO_BK_BRACES \ - | RE_NO_BK_PARENS | RE_NO_BK_VBAR \ - | RE_CONTEXT_INVALID_OPS | RE_UNMATCHED_RIGHT_PAREN_ORD) - -/* Differs from ..._POSIX_EXTENDED in that RE_CONTEXT_INDEP_OPS is - removed and RE_NO_BK_REFS is added. */ -#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED \ - (_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \ - | RE_CONTEXT_INVALID_OPS | RE_NO_BK_BRACES \ - | RE_NO_BK_PARENS | RE_NO_BK_REFS \ - | RE_NO_BK_VBAR | RE_UNMATCHED_RIGHT_PAREN_ORD) -/* [[[end syntaxes]]] */ - -/* Maximum number of duplicates an interval can allow. Some systems - (erroneously) define this in other header files, but we want our - value, so remove any previous define. */ -#ifdef RE_DUP_MAX -# undef RE_DUP_MAX -#endif -/* If sizeof(int) == 2, then ((1 << 15) - 1) overflows. */ -#define RE_DUP_MAX (0x7fff) - - -/* POSIX `cflags' bits (i.e., information for `regcomp'). */ - -/* If this bit is set, then use extended regular expression syntax. - If not set, then use basic regular expression syntax. */ -#define REG_EXTENDED 1 - -/* If this bit is set, then ignore case when matching. - If not set, then case is significant. */ -#define REG_ICASE (REG_EXTENDED << 1) - -/* If this bit is set, then anchors do not match at newline - characters in the string. - If not set, then anchors do match at newlines. */ -#define REG_NEWLINE (REG_ICASE << 1) - -/* If this bit is set, then report only success or fail in regexec. - If not set, then returns differ between not matching and errors. */ -#define REG_NOSUB (REG_NEWLINE << 1) - - -/* POSIX `eflags' bits (i.e., information for regexec). */ - -/* If this bit is set, then the beginning-of-line operator doesn't match - the beginning of the string (presumably because it's not the - beginning of a line). - If not set, then the beginning-of-line operator does match the - beginning of the string. */ -#define REG_NOTBOL 1 - -/* Like REG_NOTBOL, except for the end-of-line. */ -#define REG_NOTEOL (1 << 1) - - -/* If any error codes are removed, changed, or added, update the - `re_error_msg' table in regex.c. */ -typedef enum -{ -#ifdef _XOPEN_SOURCE - REG_ENOSYS = -1, /* This will never happen for this implementation. */ -#endif - - REG_NOERROR = 0, /* Success. */ - REG_NOMATCH, /* Didn't find a match (for regexec). */ - - /* POSIX regcomp return error codes. (In the order listed in the - standard.) */ - REG_BADPAT, /* Invalid pattern. */ - REG_ECOLLATE, /* Not implemented. */ - REG_ECTYPE, /* Invalid character class name. */ - REG_EESCAPE, /* Trailing backslash. */ - REG_ESUBREG, /* Invalid back reference. */ - REG_EBRACK, /* Unmatched left bracket. */ - REG_EPAREN, /* Parenthesis imbalance. */ - REG_EBRACE, /* Unmatched \{. */ - REG_BADBR, /* Invalid contents of \{\}. */ - REG_ERANGE, /* Invalid range end. */ - REG_ESPACE, /* Ran out of memory. */ - REG_BADRPT, /* No preceding re for repetition op. */ - - /* Error codes we've added. */ - REG_EEND, /* Premature end. */ - REG_ESIZE, /* Compiled pattern bigger than 2^16 bytes. */ - REG_ERPAREN /* Unmatched ) or \); not returned from regcomp. */ -} reg_errcode_t; - -/* This data structure represents a compiled pattern. Before calling - the pattern compiler, the fields `buffer', `allocated', `fastmap', - `translate', and `no_sub' can be set. After the pattern has been - compiled, the `re_nsub' field is available. All other fields are - private to the regex routines. */ - -#ifndef RE_TRANSLATE_TYPE -# define RE_TRANSLATE_TYPE char * -#endif - -struct re_pattern_buffer -{ -/* [[[begin pattern_buffer]]] */ - /* Space that holds the compiled pattern. It is declared as - `unsigned char *' because its elements are - sometimes used as array indexes. */ - unsigned char *buffer; - - /* Number of bytes to which `buffer' points. */ - unsigned long int allocated; - - /* Number of bytes actually used in `buffer'. */ - unsigned long int used; - - /* Syntax setting with which the pattern was compiled. */ - reg_syntax_t syntax; - - /* Pointer to a fastmap, if any, otherwise zero. re_search uses - the fastmap, if there is one, to skip over impossible - starting points for matches. */ - char *fastmap; - - /* Either a translate table to apply to all characters before - comparing them, or zero for no translation. The translation - is applied to a pattern when it is compiled and to a string - when it is matched. */ - RE_TRANSLATE_TYPE translate; - - /* Number of subexpressions found by the compiler. */ - size_t re_nsub; - - /* Zero if this pattern cannot match the empty string, one else. - Well, in truth it's used only in `re_search_2', to see - whether or not we should use the fastmap, so we don't set - this absolutely perfectly; see `re_compile_fastmap' (the - `duplicate' case). */ - unsigned can_be_null : 1; - - /* If REGS_UNALLOCATED, allocate space in the `regs' structure - for `max (RE_NREGS, re_nsub + 1)' groups. - If REGS_REALLOCATE, reallocate space if necessary. - If REGS_FIXED, use what's there. */ -#define REGS_UNALLOCATED 0 -#define REGS_REALLOCATE 1 -#define REGS_FIXED 2 - unsigned regs_allocated : 2; - - /* Set to zero when `regex_compile' compiles a pattern; set to one - by `re_compile_fastmap' if it updates the fastmap. */ - unsigned fastmap_accurate : 1; - - /* If set, `re_match_2' does not return information about - subexpressions. */ - unsigned no_sub : 1; - - /* If set, a beginning-of-line anchor doesn't match at the - beginning of the string. */ - unsigned not_bol : 1; - - /* Similarly for an end-of-line anchor. */ - unsigned not_eol : 1; - - /* If true, an anchor at a newline matches. */ - unsigned newline_anchor : 1; - -/* [[[end pattern_buffer]]] */ -}; - -typedef struct re_pattern_buffer regex_t; - -/* Type for byte offsets within the string. POSIX mandates this. */ -typedef int regoff_t; - - -/* This is the structure we store register match data in. See - regex.texinfo for a full description of what registers match. */ -struct re_registers -{ - unsigned num_regs; - regoff_t *start; - regoff_t *end; -}; - - -/* If `regs_allocated' is REGS_UNALLOCATED in the pattern buffer, - `re_match_2' returns information about at least this many registers - the first time a `regs' structure is passed. */ -#ifndef RE_NREGS -# define RE_NREGS 30 -#endif - - -/* POSIX specification for registers. Aside from the different names than - `re_registers', POSIX uses an array of structures, instead of a - structure of arrays. */ -typedef struct -{ - regoff_t rm_so; /* Byte offset from string's start to substring's start. */ - regoff_t rm_eo; /* Byte offset from string's start to substring's end. */ -} regmatch_t; - -/* Declarations for routines. */ - -/* To avoid duplicating every routine declaration -- once with a - prototype (if we are ANSI), and once without (if we aren't) -- we - use the following macro to declare argument types. This - unfortunately clutters up the declarations a bit, but I think it's - worth it. */ - -#if __STDC__ - -# define _RE_ARGS(args) args - -#else /* not __STDC__ */ - -# define _RE_ARGS(args) () - -#endif /* not __STDC__ */ - -/* Sets the current default syntax to SYNTAX, and return the old syntax. - You can also simply assign to the `re_syntax_options' variable. */ -extern reg_syntax_t re_set_syntax _RE_ARGS ((reg_syntax_t syntax)); - -/* Compile the regular expression PATTERN, with length LENGTH - and syntax given by the global `re_syntax_options', into the buffer - BUFFER. Return NULL if successful, and an error string if not. */ -extern const char *re_compile_pattern - _RE_ARGS ((const char *pattern, size_t length, - struct re_pattern_buffer *buffer)); - - -/* Compile a fastmap for the compiled pattern in BUFFER; used to - accelerate searches. Return 0 if successful and -2 if was an - internal error. */ -extern int re_compile_fastmap _RE_ARGS ((struct re_pattern_buffer *buffer)); - - -/* Search in the string STRING (with length LENGTH) for the pattern - compiled into BUFFER. Start searching at position START, for RANGE - characters. Return the starting position of the match, -1 for no - match, or -2 for an internal error. Also return register - information in REGS (if REGS and BUFFER->no_sub are nonzero). */ -extern int re_search - _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string, - int length, int start, int range, struct re_registers *regs)); - - -/* Like `re_search', but search in the concatenation of STRING1 and - STRING2. Also, stop searching at index START + STOP. */ -extern int re_search_2 - _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1, - int length1, const char *string2, int length2, - int start, int range, struct re_registers *regs, int stop)); - - -/* Like `re_search', but return how many characters in STRING the regexp - in BUFFER matched, starting at position START. */ -extern int re_match - _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string, - int length, int start, struct re_registers *regs)); - - -/* Relates to `re_match' as `re_search_2' relates to `re_search'. */ -extern int re_match_2 - _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1, - int length1, const char *string2, int length2, - int start, struct re_registers *regs, int stop)); - - -/* Set REGS to hold NUM_REGS registers, storing them in STARTS and - ENDS. Subsequent matches using BUFFER and REGS will use this memory - for recording register information. STARTS and ENDS must be - allocated with malloc, and must each be at least `NUM_REGS * sizeof - (regoff_t)' bytes long. - - If NUM_REGS == 0, then subsequent matches should allocate their own - register data. - - Unless this function is called, the first search or match using - PATTERN_BUFFER will allocate its own register data, without - freeing the old data. */ -extern void re_set_registers - _RE_ARGS ((struct re_pattern_buffer *buffer, struct re_registers *regs, - unsigned num_regs, regoff_t *starts, regoff_t *ends)); - -#if defined _REGEX_RE_COMP || defined _LIBC -# ifndef _CRAY -/* 4.2 bsd compatibility. */ -extern char *re_comp _RE_ARGS ((const char *)); -extern int re_exec _RE_ARGS ((const char *)); -# endif -#endif - -/* GCC 2.95 and later have "__restrict"; C99 compilers have - "restrict", and "configure" may have defined "restrict". */ -#ifndef __restrict -# if ! (2 < __GNUC__ || (2 == __GNUC__ && 95 <= __GNUC_MINOR__)) -# if defined restrict || 199901L <= __STDC_VERSION__ -# define __restrict restrict -# else -# define __restrict -# endif -# endif -#endif -/* For now unconditionally define __restrict_arr to expand to nothing. - Ideally we would have a test for the compiler which allows defining - it to restrict. */ -#define __restrict_arr - -/* POSIX compatibility. */ -extern int regcomp _RE_ARGS ((regex_t *__restrict __preg, - const char *__restrict __pattern, - int __cflags)); - -extern int regexec _RE_ARGS ((const regex_t *__restrict __preg, - const char *__restrict __string, size_t __nmatch, - regmatch_t __pmatch[__restrict_arr], - int __eflags)); - -extern size_t regerror _RE_ARGS ((int __errcode, const regex_t *__preg, - char *__errbuf, size_t __errbuf_size)); - -extern void regfree _RE_ARGS ((regex_t *__preg)); - - -#ifdef __cplusplus -} -#endif /* C++ */ - -#endif /* regex.h */ - -/* -Local variables: -make-backup-files: t -version-control: t -trim-versions-without-asking: nil -End: -*/ diff --git a/src/bin/diffutils/lib/posixver.c b/src/bin/diffutils/lib/posixver.c deleted file mode 100644 index c45ac315bc..0000000000 --- a/src/bin/diffutils/lib/posixver.c +++ /dev/null @@ -1,58 +0,0 @@ -/* Which POSIX version to conform to, for utilities. - - Copyright (C) 2002 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU Library General Public License as published - by the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, - USA. */ - -/* Written by Paul Eggert. */ - -#if HAVE_CONFIG_H -# include -#endif - -#include - -#include -#if !HAVE_DECL_GETENV && !defined getenv -char *getenv (); -#endif - -#if HAVE_UNISTD_H -# include -#endif -#ifndef _POSIX2_VERSION -# define _POSIX2_VERSION 0 -#endif - -/* The POSIX version that utilities should conform to. The default is - specified by the system. */ - -int -posix2_version (void) -{ - long int v = _POSIX2_VERSION; - char const *s = getenv ("_POSIX2_VERSION"); - - if (s && *s) - { - char *e; - long int i = strtol (s, &e, 10); - if (! *e) - v = i; - } - - return v < INT_MIN ? INT_MIN : v < INT_MAX ? v : INT_MAX; -} diff --git a/src/bin/diffutils/lib/posixver.h b/src/bin/diffutils/lib/posixver.h deleted file mode 100644 index b64f6a2ea1..0000000000 --- a/src/bin/diffutils/lib/posixver.h +++ /dev/null @@ -1 +0,0 @@ -int posix2_version (void); diff --git a/src/bin/diffutils/lib/prepargs.c b/src/bin/diffutils/lib/prepargs.c deleted file mode 100644 index f5735acdad..0000000000 --- a/src/bin/diffutils/lib/prepargs.c +++ /dev/null @@ -1,93 +0,0 @@ -/* Parse arguments from a string and prepend them to an argv. - - Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -/* Written by Paul Eggert . */ - -#ifdef HAVE_CONFIG_H -# include -#endif -#include "prepargs.h" -#include -#include -#include - -#include - -/* IN_CTYPE_DOMAIN (C) is nonzero if the unsigned char C can safely be given - as an argument to macros like "isspace". */ -#ifdef STDC_HEADERS -# define IN_CTYPE_DOMAIN(c) 1 -#else -# define IN_CTYPE_DOMAIN(c) ((c) <= 0177) -#endif - -#define ISSPACE(c) (IN_CTYPE_DOMAIN (c) && isspace (c)) - -/* Find the white-space-separated options specified by OPTIONS, and - using BUF to store copies of these options, set ARGV[0], ARGV[1], - etc. to the option copies. Return the number N of options found. - Do not set ARGV[N]. If ARGV is zero, do not store ARGV[0] etc. - Backslash can be used to escape whitespace (and backslashes). */ -static int -prepend_args (char const *options, char *buf, char **argv) -{ - char const *o = options; - char *b = buf; - int n = 0; - - for (;;) - { - while (ISSPACE ((unsigned char) *o)) - o++; - if (!*o) - return n; - if (argv) - argv[n] = b; - n++; - - do - if ((*b++ = *o++) == '\\' && *o) - b[-1] = *o++; - while (*o && ! ISSPACE ((unsigned char) *o)); - - *b++ = '\0'; - } -} - -/* Prepend the whitespace-separated options in OPTIONS to the argument - vector of a main program with argument count *PARGC and argument - vector *PARGV. */ -void -prepend_default_options (char const *options, int *pargc, char ***pargv) -{ - if (options) - { - char *buf = xmalloc (strlen (options) + 1); - int prepended = prepend_args (options, buf, (char **) 0); - int argc = *pargc; - char * const *argv = *pargv; - char **pp = (char **) xmalloc ((prepended + argc + 1) * sizeof *pp); - *pargc = prepended + argc; - *pargv = pp; - *pp++ = *argv++; - pp += prepend_args (options, buf, pp); - while ((*pp++ = *argv++)) - continue; - } -} diff --git a/src/bin/diffutils/lib/prepargs.h b/src/bin/diffutils/lib/prepargs.h deleted file mode 100644 index ce93ea870c..0000000000 --- a/src/bin/diffutils/lib/prepargs.h +++ /dev/null @@ -1,3 +0,0 @@ -/* Parse arguments from a string and prepend them to an argv. */ - -void prepend_default_options (char const *, int *, char ***); diff --git a/src/bin/diffutils/lib/quotesys.c b/src/bin/diffutils/lib/quotesys.c deleted file mode 100644 index 528f382272..0000000000 --- a/src/bin/diffutils/lib/quotesys.c +++ /dev/null @@ -1,125 +0,0 @@ -/* Shell command argument quoting. - Copyright (C) 1994, 1995, 1997 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by Paul Eggert */ - -#if HAVE_CONFIG_H -# include -#endif - -#include -#include - -/* Place into QUOTED a quoted version of ARG suitable for `system'. - Return the length of the resulting string (which is not null-terminated). - If QUOTED is null, return the length without any side effects. */ - -size_t -quote_system_arg (quoted, arg) - char *quoted; - char const *arg; -{ - char const *a; - size_t len = 0; - - /* Scan ARG, copying it to QUOTED if QUOTED is not null, - looking for shell metacharacters. */ - - for (a = arg; ; a++) - { - char c = *a; - switch (c) - { - case 0: - /* ARG has no shell metacharacters. */ - return len; - - case '=': - if (*arg == '-') - break; - /* Fall through. */ - case '\t': case '\n': case ' ': - case '!': case '"': case '#': case '$': case '%': case '&': case '\'': - case '(': case ')': case '*': case ';': - case '<': case '>': case '?': case '[': case '\\': - case '^': case '`': case '|': case '~': - { - /* ARG has a shell metacharacter. - Start over, quoting it this time. */ - - len = 0; - c = *arg++; - - /* If ARG is an option, quote just its argument. - This is not necessary, but it looks nicer. */ - if (c == '-' && arg < a) - { - c = *arg++; - - if (quoted) - { - quoted[len] = '-'; - quoted[len + 1] = c; - } - len += 2; - - if (c == '-') - while (arg < a) - { - c = *arg++; - if (quoted) - quoted[len] = c; - len++; - if (c == '=') - break; - } - c = *arg++; - } - - if (quoted) - quoted[len] = '\''; - len++; - - for (; c; c = *arg++) - { - if (c == '\'') - { - if (quoted) - { - quoted[len] = '\''; - quoted[len + 1] = '\\'; - quoted[len + 2] = '\''; - } - len += 3; - } - if (quoted) - quoted[len] = c; - len++; - } - - if (quoted) - quoted[len] = '\''; - return len + 1; - } - } - - if (quoted) - quoted[len] = c; - len++; - } -} diff --git a/src/bin/diffutils/lib/quotesys.h b/src/bin/diffutils/lib/quotesys.h deleted file mode 100644 index 0d0d825709..0000000000 --- a/src/bin/diffutils/lib/quotesys.h +++ /dev/null @@ -1,9 +0,0 @@ -/* quotesys.h -- declarations for quoting system arguments */ - -#if defined __STDC__ || __GNUC__ -# define __QUOTESYS_P(args) args -#else -# define __QUOTESYS_P(args) () -#endif - -size_t quote_system_arg __QUOTESYS_P ((char *, char const *)); diff --git a/src/bin/diffutils/lib/realloc.c b/src/bin/diffutils/lib/realloc.c deleted file mode 100644 index d0d3e4ab07..0000000000 --- a/src/bin/diffutils/lib/realloc.c +++ /dev/null @@ -1,44 +0,0 @@ -/* Work around bug on some systems where realloc (NULL, 0) fails. - Copyright (C) 1997 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* written by Jim Meyering */ - -#if HAVE_CONFIG_H -# include -#endif -#undef realloc - -#include - -char *malloc (); -char *realloc (); - -/* Change the size of an allocated block of memory P to N bytes, - with error checking. If N is zero, change it to 1. If P is NULL, - use malloc. */ - -char * -rpl_realloc (p, n) - char *p; - size_t n; -{ - if (n == 0) - n = 1; - if (p == 0) - return malloc (n); - return realloc (p, n); -} diff --git a/src/bin/diffutils/lib/regex.c b/src/bin/diffutils/lib/regex.c deleted file mode 100644 index efe2a71bc2..0000000000 --- a/src/bin/diffutils/lib/regex.c +++ /dev/null @@ -1,8438 +0,0 @@ -/* Extended regular expression matching and search library, - version 0.12. - (Implements POSIX draft P1003.2/D11.2, except for some of the - internationalization features.) - Copyright (C) 1993-1999, 2000, 2001 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* AIX requires this to be the first thing in the file. */ -#if defined _AIX && !defined REGEX_MALLOC - #pragma alloca -#endif - - -/********************************************/ -/* Remove this to enable debugging in regex */ -#undef DEBUG -/********************************************/ - - -#undef _GNU_SOURCE -#define _GNU_SOURCE - -#ifdef HAVE_CONFIG_H -# include -#endif - -#ifndef PARAMS -# if defined __GNUC__ || (defined __STDC__ && __STDC__) -# define PARAMS(args) args -# else -# define PARAMS(args) () -# endif /* GCC. */ -#endif /* Not PARAMS. */ - -#ifndef INSIDE_RECURSION - -# if defined STDC_HEADERS && !defined emacs -# include -# else -/* We need this for `regex.h', and perhaps for the Emacs include files. */ -# include -# endif - -# define WIDE_CHAR_SUPPORT (HAVE_WCTYPE_H && HAVE_WCHAR_H && HAVE_BTOWC) - -/* For platform which support the ISO C amendement 1 functionality we - support user defined character classes. */ -# if defined _LIBC || WIDE_CHAR_SUPPORT -/* Solaris 2.5 has a bug: must be included before . */ -# include -# include -# endif - -# ifdef _LIBC -/* We have to keep the namespace clean. */ -# define regfree(preg) __regfree (preg) -# define regexec(pr, st, nm, pm, ef) __regexec (pr, st, nm, pm, ef) -# define regcomp(preg, pattern, cflags) __regcomp (preg, pattern, cflags) -# define regerror(errcode, preg, errbuf, errbuf_size) \ - __regerror(errcode, preg, errbuf, errbuf_size) -# define re_set_registers(bu, re, nu, st, en) \ - __re_set_registers (bu, re, nu, st, en) -# define re_match_2(bufp, string1, size1, string2, size2, pos, regs, stop) \ - __re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) -# define re_match(bufp, string, size, pos, regs) \ - __re_match (bufp, string, size, pos, regs) -# define re_search(bufp, string, size, startpos, range, regs) \ - __re_search (bufp, string, size, startpos, range, regs) -# define re_compile_pattern(pattern, length, bufp) \ - __re_compile_pattern (pattern, length, bufp) -# define re_set_syntax(syntax) __re_set_syntax (syntax) -# define re_search_2(bufp, st1, s1, st2, s2, startpos, range, regs, stop) \ - __re_search_2 (bufp, st1, s1, st2, s2, startpos, range, regs, stop) -# define re_compile_fastmap(bufp) __re_compile_fastmap (bufp) - -# define btowc __btowc -# define iswctype __iswctype -# define mbrtowc __mbrtowc -# define wcslen __wcslen -# define wcscoll __wcscoll -# define wcrtomb __wcrtomb - -/* We are also using some library internals. */ -# include -# include -# include -# include -# endif - -/* This is for other GNU distributions with internationalized messages. */ -# if (HAVE_LIBINTL_H && ENABLE_NLS) || defined _LIBC -# include -# ifdef _LIBC -# undef gettext -# define gettext(msgid) __dcgettext ("libc", msgid, LC_MESSAGES) -# endif -# else -# define gettext(msgid) (msgid) -# endif - -# ifndef gettext_noop -/* This define is so xgettext can find the internationalizable - strings. */ -# define gettext_noop(String) String -# endif - -/* Support for bounded pointers. */ -# if !defined _LIBC && !defined __BOUNDED_POINTERS__ -# define __bounded /* nothing */ -# define __unbounded /* nothing */ -# define __ptrvalue /* nothing */ -# endif - -/* The `emacs' switch turns on certain matching commands - that make sense only in Emacs. */ -# ifdef emacs - -# include "lisp.h" -# include "buffer.h" -# include "syntax.h" - -# else /* not emacs */ - -/* If we are not linking with Emacs proper, - we can't use the relocating allocator - even if config.h says that we can. */ -# undef REL_ALLOC - -# if defined STDC_HEADERS || defined _LIBC -# include -# else -char *malloc (); -char *realloc (); -# endif - -/* When used in Emacs's lib-src, we need to get bzero and bcopy somehow. - If nothing else has been done, use the method below. */ -# ifdef INHIBIT_STRING_HEADER -# if !(defined HAVE_BZERO && defined HAVE_BCOPY) -# if !defined bzero && !defined bcopy -# undef INHIBIT_STRING_HEADER -# endif -# endif -# endif - -/* This is the normal way of making sure we have a bcopy and a bzero. - This is used in most programs--a few other programs avoid this - by defining INHIBIT_STRING_HEADER. */ -# ifndef INHIBIT_STRING_HEADER -# if defined HAVE_STRING_H || defined STDC_HEADERS || defined _LIBC -# include -# ifndef bzero -# ifndef _LIBC -# define bzero(s, n) (memset (s, '\0', n), (s)) -# else -# define bzero(s, n) __bzero (s, n) -# endif -# endif -# else -# include -# ifndef memcmp -# define memcmp(s1, s2, n) bcmp (s1, s2, n) -# endif -# ifndef memcpy -# define memcpy(d, s, n) (bcopy (s, d, n), (d)) -# endif -# endif -# endif - -/* Define the syntax stuff for \<, \>, etc. */ - -/* This must be nonzero for the wordchar and notwordchar pattern - commands in re_match_2. */ -# ifndef Sword -# define Sword 1 -# endif - -# ifdef SWITCH_ENUM_BUG -# define SWITCH_ENUM_CAST(x) ((int)(x)) -# else -# define SWITCH_ENUM_CAST(x) (x) -# endif - -# endif /* not emacs */ - -# if defined _LIBC || HAVE_LIMITS_H -# include -# endif - -# ifndef MB_LEN_MAX -# define MB_LEN_MAX 1 -# endif - -/* Get the interface, including the syntax bits. */ -# include - -/* isalpha etc. are used for the character classes. */ -# include - -/* Jim Meyering writes: - - "... Some ctype macros are valid only for character codes that - isascii says are ASCII (SGI's IRIX-4.0.5 is one such system --when - using /bin/cc or gcc but without giving an ansi option). So, all - ctype uses should be through macros like ISPRINT... If - STDC_HEADERS is defined, then autoconf has verified that the ctype - macros don't need to be guarded with references to isascii. ... - Defining isascii to 1 should let any compiler worth its salt - eliminate the && through constant folding." - Solaris defines some of these symbols so we must undefine them first. */ - -# if defined STDC_HEADERS || (!defined isascii && !defined HAVE_ISASCII) -# define IN_CTYPE_DOMAIN(c) 1 -# else -# define IN_CTYPE_DOMAIN(c) isascii(c) -# endif - -# ifdef isblank -# define ISBLANK(c) (IN_CTYPE_DOMAIN (c) && isblank (c)) -# else -# define ISBLANK(c) ((c) == ' ' || (c) == '\t') -# endif -# ifdef isgraph -# define ISGRAPH(c) (IN_CTYPE_DOMAIN (c) && isgraph (c)) -# else -# define ISGRAPH(c) (IN_CTYPE_DOMAIN (c) && isprint (c) && !isspace (c)) -# endif - -# undef ISPRINT -# define ISPRINT(c) (IN_CTYPE_DOMAIN (c) && isprint (c)) -# define ISDIGIT(c) (IN_CTYPE_DOMAIN (c) && isdigit (c)) -# define ISALNUM(c) (IN_CTYPE_DOMAIN (c) && isalnum (c)) -# define ISALPHA(c) (IN_CTYPE_DOMAIN (c) && isalpha (c)) -# define ISCNTRL(c) (IN_CTYPE_DOMAIN (c) && iscntrl (c)) -# define ISLOWER(c) (IN_CTYPE_DOMAIN (c) && islower (c)) -# define ISPUNCT(c) (IN_CTYPE_DOMAIN (c) && ispunct (c)) -# define ISSPACE(c) (IN_CTYPE_DOMAIN (c) && isspace (c)) -# define ISUPPER(c) (IN_CTYPE_DOMAIN (c) && isupper (c)) -# define ISXDIGIT(c) (IN_CTYPE_DOMAIN (c) && isxdigit (c)) - -# ifdef _tolower -# define TOLOWER(c) _tolower(c) -# else -# define TOLOWER(c) tolower(c) -# endif - -# ifndef NULL -# define NULL (void *)0 -# endif - -/* We remove any previous definition of `SIGN_EXTEND_CHAR', - since ours (we hope) works properly with all combinations of - machines, compilers, `char' and `unsigned char' argument types. - (Per Bothner suggested the basic approach.) */ -# undef SIGN_EXTEND_CHAR -# if __STDC__ -# define SIGN_EXTEND_CHAR(c) ((signed char) (c)) -# else /* not __STDC__ */ -/* As in Harbison and Steele. */ -# define SIGN_EXTEND_CHAR(c) ((((unsigned char) (c)) ^ 128) - 128) -# endif - -# ifndef emacs -/* How many characters in the character set. */ -# define CHAR_SET_SIZE 256 - -# ifdef SYNTAX_TABLE - -extern char *re_syntax_table; - -# else /* not SYNTAX_TABLE */ - -static char re_syntax_table[CHAR_SET_SIZE]; - -static void init_syntax_once PARAMS ((void)); - -static void -init_syntax_once () -{ - register int c; - static int done = 0; - - if (done) - return; - bzero (re_syntax_table, sizeof re_syntax_table); - - for (c = 0; c < CHAR_SET_SIZE; ++c) - if (ISALNUM (c)) - re_syntax_table[c] = Sword; - - re_syntax_table['_'] = Sword; - - done = 1; -} - -# endif /* not SYNTAX_TABLE */ - -# define SYNTAX(c) re_syntax_table[(unsigned char) (c)] - -# endif /* emacs */ - -/* Should we use malloc or alloca? If REGEX_MALLOC is not defined, we - use `alloca' instead of `malloc'. This is because using malloc in - re_search* or re_match* could cause memory leaks when C-g is used in - Emacs; also, malloc is slower and causes storage fragmentation. On - the other hand, malloc is more portable, and easier to debug. - - Because we sometimes use alloca, some routines have to be macros, - not functions -- `alloca'-allocated space disappears at the end of the - function it is called in. */ - -# ifdef REGEX_MALLOC - -# define REGEX_ALLOCATE malloc -# define REGEX_REALLOCATE(source, osize, nsize) realloc (source, nsize) -# define REGEX_FREE free - -# else /* not REGEX_MALLOC */ - -/* Emacs already defines alloca, sometimes. */ -# ifndef alloca - -/* Make alloca work the best possible way. */ -# ifdef __GNUC__ -# define alloca __builtin_alloca -# else /* not __GNUC__ */ -# if HAVE_ALLOCA_H -# include -# endif /* HAVE_ALLOCA_H */ -# endif /* not __GNUC__ */ - -# endif /* not alloca */ - -# define REGEX_ALLOCATE alloca - -/* Assumes a `char *destination' variable. */ -# define REGEX_REALLOCATE(source, osize, nsize) \ - (destination = (char *) alloca (nsize), \ - memcpy (destination, source, osize)) - -/* No need to do anything to free, after alloca. */ -# define REGEX_FREE(arg) ((void)0) /* Do nothing! But inhibit gcc warning. */ - -# endif /* not REGEX_MALLOC */ - -/* Define how to allocate the failure stack. */ - -# if defined REL_ALLOC && defined REGEX_MALLOC - -# define REGEX_ALLOCATE_STACK(size) \ - r_alloc (&failure_stack_ptr, (size)) -# define REGEX_REALLOCATE_STACK(source, osize, nsize) \ - r_re_alloc (&failure_stack_ptr, (nsize)) -# define REGEX_FREE_STACK(ptr) \ - r_alloc_free (&failure_stack_ptr) - -# else /* not using relocating allocator */ - -# ifdef REGEX_MALLOC - -# define REGEX_ALLOCATE_STACK malloc -# define REGEX_REALLOCATE_STACK(source, osize, nsize) realloc (source, nsize) -# define REGEX_FREE_STACK free - -# else /* not REGEX_MALLOC */ - -# define REGEX_ALLOCATE_STACK alloca - -# define REGEX_REALLOCATE_STACK(source, osize, nsize) \ - REGEX_REALLOCATE (source, osize, nsize) -/* No need to explicitly free anything. */ -# define REGEX_FREE_STACK(arg) - -# endif /* not REGEX_MALLOC */ -# endif /* not using relocating allocator */ - - -/* True if `size1' is non-NULL and PTR is pointing anywhere inside - `string1' or just past its end. This works if PTR is NULL, which is - a good thing. */ -# define FIRST_STRING_P(ptr) \ - (size1 && string1 <= (ptr) && (ptr) <= string1 + size1) - -/* (Re)Allocate N items of type T using malloc, or fail. */ -# define TALLOC(n, t) ((t *) malloc ((n) * sizeof (t))) -# define RETALLOC(addr, n, t) ((addr) = (t *) realloc (addr, (n) * sizeof (t))) -# define RETALLOC_IF(addr, n, t) \ - if (addr) RETALLOC((addr), (n), t); else (addr) = TALLOC ((n), t) -# define REGEX_TALLOC(n, t) ((t *) REGEX_ALLOCATE ((n) * sizeof (t))) - -# define BYTEWIDTH 8 /* In bits. */ - -# define STREQ(s1, s2) ((strcmp (s1, s2) == 0)) - -# undef MAX -# undef MIN -# define MAX(a, b) ((a) > (b) ? (a) : (b)) -# define MIN(a, b) ((a) < (b) ? (a) : (b)) - -typedef char boolean; -# define false 0 -# define true 1 - -static reg_errcode_t byte_regex_compile _RE_ARGS ((const char *pattern, size_t size, - reg_syntax_t syntax, - struct re_pattern_buffer *bufp)); - -static int byte_re_match_2_internal PARAMS ((struct re_pattern_buffer *bufp, - const char *string1, int size1, - const char *string2, int size2, - int pos, - struct re_registers *regs, - int stop)); -static int byte_re_search_2 PARAMS ((struct re_pattern_buffer *bufp, - const char *string1, int size1, - const char *string2, int size2, - int startpos, int range, - struct re_registers *regs, int stop)); -static int byte_re_compile_fastmap PARAMS ((struct re_pattern_buffer *bufp)); - -#ifdef MBS_SUPPORT -static reg_errcode_t wcs_regex_compile _RE_ARGS ((const char *pattern, size_t size, - reg_syntax_t syntax, - struct re_pattern_buffer *bufp)); - - -static int wcs_re_match_2_internal PARAMS ((struct re_pattern_buffer *bufp, - const char *cstring1, int csize1, - const char *cstring2, int csize2, - int pos, - struct re_registers *regs, - int stop, - wchar_t *string1, int size1, - wchar_t *string2, int size2, - int *mbs_offset1, int *mbs_offset2)); -static int wcs_re_search_2 PARAMS ((struct re_pattern_buffer *bufp, - const char *string1, int size1, - const char *string2, int size2, - int startpos, int range, - struct re_registers *regs, int stop)); -static int wcs_re_compile_fastmap PARAMS ((struct re_pattern_buffer *bufp)); -#endif - -/* These are the command codes that appear in compiled regular - expressions. Some opcodes are followed by argument bytes. A - command code can specify any interpretation whatsoever for its - arguments. Zero bytes may appear in the compiled regular expression. */ - -typedef enum -{ - no_op = 0, - - /* Succeed right away--no more backtracking. */ - succeed, - - /* Followed by one byte giving n, then by n literal bytes. */ - exactn, - -# ifdef MBS_SUPPORT - /* Same as exactn, but contains binary data. */ - exactn_bin, -# endif - - /* Matches any (more or less) character. */ - anychar, - - /* Matches any one char belonging to specified set. First - following byte is number of bitmap bytes. Then come bytes - for a bitmap saying which chars are in. Bits in each byte - are ordered low-bit-first. A character is in the set if its - bit is 1. A character too large to have a bit in the map is - automatically not in the set. */ - /* ifdef MBS_SUPPORT, following element is length of character - classes, length of collating symbols, length of equivalence - classes, length of character ranges, and length of characters. - Next, character class element, collating symbols elements, - equivalence class elements, range elements, and character - elements follow. - See regex_compile function. */ - charset, - - /* Same parameters as charset, but match any character that is - not one of those specified. */ - charset_not, - - /* Start remembering the text that is matched, for storing in a - register. Followed by one byte with the register number, in - the range 0 to one less than the pattern buffer's re_nsub - field. Then followed by one byte with the number of groups - inner to this one. (This last has to be part of the - start_memory only because we need it in the on_failure_jump - of re_match_2.) */ - start_memory, - - /* Stop remembering the text that is matched and store it in a - memory register. Followed by one byte with the register - number, in the range 0 to one less than `re_nsub' in the - pattern buffer, and one byte with the number of inner groups, - just like `start_memory'. (We need the number of inner - groups here because we don't have any easy way of finding the - corresponding start_memory when we're at a stop_memory.) */ - stop_memory, - - /* Match a duplicate of something remembered. Followed by one - byte containing the register number. */ - duplicate, - - /* Fail unless at beginning of line. */ - begline, - - /* Fail unless at end of line. */ - endline, - - /* Succeeds if at beginning of buffer (if emacs) or at beginning - of string to be matched (if not). */ - begbuf, - - /* Analogously, for end of buffer/string. */ - endbuf, - - /* Followed by two byte relative address to which to jump. */ - jump, - - /* Same as jump, but marks the end of an alternative. */ - jump_past_alt, - - /* Followed by two-byte relative address of place to resume at - in case of failure. */ - /* ifdef MBS_SUPPORT, the size of address is 1. */ - on_failure_jump, - - /* Like on_failure_jump, but pushes a placeholder instead of the - current string position when executed. */ - on_failure_keep_string_jump, - - /* Throw away latest failure point and then jump to following - two-byte relative address. */ - /* ifdef MBS_SUPPORT, the size of address is 1. */ - pop_failure_jump, - - /* Change to pop_failure_jump if know won't have to backtrack to - match; otherwise change to jump. This is used to jump - back to the beginning of a repeat. If what follows this jump - clearly won't match what the repeat does, such that we can be - sure that there is no use backtracking out of repetitions - already matched, then we change it to a pop_failure_jump. - Followed by two-byte address. */ - /* ifdef MBS_SUPPORT, the size of address is 1. */ - maybe_pop_jump, - - /* Jump to following two-byte address, and push a dummy failure - point. This failure point will be thrown away if an attempt - is made to use it for a failure. A `+' construct makes this - before the first repeat. Also used as an intermediary kind - of jump when compiling an alternative. */ - /* ifdef MBS_SUPPORT, the size of address is 1. */ - dummy_failure_jump, - - /* Push a dummy failure point and continue. Used at the end of - alternatives. */ - push_dummy_failure, - - /* Followed by two-byte relative address and two-byte number n. - After matching N times, jump to the address upon failure. */ - /* ifdef MBS_SUPPORT, the size of address is 1. */ - succeed_n, - - /* Followed by two-byte relative address, and two-byte number n. - Jump to the address N times, then fail. */ - /* ifdef MBS_SUPPORT, the size of address is 1. */ - jump_n, - - /* Set the following two-byte relative address to the - subsequent two-byte number. The address *includes* the two - bytes of number. */ - /* ifdef MBS_SUPPORT, the size of address is 1. */ - set_number_at, - - wordchar, /* Matches any word-constituent character. */ - notwordchar, /* Matches any char that is not a word-constituent. */ - - wordbeg, /* Succeeds if at word beginning. */ - wordend, /* Succeeds if at word end. */ - - wordbound, /* Succeeds if at a word boundary. */ - notwordbound /* Succeeds if not at a word boundary. */ - -# ifdef emacs - ,before_dot, /* Succeeds if before point. */ - at_dot, /* Succeeds if at point. */ - after_dot, /* Succeeds if after point. */ - - /* Matches any character whose syntax is specified. Followed by - a byte which contains a syntax code, e.g., Sword. */ - syntaxspec, - - /* Matches any character whose syntax is not that specified. */ - notsyntaxspec -# endif /* emacs */ -} re_opcode_t; -#endif /* not INSIDE_RECURSION */ - - -#ifdef BYTE -# define CHAR_T char -# define UCHAR_T unsigned char -# define COMPILED_BUFFER_VAR bufp->buffer -# define OFFSET_ADDRESS_SIZE 2 -# define PREFIX(name) byte_##name -# define ARG_PREFIX(name) name -# define PUT_CHAR(c) putchar (c) -#else -# ifdef WCHAR -# define CHAR_T wchar_t -# define UCHAR_T wchar_t -# define COMPILED_BUFFER_VAR wc_buffer -# define OFFSET_ADDRESS_SIZE 1 /* the size which STORE_NUMBER macro use */ -# define CHAR_CLASS_SIZE ((__alignof__(wctype_t)+sizeof(wctype_t))/sizeof(CHAR_T)+1) -# define PREFIX(name) wcs_##name -# define ARG_PREFIX(name) c##name -/* Should we use wide stream?? */ -# define PUT_CHAR(c) printf ("%C", c); -# define TRUE 1 -# define FALSE 0 -# else -# ifdef MBS_SUPPORT -# define WCHAR -# define INSIDE_RECURSION -# include "regex.c" -# undef INSIDE_RECURSION -# endif -# define BYTE -# define INSIDE_RECURSION -# include "regex.c" -# undef INSIDE_RECURSION -# endif -#endif -#include "unlocked-io.h" - -#ifdef INSIDE_RECURSION -/* Common operations on the compiled pattern. */ - -/* Store NUMBER in two contiguous bytes starting at DESTINATION. */ -/* ifdef MBS_SUPPORT, we store NUMBER in 1 element. */ - -# ifdef WCHAR -# define STORE_NUMBER(destination, number) \ - do { \ - *(destination) = (UCHAR_T)(number); \ - } while (0) -# else /* BYTE */ -# define STORE_NUMBER(destination, number) \ - do { \ - (destination)[0] = (number) & 0377; \ - (destination)[1] = (number) >> 8; \ - } while (0) -# endif /* WCHAR */ - -/* Same as STORE_NUMBER, except increment DESTINATION to - the byte after where the number is stored. Therefore, DESTINATION - must be an lvalue. */ -/* ifdef MBS_SUPPORT, we store NUMBER in 1 element. */ - -# define STORE_NUMBER_AND_INCR(destination, number) \ - do { \ - STORE_NUMBER (destination, number); \ - (destination) += OFFSET_ADDRESS_SIZE; \ - } while (0) - -/* Put into DESTINATION a number stored in two contiguous bytes starting - at SOURCE. */ -/* ifdef MBS_SUPPORT, we store NUMBER in 1 element. */ - -# ifdef WCHAR -# define EXTRACT_NUMBER(destination, source) \ - do { \ - (destination) = *(source); \ - } while (0) -# else /* BYTE */ -# define EXTRACT_NUMBER(destination, source) \ - do { \ - (destination) = *(source) & 0377; \ - (destination) += SIGN_EXTEND_CHAR (*((source) + 1)) << 8; \ - } while (0) -# endif - -# ifdef DEBUG -static void PREFIX(extract_number) _RE_ARGS ((int *dest, UCHAR_T *source)); -static void -PREFIX(extract_number) (dest, source) - int *dest; - UCHAR_T *source; -{ -# ifdef WCHAR - *dest = *source; -# else /* BYTE */ - int temp = SIGN_EXTEND_CHAR (*(source + 1)); - *dest = *source & 0377; - *dest += temp << 8; -# endif -} - -# ifndef EXTRACT_MACROS /* To debug the macros. */ -# undef EXTRACT_NUMBER -# define EXTRACT_NUMBER(dest, src) PREFIX(extract_number) (&dest, src) -# endif /* not EXTRACT_MACROS */ - -# endif /* DEBUG */ - -/* Same as EXTRACT_NUMBER, except increment SOURCE to after the number. - SOURCE must be an lvalue. */ - -# define EXTRACT_NUMBER_AND_INCR(destination, source) \ - do { \ - EXTRACT_NUMBER (destination, source); \ - (source) += OFFSET_ADDRESS_SIZE; \ - } while (0) - -# ifdef DEBUG -static void PREFIX(extract_number_and_incr) _RE_ARGS ((int *destination, - UCHAR_T **source)); -static void -PREFIX(extract_number_and_incr) (destination, source) - int *destination; - UCHAR_T **source; -{ - PREFIX(extract_number) (destination, *source); - *source += OFFSET_ADDRESS_SIZE; -} - -# ifndef EXTRACT_MACROS -# undef EXTRACT_NUMBER_AND_INCR -# define EXTRACT_NUMBER_AND_INCR(dest, src) \ - PREFIX(extract_number_and_incr) (&dest, &src) -# endif /* not EXTRACT_MACROS */ - -# endif /* DEBUG */ - - - -/* If DEBUG is defined, Regex prints many voluminous messages about what - it is doing (if the variable `debug' is nonzero). If linked with the - main program in `iregex.c', you can enter patterns and strings - interactively. And if linked with the main program in `main.c' and - the other test files, you can run the already-written tests. */ - -# ifdef DEBUG - -# ifndef DEFINED_ONCE - -/* We use standard I/O for debugging. */ -# include - -/* It is useful to test things that ``must'' be true when debugging. */ -# include - -static int debug; - -# define DEBUG_STATEMENT(e) e -# define DEBUG_PRINT1(x) if (debug) printf (x) -# define DEBUG_PRINT2(x1, x2) if (debug) printf (x1, x2) -# define DEBUG_PRINT3(x1, x2, x3) if (debug) printf (x1, x2, x3) -# define DEBUG_PRINT4(x1, x2, x3, x4) if (debug) printf (x1, x2, x3, x4) -# endif /* not DEFINED_ONCE */ - -# define DEBUG_PRINT_COMPILED_PATTERN(p, s, e) \ - if (debug) PREFIX(print_partial_compiled_pattern) (s, e) -# define DEBUG_PRINT_DOUBLE_STRING(w, s1, sz1, s2, sz2) \ - if (debug) PREFIX(print_double_string) (w, s1, sz1, s2, sz2) - - -/* Print the fastmap in human-readable form. */ - -# ifndef DEFINED_ONCE -void -print_fastmap (fastmap) - char *fastmap; -{ - unsigned was_a_range = 0; - unsigned i = 0; - - while (i < (1 << BYTEWIDTH)) - { - if (fastmap[i++]) - { - was_a_range = 0; - putchar (i - 1); - while (i < (1 << BYTEWIDTH) && fastmap[i]) - { - was_a_range = 1; - i++; - } - if (was_a_range) - { - printf ("-"); - putchar (i - 1); - } - } - } - putchar ('\n'); -} -# endif /* not DEFINED_ONCE */ - - -/* Print a compiled pattern string in human-readable form, starting at - the START pointer into it and ending just before the pointer END. */ - -void -PREFIX(print_partial_compiled_pattern) (start, end) - UCHAR_T *start; - UCHAR_T *end; -{ - int mcnt, mcnt2; - UCHAR_T *p1; - UCHAR_T *p = start; - UCHAR_T *pend = end; - - if (start == NULL) - { - printf ("(null)\n"); - return; - } - - /* Loop over pattern commands. */ - while (p < pend) - { -# ifdef _LIBC - printf ("%td:\t", p - start); -# else - printf ("%ld:\t", (long int) (p - start)); -# endif - - switch ((re_opcode_t) *p++) - { - case no_op: - printf ("/no_op"); - break; - - case exactn: - mcnt = *p++; - printf ("/exactn/%d", mcnt); - do - { - putchar ('/'); - PUT_CHAR (*p++); - } - while (--mcnt); - break; - -# ifdef MBS_SUPPORT - case exactn_bin: - mcnt = *p++; - printf ("/exactn_bin/%d", mcnt); - do - { - printf("/%lx", (long int) *p++); - } - while (--mcnt); - break; -# endif /* MBS_SUPPORT */ - - case start_memory: - mcnt = *p++; - printf ("/start_memory/%d/%ld", mcnt, (long int) *p++); - break; - - case stop_memory: - mcnt = *p++; - printf ("/stop_memory/%d/%ld", mcnt, (long int) *p++); - break; - - case duplicate: - printf ("/duplicate/%ld", (long int) *p++); - break; - - case anychar: - printf ("/anychar"); - break; - - case charset: - case charset_not: - { -# ifdef WCHAR - int i, length; - wchar_t *workp = p; - printf ("/charset [%s", - (re_opcode_t) *(workp - 1) == charset_not ? "^" : ""); - p += 5; - length = *workp++; /* the length of char_classes */ - for (i=0 ; ibuffer; - - PREFIX(print_partial_compiled_pattern) (buffer, buffer - + bufp->used / sizeof(UCHAR_T)); - printf ("%ld bytes used/%ld bytes allocated.\n", - bufp->used, bufp->allocated); - - if (bufp->fastmap_accurate && bufp->fastmap) - { - printf ("fastmap: "); - print_fastmap (bufp->fastmap); - } - -# ifdef _LIBC - printf ("re_nsub: %Zd\t", bufp->re_nsub); -# else - printf ("re_nsub: %ld\t", (long int) bufp->re_nsub); -# endif - printf ("regs_alloc: %d\t", bufp->regs_allocated); - printf ("can_be_null: %d\t", bufp->can_be_null); - printf ("newline_anchor: %d\n", bufp->newline_anchor); - printf ("no_sub: %d\t", bufp->no_sub); - printf ("not_bol: %d\t", bufp->not_bol); - printf ("not_eol: %d\t", bufp->not_eol); - printf ("syntax: %lx\n", bufp->syntax); - /* Perhaps we should print the translate table? */ -} - - -void -PREFIX(print_double_string) (where, string1, size1, string2, size2) - const CHAR_T *where; - const CHAR_T *string1; - const CHAR_T *string2; - int size1; - int size2; -{ - int this_char; - - if (where == NULL) - printf ("(null)"); - else - { - int cnt; - - if (FIRST_STRING_P (where)) - { - for (this_char = where - string1; this_char < size1; this_char++) - PUT_CHAR (string1[this_char]); - - where = string2; - } - - cnt = 0; - for (this_char = where - string2; this_char < size2; this_char++) - { - PUT_CHAR (string2[this_char]); - if (++cnt > 100) - { - fputs ("...", stdout); - break; - } - } - } -} - -# ifndef DEFINED_ONCE -void -printchar (c) - int c; -{ - putc (c, stderr); -} -# endif - -# else /* not DEBUG */ - -# ifndef DEFINED_ONCE -# undef assert -# define assert(e) - -# define DEBUG_STATEMENT(e) -# define DEBUG_PRINT1(x) -# define DEBUG_PRINT2(x1, x2) -# define DEBUG_PRINT3(x1, x2, x3) -# define DEBUG_PRINT4(x1, x2, x3, x4) -# endif /* not DEFINED_ONCE */ -# define DEBUG_PRINT_COMPILED_PATTERN(p, s, e) -# define DEBUG_PRINT_DOUBLE_STRING(w, s1, sz1, s2, sz2) - -# endif /* not DEBUG */ - - - -# ifdef WCHAR -/* This convert a multibyte string to a wide character string. - And write their correspondances to offset_buffer(see below) - and write whether each wchar_t is binary data to is_binary. - This assume invalid multibyte sequences as binary data. - We assume offset_buffer and is_binary is already allocated - enough space. */ - -static size_t convert_mbs_to_wcs (CHAR_T *dest, const unsigned char* src, - size_t len, int *offset_buffer, - char *is_binary); -static size_t -convert_mbs_to_wcs (dest, src, len, offset_buffer, is_binary) - CHAR_T *dest; - const unsigned char* src; - size_t len; /* the length of multibyte string. */ - - /* It hold correspondances between src(char string) and - dest(wchar_t string) for optimization. - e.g. src = "xxxyzz" - dest = {'X', 'Y', 'Z'} - (each "xxx", "y" and "zz" represent one multibyte character - corresponding to 'X', 'Y' and 'Z'.) - offset_buffer = {0, 0+3("xxx"), 0+3+1("y"), 0+3+1+2("zz")} - = {0, 3, 4, 6} - */ - int *offset_buffer; - char *is_binary; -{ - wchar_t *pdest = dest; - const unsigned char *psrc = src; - size_t wc_count = 0; - - mbstate_t mbs; - int i, consumed; - size_t mb_remain = len; - size_t mb_count = 0; - - /* Initialize the conversion state. */ - memset (&mbs, 0, sizeof (mbstate_t)); - - offset_buffer[0] = 0; - for( ; mb_remain > 0 ; ++wc_count, ++pdest, mb_remain -= consumed, - psrc += consumed) - { - consumed = mbrtowc (pdest, psrc, mb_remain, &mbs); - - if (consumed <= 0) - /* failed to convert. maybe src contains binary data. - So we consume 1 byte manualy. */ - { - *pdest = *psrc; - consumed = 1; - is_binary[wc_count] = TRUE; - } - else - is_binary[wc_count] = FALSE; - /* In sjis encoding, we use yen sign as escape character in - place of reverse solidus. So we convert 0x5c(yen sign in - sjis) to not 0xa5(yen sign in UCS2) but 0x5c(reverse - solidus in UCS2). */ - if (consumed == 1 && (int) *psrc == 0x5c && (int) *pdest == 0xa5) - *pdest = (wchar_t) *psrc; - - offset_buffer[wc_count + 1] = mb_count += consumed; - } - - /* Fill remain of the buffer with sentinel. */ - for (i = wc_count + 1 ; i <= len ; i++) - offset_buffer[i] = mb_count + 1; - - return wc_count; -} - -# endif /* WCHAR */ - -#else /* not INSIDE_RECURSION */ - -/* Set by `re_set_syntax' to the current regexp syntax to recognize. Can - also be assigned to arbitrarily: each pattern buffer stores its own - syntax, so it can be changed between regex compilations. */ -/* This has no initializer because initialized variables in Emacs - become read-only after dumping. */ -reg_syntax_t re_syntax_options; - - -/* Specify the precise syntax of regexps for compilation. This provides - for compatibility for various utilities which historically have - different, incompatible syntaxes. - - The argument SYNTAX is a bit mask comprised of the various bits - defined in regex.h. We return the old syntax. */ - -reg_syntax_t -re_set_syntax (syntax) - reg_syntax_t syntax; -{ - reg_syntax_t ret = re_syntax_options; - - re_syntax_options = syntax; -# ifdef DEBUG - if (syntax & RE_DEBUG) - debug = 1; - else if (debug) /* was on but now is not */ - debug = 0; -# endif /* DEBUG */ - return ret; -} -# ifdef _LIBC -weak_alias (__re_set_syntax, re_set_syntax) -# endif - -/* This table gives an error message for each of the error codes listed - in regex.h. Obviously the order here has to be same as there. - POSIX doesn't require that we do anything for REG_NOERROR, - but why not be nice? */ - -static const char re_error_msgid[] = - { -# define REG_NOERROR_IDX 0 - gettext_noop ("Success") /* REG_NOERROR */ - "\0" -# define REG_NOMATCH_IDX (REG_NOERROR_IDX + sizeof "Success") - gettext_noop ("No match") /* REG_NOMATCH */ - "\0" -# define REG_BADPAT_IDX (REG_NOMATCH_IDX + sizeof "No match") - gettext_noop ("Invalid regular expression") /* REG_BADPAT */ - "\0" -# define REG_ECOLLATE_IDX (REG_BADPAT_IDX + sizeof "Invalid regular expression") - gettext_noop ("Invalid collation character") /* REG_ECOLLATE */ - "\0" -# define REG_ECTYPE_IDX (REG_ECOLLATE_IDX + sizeof "Invalid collation character") - gettext_noop ("Invalid character class name") /* REG_ECTYPE */ - "\0" -# define REG_EESCAPE_IDX (REG_ECTYPE_IDX + sizeof "Invalid character class name") - gettext_noop ("Trailing backslash") /* REG_EESCAPE */ - "\0" -# define REG_ESUBREG_IDX (REG_EESCAPE_IDX + sizeof "Trailing backslash") - gettext_noop ("Invalid back reference") /* REG_ESUBREG */ - "\0" -# define REG_EBRACK_IDX (REG_ESUBREG_IDX + sizeof "Invalid back reference") - gettext_noop ("Unmatched [ or [^") /* REG_EBRACK */ - "\0" -# define REG_EPAREN_IDX (REG_EBRACK_IDX + sizeof "Unmatched [ or [^") - gettext_noop ("Unmatched ( or \\(") /* REG_EPAREN */ - "\0" -# define REG_EBRACE_IDX (REG_EPAREN_IDX + sizeof "Unmatched ( or \\(") - gettext_noop ("Unmatched \\{") /* REG_EBRACE */ - "\0" -# define REG_BADBR_IDX (REG_EBRACE_IDX + sizeof "Unmatched \\{") - gettext_noop ("Invalid content of \\{\\}") /* REG_BADBR */ - "\0" -# define REG_ERANGE_IDX (REG_BADBR_IDX + sizeof "Invalid content of \\{\\}") - gettext_noop ("Invalid range end") /* REG_ERANGE */ - "\0" -# define REG_ESPACE_IDX (REG_ERANGE_IDX + sizeof "Invalid range end") - gettext_noop ("Memory exhausted") /* REG_ESPACE */ - "\0" -# define REG_BADRPT_IDX (REG_ESPACE_IDX + sizeof "Memory exhausted") - gettext_noop ("Invalid preceding regular expression") /* REG_BADRPT */ - "\0" -# define REG_EEND_IDX (REG_BADRPT_IDX + sizeof "Invalid preceding regular expression") - gettext_noop ("Premature end of regular expression") /* REG_EEND */ - "\0" -# define REG_ESIZE_IDX (REG_EEND_IDX + sizeof "Premature end of regular expression") - gettext_noop ("Regular expression too big") /* REG_ESIZE */ - "\0" -# define REG_ERPAREN_IDX (REG_ESIZE_IDX + sizeof "Regular expression too big") - gettext_noop ("Unmatched ) or \\)") /* REG_ERPAREN */ - }; - -static const size_t re_error_msgid_idx[] = - { - REG_NOERROR_IDX, - REG_NOMATCH_IDX, - REG_BADPAT_IDX, - REG_ECOLLATE_IDX, - REG_ECTYPE_IDX, - REG_EESCAPE_IDX, - REG_ESUBREG_IDX, - REG_EBRACK_IDX, - REG_EPAREN_IDX, - REG_EBRACE_IDX, - REG_BADBR_IDX, - REG_ERANGE_IDX, - REG_ESPACE_IDX, - REG_BADRPT_IDX, - REG_EEND_IDX, - REG_ESIZE_IDX, - REG_ERPAREN_IDX - }; - -#endif /* INSIDE_RECURSION */ - -#ifndef DEFINED_ONCE -/* Avoiding alloca during matching, to placate r_alloc. */ - -/* Define MATCH_MAY_ALLOCATE unless we need to make sure that the - searching and matching functions should not call alloca. On some - systems, alloca is implemented in terms of malloc, and if we're - using the relocating allocator routines, then malloc could cause a - relocation, which might (if the strings being searched are in the - ralloc heap) shift the data out from underneath the regexp - routines. - - Here's another reason to avoid allocation: Emacs - processes input from X in a signal handler; processing X input may - call malloc; if input arrives while a matching routine is calling - malloc, then we're scrod. But Emacs can't just block input while - calling matching routines; then we don't notice interrupts when - they come in. So, Emacs blocks input around all regexp calls - except the matching calls, which it leaves unprotected, in the - faith that they will not malloc. */ - -/* Normally, this is fine. */ -# define MATCH_MAY_ALLOCATE - -/* When using GNU C, we are not REALLY using the C alloca, no matter - what config.h may say. So don't take precautions for it. */ -# ifdef __GNUC__ -# undef C_ALLOCA -# endif - -/* The match routines may not allocate if (1) they would do it with malloc - and (2) it's not safe for them to use malloc. - Note that if REL_ALLOC is defined, matching would not use malloc for the - failure stack, but we would still use it for the register vectors; - so REL_ALLOC should not affect this. */ -# if (defined C_ALLOCA || defined REGEX_MALLOC) && defined emacs -# undef MATCH_MAY_ALLOCATE -# endif -#endif /* not DEFINED_ONCE */ - -#ifdef INSIDE_RECURSION -/* Failure stack declarations and macros; both re_compile_fastmap and - re_match_2 use a failure stack. These have to be macros because of - REGEX_ALLOCATE_STACK. */ - - -/* Number of failure points for which to initially allocate space - when matching. If this number is exceeded, we allocate more - space, so it is not a hard limit. */ -# ifndef INIT_FAILURE_ALLOC -# define INIT_FAILURE_ALLOC 5 -# endif - -/* Roughly the maximum number of failure points on the stack. Would be - exactly that if always used MAX_FAILURE_ITEMS items each time we failed. - This is a variable only so users of regex can assign to it; we never - change it ourselves. */ - -# ifdef INT_IS_16BIT - -# ifndef DEFINED_ONCE -# if defined MATCH_MAY_ALLOCATE -/* 4400 was enough to cause a crash on Alpha OSF/1, - whose default stack limit is 2mb. */ -long int re_max_failures = 4000; -# else -long int re_max_failures = 2000; -# endif -# endif - -union PREFIX(fail_stack_elt) -{ - UCHAR_T *pointer; - long int integer; -}; - -typedef union PREFIX(fail_stack_elt) PREFIX(fail_stack_elt_t); - -typedef struct -{ - PREFIX(fail_stack_elt_t) *stack; - unsigned long int size; - unsigned long int avail; /* Offset of next open position. */ -} PREFIX(fail_stack_type); - -# else /* not INT_IS_16BIT */ - -# ifndef DEFINED_ONCE -# if defined MATCH_MAY_ALLOCATE -/* 4400 was enough to cause a crash on Alpha OSF/1, - whose default stack limit is 2mb. */ -int re_max_failures = 4000; -# else -int re_max_failures = 2000; -# endif -# endif - -union PREFIX(fail_stack_elt) -{ - UCHAR_T *pointer; - int integer; -}; - -typedef union PREFIX(fail_stack_elt) PREFIX(fail_stack_elt_t); - -typedef struct -{ - PREFIX(fail_stack_elt_t) *stack; - unsigned size; - unsigned avail; /* Offset of next open position. */ -} PREFIX(fail_stack_type); - -# endif /* INT_IS_16BIT */ - -# ifndef DEFINED_ONCE -# define FAIL_STACK_EMPTY() (fail_stack.avail == 0) -# define FAIL_STACK_PTR_EMPTY() (fail_stack_ptr->avail == 0) -# define FAIL_STACK_FULL() (fail_stack.avail == fail_stack.size) -# endif - - -/* Define macros to initialize and free the failure stack. - Do `return -2' if the alloc fails. */ - -# ifdef MATCH_MAY_ALLOCATE -# define INIT_FAIL_STACK() \ - do { \ - fail_stack.stack = (PREFIX(fail_stack_elt_t) *) \ - REGEX_ALLOCATE_STACK (INIT_FAILURE_ALLOC * sizeof (PREFIX(fail_stack_elt_t))); \ - \ - if (fail_stack.stack == NULL) \ - return -2; \ - \ - fail_stack.size = INIT_FAILURE_ALLOC; \ - fail_stack.avail = 0; \ - } while (0) - -# define RESET_FAIL_STACK() REGEX_FREE_STACK (fail_stack.stack) -# else -# define INIT_FAIL_STACK() \ - do { \ - fail_stack.avail = 0; \ - } while (0) - -# define RESET_FAIL_STACK() -# endif - - -/* Double the size of FAIL_STACK, up to approximately `re_max_failures' items. - - Return 1 if succeeds, and 0 if either ran out of memory - allocating space for it or it was already too large. - - REGEX_REALLOCATE_STACK requires `destination' be declared. */ - -# define DOUBLE_FAIL_STACK(fail_stack) \ - ((fail_stack).size > (unsigned) (re_max_failures * MAX_FAILURE_ITEMS) \ - ? 0 \ - : ((fail_stack).stack = (PREFIX(fail_stack_elt_t) *) \ - REGEX_REALLOCATE_STACK ((fail_stack).stack, \ - (fail_stack).size * sizeof (PREFIX(fail_stack_elt_t)), \ - ((fail_stack).size << 1) * sizeof (PREFIX(fail_stack_elt_t))),\ - \ - (fail_stack).stack == NULL \ - ? 0 \ - : ((fail_stack).size <<= 1, \ - 1))) - - -/* Push pointer POINTER on FAIL_STACK. - Return 1 if was able to do so and 0 if ran out of memory allocating - space to do so. */ -# define PUSH_PATTERN_OP(POINTER, FAIL_STACK) \ - ((FAIL_STACK_FULL () \ - && !DOUBLE_FAIL_STACK (FAIL_STACK)) \ - ? 0 \ - : ((FAIL_STACK).stack[(FAIL_STACK).avail++].pointer = POINTER, \ - 1)) - -/* Push a pointer value onto the failure stack. - Assumes the variable `fail_stack'. Probably should only - be called from within `PUSH_FAILURE_POINT'. */ -# define PUSH_FAILURE_POINTER(item) \ - fail_stack.stack[fail_stack.avail++].pointer = (UCHAR_T *) (item) - -/* This pushes an integer-valued item onto the failure stack. - Assumes the variable `fail_stack'. Probably should only - be called from within `PUSH_FAILURE_POINT'. */ -# define PUSH_FAILURE_INT(item) \ - fail_stack.stack[fail_stack.avail++].integer = (item) - -/* Push a fail_stack_elt_t value onto the failure stack. - Assumes the variable `fail_stack'. Probably should only - be called from within `PUSH_FAILURE_POINT'. */ -# define PUSH_FAILURE_ELT(item) \ - fail_stack.stack[fail_stack.avail++] = (item) - -/* These three POP... operations complement the three PUSH... operations. - All assume that `fail_stack' is nonempty. */ -# define POP_FAILURE_POINTER() fail_stack.stack[--fail_stack.avail].pointer -# define POP_FAILURE_INT() fail_stack.stack[--fail_stack.avail].integer -# define POP_FAILURE_ELT() fail_stack.stack[--fail_stack.avail] - -/* Used to omit pushing failure point id's when we're not debugging. */ -# ifdef DEBUG -# define DEBUG_PUSH PUSH_FAILURE_INT -# define DEBUG_POP(item_addr) *(item_addr) = POP_FAILURE_INT () -# else -# define DEBUG_PUSH(item) -# define DEBUG_POP(item_addr) -# endif - - -/* Push the information about the state we will need - if we ever fail back to it. - - Requires variables fail_stack, regstart, regend, reg_info, and - num_regs_pushed be declared. DOUBLE_FAIL_STACK requires `destination' - be declared. - - Does `return FAILURE_CODE' if runs out of memory. */ - -# define PUSH_FAILURE_POINT(pattern_place, string_place, failure_code) \ - do { \ - char *destination; \ - /* Must be int, so when we don't save any registers, the arithmetic \ - of 0 + -1 isn't done as unsigned. */ \ - /* Can't be int, since there is not a shred of a guarantee that int \ - is wide enough to hold a value of something to which pointer can \ - be assigned */ \ - active_reg_t this_reg; \ - \ - DEBUG_STATEMENT (failure_id++); \ - DEBUG_STATEMENT (nfailure_points_pushed++); \ - DEBUG_PRINT2 ("\nPUSH_FAILURE_POINT #%u:\n", failure_id); \ - DEBUG_PRINT2 (" Before push, next avail: %d\n", (fail_stack).avail);\ - DEBUG_PRINT2 (" size: %d\n", (fail_stack).size);\ - \ - DEBUG_PRINT2 (" slots needed: %ld\n", NUM_FAILURE_ITEMS); \ - DEBUG_PRINT2 (" available: %d\n", REMAINING_AVAIL_SLOTS); \ - \ - /* Ensure we have enough space allocated for what we will push. */ \ - while (REMAINING_AVAIL_SLOTS < NUM_FAILURE_ITEMS) \ - { \ - if (!DOUBLE_FAIL_STACK (fail_stack)) \ - return failure_code; \ - \ - DEBUG_PRINT2 ("\n Doubled stack; size now: %d\n", \ - (fail_stack).size); \ - DEBUG_PRINT2 (" slots available: %d\n", REMAINING_AVAIL_SLOTS);\ - } \ - \ - /* Push the info, starting with the registers. */ \ - DEBUG_PRINT1 ("\n"); \ - \ - if (1) \ - for (this_reg = lowest_active_reg; this_reg <= highest_active_reg; \ - this_reg++) \ - { \ - DEBUG_PRINT2 (" Pushing reg: %lu\n", this_reg); \ - DEBUG_STATEMENT (num_regs_pushed++); \ - \ - DEBUG_PRINT2 (" start: %p\n", regstart[this_reg]); \ - PUSH_FAILURE_POINTER (regstart[this_reg]); \ - \ - DEBUG_PRINT2 (" end: %p\n", regend[this_reg]); \ - PUSH_FAILURE_POINTER (regend[this_reg]); \ - \ - DEBUG_PRINT2 (" info: %p\n ", \ - reg_info[this_reg].word.pointer); \ - DEBUG_PRINT2 (" match_null=%d", \ - REG_MATCH_NULL_STRING_P (reg_info[this_reg])); \ - DEBUG_PRINT2 (" active=%d", IS_ACTIVE (reg_info[this_reg])); \ - DEBUG_PRINT2 (" matched_something=%d", \ - MATCHED_SOMETHING (reg_info[this_reg])); \ - DEBUG_PRINT2 (" ever_matched=%d", \ - EVER_MATCHED_SOMETHING (reg_info[this_reg])); \ - DEBUG_PRINT1 ("\n"); \ - PUSH_FAILURE_ELT (reg_info[this_reg].word); \ - } \ - \ - DEBUG_PRINT2 (" Pushing low active reg: %ld\n", lowest_active_reg);\ - PUSH_FAILURE_INT (lowest_active_reg); \ - \ - DEBUG_PRINT2 (" Pushing high active reg: %ld\n", highest_active_reg);\ - PUSH_FAILURE_INT (highest_active_reg); \ - \ - DEBUG_PRINT2 (" Pushing pattern %p:\n", pattern_place); \ - DEBUG_PRINT_COMPILED_PATTERN (bufp, pattern_place, pend); \ - PUSH_FAILURE_POINTER (pattern_place); \ - \ - DEBUG_PRINT2 (" Pushing string %p: `", string_place); \ - DEBUG_PRINT_DOUBLE_STRING (string_place, string1, size1, string2, \ - size2); \ - DEBUG_PRINT1 ("'\n"); \ - PUSH_FAILURE_POINTER (string_place); \ - \ - DEBUG_PRINT2 (" Pushing failure id: %u\n", failure_id); \ - DEBUG_PUSH (failure_id); \ - } while (0) - -# ifndef DEFINED_ONCE -/* This is the number of items that are pushed and popped on the stack - for each register. */ -# define NUM_REG_ITEMS 3 - -/* Individual items aside from the registers. */ -# ifdef DEBUG -# define NUM_NONREG_ITEMS 5 /* Includes failure point id. */ -# else -# define NUM_NONREG_ITEMS 4 -# endif - -/* We push at most this many items on the stack. */ -/* We used to use (num_regs - 1), which is the number of registers - this regexp will save; but that was changed to 5 - to avoid stack overflow for a regexp with lots of parens. */ -# define MAX_FAILURE_ITEMS (5 * NUM_REG_ITEMS + NUM_NONREG_ITEMS) - -/* We actually push this many items. */ -# define NUM_FAILURE_ITEMS \ - (((0 \ - ? 0 : highest_active_reg - lowest_active_reg + 1) \ - * NUM_REG_ITEMS) \ - + NUM_NONREG_ITEMS) - -/* How many items can still be added to the stack without overflowing it. */ -# define REMAINING_AVAIL_SLOTS ((fail_stack).size - (fail_stack).avail) -# endif /* not DEFINED_ONCE */ - - -/* Pops what PUSH_FAIL_STACK pushes. - - We restore into the parameters, all of which should be lvalues: - STR -- the saved data position. - PAT -- the saved pattern position. - LOW_REG, HIGH_REG -- the highest and lowest active registers. - REGSTART, REGEND -- arrays of string positions. - REG_INFO -- array of information about each subexpression. - - Also assumes the variables `fail_stack' and (if debugging), `bufp', - `pend', `string1', `size1', `string2', and `size2'. */ -# define POP_FAILURE_POINT(str, pat, low_reg, high_reg, regstart, regend, reg_info)\ -{ \ - DEBUG_STATEMENT (unsigned failure_id;) \ - active_reg_t this_reg; \ - const UCHAR_T *string_temp; \ - \ - assert (!FAIL_STACK_EMPTY ()); \ - \ - /* Remove failure points and point to how many regs pushed. */ \ - DEBUG_PRINT1 ("POP_FAILURE_POINT:\n"); \ - DEBUG_PRINT2 (" Before pop, next avail: %d\n", fail_stack.avail); \ - DEBUG_PRINT2 (" size: %d\n", fail_stack.size); \ - \ - assert (fail_stack.avail >= NUM_NONREG_ITEMS); \ - \ - DEBUG_POP (&failure_id); \ - DEBUG_PRINT2 (" Popping failure id: %u\n", failure_id); \ - \ - /* If the saved string location is NULL, it came from an \ - on_failure_keep_string_jump opcode, and we want to throw away the \ - saved NULL, thus retaining our current position in the string. */ \ - string_temp = POP_FAILURE_POINTER (); \ - if (string_temp != NULL) \ - str = (const CHAR_T *) string_temp; \ - \ - DEBUG_PRINT2 (" Popping string %p: `", str); \ - DEBUG_PRINT_DOUBLE_STRING (str, string1, size1, string2, size2); \ - DEBUG_PRINT1 ("'\n"); \ - \ - pat = (UCHAR_T *) POP_FAILURE_POINTER (); \ - DEBUG_PRINT2 (" Popping pattern %p:\n", pat); \ - DEBUG_PRINT_COMPILED_PATTERN (bufp, pat, pend); \ - \ - /* Restore register info. */ \ - high_reg = (active_reg_t) POP_FAILURE_INT (); \ - DEBUG_PRINT2 (" Popping high active reg: %ld\n", high_reg); \ - \ - low_reg = (active_reg_t) POP_FAILURE_INT (); \ - DEBUG_PRINT2 (" Popping low active reg: %ld\n", low_reg); \ - \ - if (1) \ - for (this_reg = high_reg; this_reg >= low_reg; this_reg--) \ - { \ - DEBUG_PRINT2 (" Popping reg: %ld\n", this_reg); \ - \ - reg_info[this_reg].word = POP_FAILURE_ELT (); \ - DEBUG_PRINT2 (" info: %p\n", \ - reg_info[this_reg].word.pointer); \ - \ - regend[this_reg] = (const CHAR_T *) POP_FAILURE_POINTER (); \ - DEBUG_PRINT2 (" end: %p\n", regend[this_reg]); \ - \ - regstart[this_reg] = (const CHAR_T *) POP_FAILURE_POINTER (); \ - DEBUG_PRINT2 (" start: %p\n", regstart[this_reg]); \ - } \ - else \ - { \ - for (this_reg = highest_active_reg; this_reg > high_reg; this_reg--) \ - { \ - reg_info[this_reg].word.integer = 0; \ - regend[this_reg] = 0; \ - regstart[this_reg] = 0; \ - } \ - highest_active_reg = high_reg; \ - } \ - \ - set_regs_matched_done = 0; \ - DEBUG_STATEMENT (nfailure_points_popped++); \ -} /* POP_FAILURE_POINT */ - -/* Structure for per-register (a.k.a. per-group) information. - Other register information, such as the - starting and ending positions (which are addresses), and the list of - inner groups (which is a bits list) are maintained in separate - variables. - - We are making a (strictly speaking) nonportable assumption here: that - the compiler will pack our bit fields into something that fits into - the type of `word', i.e., is something that fits into one item on the - failure stack. */ - - -/* Declarations and macros for re_match_2. */ - -typedef union -{ - PREFIX(fail_stack_elt_t) word; - struct - { - /* This field is one if this group can match the empty string, - zero if not. If not yet determined, `MATCH_NULL_UNSET_VALUE'. */ -# define MATCH_NULL_UNSET_VALUE 3 - unsigned match_null_string_p : 2; - unsigned is_active : 1; - unsigned matched_something : 1; - unsigned ever_matched_something : 1; - } bits; -} PREFIX(register_info_type); - -# ifndef DEFINED_ONCE -# define REG_MATCH_NULL_STRING_P(R) ((R).bits.match_null_string_p) -# define IS_ACTIVE(R) ((R).bits.is_active) -# define MATCHED_SOMETHING(R) ((R).bits.matched_something) -# define EVER_MATCHED_SOMETHING(R) ((R).bits.ever_matched_something) - - -/* Call this when have matched a real character; it sets `matched' flags - for the subexpressions which we are currently inside. Also records - that those subexprs have matched. */ -# define SET_REGS_MATCHED() \ - do \ - { \ - if (!set_regs_matched_done) \ - { \ - active_reg_t r; \ - set_regs_matched_done = 1; \ - for (r = lowest_active_reg; r <= highest_active_reg; r++) \ - { \ - MATCHED_SOMETHING (reg_info[r]) \ - = EVER_MATCHED_SOMETHING (reg_info[r]) \ - = 1; \ - } \ - } \ - } \ - while (0) -# endif /* not DEFINED_ONCE */ - -/* Registers are set to a sentinel when they haven't yet matched. */ -static CHAR_T PREFIX(reg_unset_dummy); -# define REG_UNSET_VALUE (&PREFIX(reg_unset_dummy)) -# define REG_UNSET(e) ((e) == REG_UNSET_VALUE) - -/* Subroutine declarations and macros for regex_compile. */ -static void PREFIX(store_op1) _RE_ARGS ((re_opcode_t op, UCHAR_T *loc, int arg)); -static void PREFIX(store_op2) _RE_ARGS ((re_opcode_t op, UCHAR_T *loc, - int arg1, int arg2)); -static void PREFIX(insert_op1) _RE_ARGS ((re_opcode_t op, UCHAR_T *loc, - int arg, UCHAR_T *end)); -static void PREFIX(insert_op2) _RE_ARGS ((re_opcode_t op, UCHAR_T *loc, - int arg1, int arg2, UCHAR_T *end)); -static boolean PREFIX(at_begline_loc_p) _RE_ARGS ((const CHAR_T *pattern, - const CHAR_T *p, - reg_syntax_t syntax)); -static boolean PREFIX(at_endline_loc_p) _RE_ARGS ((const CHAR_T *p, - const CHAR_T *pend, - reg_syntax_t syntax)); -# ifdef WCHAR -static reg_errcode_t wcs_compile_range _RE_ARGS ((CHAR_T range_start, - const CHAR_T **p_ptr, - const CHAR_T *pend, - char *translate, - reg_syntax_t syntax, - UCHAR_T *b, - CHAR_T *char_set)); -static void insert_space _RE_ARGS ((int num, CHAR_T *loc, CHAR_T *end)); -# else /* BYTE */ -static reg_errcode_t byte_compile_range _RE_ARGS ((unsigned int range_start, - const char **p_ptr, - const char *pend, - char *translate, - reg_syntax_t syntax, - unsigned char *b)); -# endif /* WCHAR */ - -/* Fetch the next character in the uncompiled pattern---translating it - if necessary. Also cast from a signed character in the constant - string passed to us by the user to an unsigned char that we can use - as an array index (in, e.g., `translate'). */ -/* ifdef MBS_SUPPORT, we translate only if character <= 0xff, - because it is impossible to allocate 4GB array for some encodings - which have 4 byte character_set like UCS4. */ -# ifndef PATFETCH -# ifdef WCHAR -# define PATFETCH(c) \ - do {if (p == pend) return REG_EEND; \ - c = (UCHAR_T) *p++; \ - if (translate && (c <= 0xff)) c = (UCHAR_T) translate[c]; \ - } while (0) -# else /* BYTE */ -# define PATFETCH(c) \ - do {if (p == pend) return REG_EEND; \ - c = (unsigned char) *p++; \ - if (translate) c = (unsigned char) translate[c]; \ - } while (0) -# endif /* WCHAR */ -# endif - -/* Fetch the next character in the uncompiled pattern, with no - translation. */ -# define PATFETCH_RAW(c) \ - do {if (p == pend) return REG_EEND; \ - c = (UCHAR_T) *p++; \ - } while (0) - -/* Go backwards one character in the pattern. */ -# define PATUNFETCH p-- - - -/* If `translate' is non-null, return translate[D], else just D. We - cast the subscript to translate because some data is declared as - `char *', to avoid warnings when a string constant is passed. But - when we use a character as a subscript we must make it unsigned. */ -/* ifdef MBS_SUPPORT, we translate only if character <= 0xff, - because it is impossible to allocate 4GB array for some encodings - which have 4 byte character_set like UCS4. */ - -# ifndef TRANSLATE -# ifdef WCHAR -# define TRANSLATE(d) \ - ((translate && ((UCHAR_T) (d)) <= 0xff) \ - ? (char) translate[(unsigned char) (d)] : (d)) -# else /* BYTE */ -# define TRANSLATE(d) \ - (translate ? (char) translate[(unsigned char) (d)] : (d)) -# endif /* WCHAR */ -# endif - - -/* Macros for outputting the compiled pattern into `buffer'. */ - -/* If the buffer isn't allocated when it comes in, use this. */ -# define INIT_BUF_SIZE (32 * sizeof(UCHAR_T)) - -/* Make sure we have at least N more bytes of space in buffer. */ -# ifdef WCHAR -# define GET_BUFFER_SPACE(n) \ - while (((unsigned long)b - (unsigned long)COMPILED_BUFFER_VAR \ - + (n)*sizeof(CHAR_T)) > bufp->allocated) \ - EXTEND_BUFFER () -# else /* BYTE */ -# define GET_BUFFER_SPACE(n) \ - while ((unsigned long) (b - bufp->buffer + (n)) > bufp->allocated) \ - EXTEND_BUFFER () -# endif /* WCHAR */ - -/* Make sure we have one more byte of buffer space and then add C to it. */ -# define BUF_PUSH(c) \ - do { \ - GET_BUFFER_SPACE (1); \ - *b++ = (UCHAR_T) (c); \ - } while (0) - - -/* Ensure we have two more bytes of buffer space and then append C1 and C2. */ -# define BUF_PUSH_2(c1, c2) \ - do { \ - GET_BUFFER_SPACE (2); \ - *b++ = (UCHAR_T) (c1); \ - *b++ = (UCHAR_T) (c2); \ - } while (0) - - -/* As with BUF_PUSH_2, except for three bytes. */ -# define BUF_PUSH_3(c1, c2, c3) \ - do { \ - GET_BUFFER_SPACE (3); \ - *b++ = (UCHAR_T) (c1); \ - *b++ = (UCHAR_T) (c2); \ - *b++ = (UCHAR_T) (c3); \ - } while (0) - -/* Store a jump with opcode OP at LOC to location TO. We store a - relative address offset by the three bytes the jump itself occupies. */ -# define STORE_JUMP(op, loc, to) \ - PREFIX(store_op1) (op, loc, (int) ((to) - (loc) - (1 + OFFSET_ADDRESS_SIZE))) - -/* Likewise, for a two-argument jump. */ -# define STORE_JUMP2(op, loc, to, arg) \ - PREFIX(store_op2) (op, loc, (int) ((to) - (loc) - (1 + OFFSET_ADDRESS_SIZE)), arg) - -/* Like `STORE_JUMP', but for inserting. Assume `b' is the buffer end. */ -# define INSERT_JUMP(op, loc, to) \ - PREFIX(insert_op1) (op, loc, (int) ((to) - (loc) - (1 + OFFSET_ADDRESS_SIZE)), b) - -/* Like `STORE_JUMP2', but for inserting. Assume `b' is the buffer end. */ -# define INSERT_JUMP2(op, loc, to, arg) \ - PREFIX(insert_op2) (op, loc, (int) ((to) - (loc) - (1 + OFFSET_ADDRESS_SIZE)),\ - arg, b) - -/* This is not an arbitrary limit: the arguments which represent offsets - into the pattern are two bytes long. So if 2^16 bytes turns out to - be too small, many things would have to change. */ -/* Any other compiler which, like MSC, has allocation limit below 2^16 - bytes will have to use approach similar to what was done below for - MSC and drop MAX_BUF_SIZE a bit. Otherwise you may end up - reallocating to 0 bytes. Such thing is not going to work too well. - You have been warned!! */ -# ifndef DEFINED_ONCE -# if defined _MSC_VER && !defined WIN32 -/* Microsoft C 16-bit versions limit malloc to approx 65512 bytes. - The REALLOC define eliminates a flurry of conversion warnings, - but is not required. */ -# define MAX_BUF_SIZE 65500L -# define REALLOC(p,s) realloc ((p), (size_t) (s)) -# else -# define MAX_BUF_SIZE (1L << 16) -# define REALLOC(p,s) realloc ((p), (s)) -# endif - -/* Extend the buffer by twice its current size via realloc and - reset the pointers that pointed into the old block to point to the - correct places in the new one. If extending the buffer results in it - being larger than MAX_BUF_SIZE, then flag memory exhausted. */ -# if __BOUNDED_POINTERS__ -# define SET_HIGH_BOUND(P) (__ptrhigh (P) = __ptrlow (P) + bufp->allocated) -# define MOVE_BUFFER_POINTER(P) \ - (__ptrlow (P) += incr, SET_HIGH_BOUND (P), __ptrvalue (P) += incr) -# define ELSE_EXTEND_BUFFER_HIGH_BOUND \ - else \ - { \ - SET_HIGH_BOUND (b); \ - SET_HIGH_BOUND (begalt); \ - if (fixup_alt_jump) \ - SET_HIGH_BOUND (fixup_alt_jump); \ - if (laststart) \ - SET_HIGH_BOUND (laststart); \ - if (pending_exact) \ - SET_HIGH_BOUND (pending_exact); \ - } -# else -# define MOVE_BUFFER_POINTER(P) (P) += incr -# define ELSE_EXTEND_BUFFER_HIGH_BOUND -# endif -# endif /* not DEFINED_ONCE */ - -# ifdef WCHAR -# define EXTEND_BUFFER() \ - do { \ - UCHAR_T *old_buffer = COMPILED_BUFFER_VAR; \ - int wchar_count; \ - if (bufp->allocated + sizeof(UCHAR_T) > MAX_BUF_SIZE) \ - return REG_ESIZE; \ - bufp->allocated <<= 1; \ - if (bufp->allocated > MAX_BUF_SIZE) \ - bufp->allocated = MAX_BUF_SIZE; \ - /* How many characters the new buffer can have? */ \ - wchar_count = bufp->allocated / sizeof(UCHAR_T); \ - if (wchar_count == 0) wchar_count = 1; \ - /* Truncate the buffer to CHAR_T align. */ \ - bufp->allocated = wchar_count * sizeof(UCHAR_T); \ - RETALLOC (COMPILED_BUFFER_VAR, wchar_count, UCHAR_T); \ - bufp->buffer = (char*)COMPILED_BUFFER_VAR; \ - if (COMPILED_BUFFER_VAR == NULL) \ - return REG_ESPACE; \ - /* If the buffer moved, move all the pointers into it. */ \ - if (old_buffer != COMPILED_BUFFER_VAR) \ - { \ - int incr = COMPILED_BUFFER_VAR - old_buffer; \ - MOVE_BUFFER_POINTER (b); \ - MOVE_BUFFER_POINTER (begalt); \ - if (fixup_alt_jump) \ - MOVE_BUFFER_POINTER (fixup_alt_jump); \ - if (laststart) \ - MOVE_BUFFER_POINTER (laststart); \ - if (pending_exact) \ - MOVE_BUFFER_POINTER (pending_exact); \ - } \ - ELSE_EXTEND_BUFFER_HIGH_BOUND \ - } while (0) -# else /* BYTE */ -# define EXTEND_BUFFER() \ - do { \ - UCHAR_T *old_buffer = COMPILED_BUFFER_VAR; \ - if (bufp->allocated == MAX_BUF_SIZE) \ - return REG_ESIZE; \ - bufp->allocated <<= 1; \ - if (bufp->allocated > MAX_BUF_SIZE) \ - bufp->allocated = MAX_BUF_SIZE; \ - bufp->buffer = (UCHAR_T *) REALLOC (COMPILED_BUFFER_VAR, \ - bufp->allocated); \ - if (COMPILED_BUFFER_VAR == NULL) \ - return REG_ESPACE; \ - /* If the buffer moved, move all the pointers into it. */ \ - if (old_buffer != COMPILED_BUFFER_VAR) \ - { \ - int incr = COMPILED_BUFFER_VAR - old_buffer; \ - MOVE_BUFFER_POINTER (b); \ - MOVE_BUFFER_POINTER (begalt); \ - if (fixup_alt_jump) \ - MOVE_BUFFER_POINTER (fixup_alt_jump); \ - if (laststart) \ - MOVE_BUFFER_POINTER (laststart); \ - if (pending_exact) \ - MOVE_BUFFER_POINTER (pending_exact); \ - } \ - ELSE_EXTEND_BUFFER_HIGH_BOUND \ - } while (0) -# endif /* WCHAR */ - -# ifndef DEFINED_ONCE -/* Since we have one byte reserved for the register number argument to - {start,stop}_memory, the maximum number of groups we can report - things about is what fits in that byte. */ -# define MAX_REGNUM 255 - -/* But patterns can have more than `MAX_REGNUM' registers. We just - ignore the excess. */ -typedef unsigned regnum_t; - - -/* Macros for the compile stack. */ - -/* Since offsets can go either forwards or backwards, this type needs to - be able to hold values from -(MAX_BUF_SIZE - 1) to MAX_BUF_SIZE - 1. */ -/* int may be not enough when sizeof(int) == 2. */ -typedef long pattern_offset_t; - -typedef struct -{ - pattern_offset_t begalt_offset; - pattern_offset_t fixup_alt_jump; - pattern_offset_t inner_group_offset; - pattern_offset_t laststart_offset; - regnum_t regnum; -} compile_stack_elt_t; - - -typedef struct -{ - compile_stack_elt_t *stack; - unsigned size; - unsigned avail; /* Offset of next open position. */ -} compile_stack_type; - - -# define INIT_COMPILE_STACK_SIZE 32 - -# define COMPILE_STACK_EMPTY (compile_stack.avail == 0) -# define COMPILE_STACK_FULL (compile_stack.avail == compile_stack.size) - -/* The next available element. */ -# define COMPILE_STACK_TOP (compile_stack.stack[compile_stack.avail]) - -# endif /* not DEFINED_ONCE */ - -/* Set the bit for character C in a list. */ -# ifndef DEFINED_ONCE -# define SET_LIST_BIT(c) \ - (b[((unsigned char) (c)) / BYTEWIDTH] \ - |= 1 << (((unsigned char) c) % BYTEWIDTH)) -# endif /* DEFINED_ONCE */ - -/* Get the next unsigned number in the uncompiled pattern. */ -# define GET_UNSIGNED_NUMBER(num) \ - { \ - while (p != pend) \ - { \ - PATFETCH (c); \ - if (c < '0' || c > '9') \ - break; \ - if (num <= RE_DUP_MAX) \ - { \ - if (num < 0) \ - num = 0; \ - num = num * 10 + c - '0'; \ - } \ - } \ - } - -# ifndef DEFINED_ONCE -# if defined _LIBC || WIDE_CHAR_SUPPORT -/* The GNU C library provides support for user-defined character classes - and the functions from ISO C amendement 1. */ -# ifdef CHARCLASS_NAME_MAX -# define CHAR_CLASS_MAX_LENGTH CHARCLASS_NAME_MAX -# else -/* This shouldn't happen but some implementation might still have this - problem. Use a reasonable default value. */ -# define CHAR_CLASS_MAX_LENGTH 256 -# endif - -# ifdef _LIBC -# define IS_CHAR_CLASS(string) __wctype (string) -# else -# define IS_CHAR_CLASS(string) wctype (string) -# endif -# else -# define CHAR_CLASS_MAX_LENGTH 6 /* Namely, `xdigit'. */ - -# define IS_CHAR_CLASS(string) \ - (STREQ (string, "alpha") || STREQ (string, "upper") \ - || STREQ (string, "lower") || STREQ (string, "digit") \ - || STREQ (string, "alnum") || STREQ (string, "xdigit") \ - || STREQ (string, "space") || STREQ (string, "print") \ - || STREQ (string, "punct") || STREQ (string, "graph") \ - || STREQ (string, "cntrl") || STREQ (string, "blank")) -# endif -# endif /* DEFINED_ONCE */ - -# ifndef MATCH_MAY_ALLOCATE - -/* If we cannot allocate large objects within re_match_2_internal, - we make the fail stack and register vectors global. - The fail stack, we grow to the maximum size when a regexp - is compiled. - The register vectors, we adjust in size each time we - compile a regexp, according to the number of registers it needs. */ - -static PREFIX(fail_stack_type) fail_stack; - -/* Size with which the following vectors are currently allocated. - That is so we can make them bigger as needed, - but never make them smaller. */ -# ifdef DEFINED_ONCE -static int regs_allocated_size; - -static const char ** regstart, ** regend; -static const char ** old_regstart, ** old_regend; -static const char **best_regstart, **best_regend; -static const char **reg_dummy; -# endif /* DEFINED_ONCE */ - -static PREFIX(register_info_type) *PREFIX(reg_info); -static PREFIX(register_info_type) *PREFIX(reg_info_dummy); - -/* Make the register vectors big enough for NUM_REGS registers, - but don't make them smaller. */ - -static void -PREFIX(regex_grow_registers) (num_regs) - int num_regs; -{ - if (num_regs > regs_allocated_size) - { - RETALLOC_IF (regstart, num_regs, const char *); - RETALLOC_IF (regend, num_regs, const char *); - RETALLOC_IF (old_regstart, num_regs, const char *); - RETALLOC_IF (old_regend, num_regs, const char *); - RETALLOC_IF (best_regstart, num_regs, const char *); - RETALLOC_IF (best_regend, num_regs, const char *); - RETALLOC_IF (PREFIX(reg_info), num_regs, PREFIX(register_info_type)); - RETALLOC_IF (reg_dummy, num_regs, const char *); - RETALLOC_IF (PREFIX(reg_info_dummy), num_regs, PREFIX(register_info_type)); - - regs_allocated_size = num_regs; - } -} - -# endif /* not MATCH_MAY_ALLOCATE */ - -# ifndef DEFINED_ONCE -static boolean group_in_compile_stack _RE_ARGS ((compile_stack_type - compile_stack, - regnum_t regnum)); -# endif /* not DEFINED_ONCE */ - -/* `regex_compile' compiles PATTERN (of length SIZE) according to SYNTAX. - Returns one of error codes defined in `regex.h', or zero for success. - - Assumes the `allocated' (and perhaps `buffer') and `translate' - fields are set in BUFP on entry. - - If it succeeds, results are put in BUFP (if it returns an error, the - contents of BUFP are undefined): - `buffer' is the compiled pattern; - `syntax' is set to SYNTAX; - `used' is set to the length of the compiled pattern; - `fastmap_accurate' is zero; - `re_nsub' is the number of subexpressions in PATTERN; - `not_bol' and `not_eol' are zero; - - The `fastmap' and `newline_anchor' fields are neither - examined nor set. */ - -/* Return, freeing storage we allocated. */ -# ifdef WCHAR -# define FREE_STACK_RETURN(value) \ - return (free(pattern), free(mbs_offset), free(is_binary), free (compile_stack.stack), value) -# else -# define FREE_STACK_RETURN(value) \ - return (free (compile_stack.stack), value) -# endif /* WCHAR */ - -static reg_errcode_t -PREFIX(regex_compile) (ARG_PREFIX(pattern), ARG_PREFIX(size), syntax, bufp) - const char *ARG_PREFIX(pattern); - size_t ARG_PREFIX(size); - reg_syntax_t syntax; - struct re_pattern_buffer *bufp; -{ - /* We fetch characters from PATTERN here. Even though PATTERN is - `char *' (i.e., signed), we declare these variables as unsigned, so - they can be reliably used as array indices. */ - register UCHAR_T c, c1; - -#ifdef WCHAR - /* A temporary space to keep wchar_t pattern and compiled pattern. */ - CHAR_T *pattern, *COMPILED_BUFFER_VAR; - size_t size; - /* offset buffer for optimization. See convert_mbs_to_wc. */ - int *mbs_offset = NULL; - /* It hold whether each wchar_t is binary data or not. */ - char *is_binary = NULL; - /* A flag whether exactn is handling binary data or not. */ - char is_exactn_bin = FALSE; -#endif /* WCHAR */ - - /* A random temporary spot in PATTERN. */ - const CHAR_T *p1; - - /* Points to the end of the buffer, where we should append. */ - register UCHAR_T *b; - - /* Keeps track of unclosed groups. */ - compile_stack_type compile_stack; - - /* Points to the current (ending) position in the pattern. */ -#ifdef WCHAR - const CHAR_T *p; - const CHAR_T *pend; -#else /* BYTE */ - const CHAR_T *p = pattern; - const CHAR_T *pend = pattern + size; -#endif /* WCHAR */ - - /* How to translate the characters in the pattern. */ - RE_TRANSLATE_TYPE translate = bufp->translate; - - /* Address of the count-byte of the most recently inserted `exactn' - command. This makes it possible to tell if a new exact-match - character can be added to that command or if the character requires - a new `exactn' command. */ - UCHAR_T *pending_exact = 0; - - /* Address of start of the most recently finished expression. - This tells, e.g., postfix * where to find the start of its - operand. Reset at the beginning of groups and alternatives. */ - UCHAR_T *laststart = 0; - - /* Address of beginning of regexp, or inside of last group. */ - UCHAR_T *begalt; - - /* Address of the place where a forward jump should go to the end of - the containing expression. Each alternative of an `or' -- except the - last -- ends with a forward jump of this sort. */ - UCHAR_T *fixup_alt_jump = 0; - - /* Counts open-groups as they are encountered. Remembered for the - matching close-group on the compile stack, so the same register - number is put in the stop_memory as the start_memory. */ - regnum_t regnum = 0; - -#ifdef WCHAR - /* Initialize the wchar_t PATTERN and offset_buffer. */ - p = pend = pattern = TALLOC(csize + 1, CHAR_T); - mbs_offset = TALLOC(csize + 1, int); - is_binary = TALLOC(csize + 1, char); - if (pattern == NULL || mbs_offset == NULL || is_binary == NULL) - { - free(pattern); - free(mbs_offset); - free(is_binary); - return REG_ESPACE; - } - pattern[csize] = L'\0'; /* sentinel */ - size = convert_mbs_to_wcs(pattern, cpattern, csize, mbs_offset, is_binary); - pend = p + size; - if (size < 0) - { - free(pattern); - free(mbs_offset); - free(is_binary); - return REG_BADPAT; - } -#endif - -#ifdef DEBUG - DEBUG_PRINT1 ("\nCompiling pattern: "); - if (debug) - { - unsigned debug_count; - - for (debug_count = 0; debug_count < size; debug_count++) - PUT_CHAR (pattern[debug_count]); - putchar ('\n'); - } -#endif /* DEBUG */ - - /* Initialize the compile stack. */ - compile_stack.stack = TALLOC (INIT_COMPILE_STACK_SIZE, compile_stack_elt_t); - if (compile_stack.stack == NULL) - { -#ifdef WCHAR - free(pattern); - free(mbs_offset); - free(is_binary); -#endif - return REG_ESPACE; - } - - compile_stack.size = INIT_COMPILE_STACK_SIZE; - compile_stack.avail = 0; - - /* Initialize the pattern buffer. */ - bufp->syntax = syntax; - bufp->fastmap_accurate = 0; - bufp->not_bol = bufp->not_eol = 0; - - /* Set `used' to zero, so that if we return an error, the pattern - printer (for debugging) will think there's no pattern. We reset it - at the end. */ - bufp->used = 0; - - /* Always count groups, whether or not bufp->no_sub is set. */ - bufp->re_nsub = 0; - -#if !defined emacs && !defined SYNTAX_TABLE - /* Initialize the syntax table. */ - init_syntax_once (); -#endif - - if (bufp->allocated == 0) - { - if (bufp->buffer) - { /* If zero allocated, but buffer is non-null, try to realloc - enough space. This loses if buffer's address is bogus, but - that is the user's responsibility. */ -#ifdef WCHAR - /* Free bufp->buffer and allocate an array for wchar_t pattern - buffer. */ - free(bufp->buffer); - COMPILED_BUFFER_VAR = TALLOC (INIT_BUF_SIZE/sizeof(UCHAR_T), - UCHAR_T); -#else - RETALLOC (COMPILED_BUFFER_VAR, INIT_BUF_SIZE, UCHAR_T); -#endif /* WCHAR */ - } - else - { /* Caller did not allocate a buffer. Do it for them. */ - COMPILED_BUFFER_VAR = TALLOC (INIT_BUF_SIZE / sizeof(UCHAR_T), - UCHAR_T); - } - - if (!COMPILED_BUFFER_VAR) FREE_STACK_RETURN (REG_ESPACE); -#ifdef WCHAR - bufp->buffer = (char*)COMPILED_BUFFER_VAR; -#endif /* WCHAR */ - bufp->allocated = INIT_BUF_SIZE; - } -#ifdef WCHAR - else - COMPILED_BUFFER_VAR = (UCHAR_T*) bufp->buffer; -#endif - - begalt = b = COMPILED_BUFFER_VAR; - - /* Loop through the uncompiled pattern until we're at the end. */ - while (p != pend) - { - PATFETCH (c); - - switch (c) - { - case '^': - { - if ( /* If at start of pattern, it's an operator. */ - p == pattern + 1 - /* If context independent, it's an operator. */ - || syntax & RE_CONTEXT_INDEP_ANCHORS - /* Otherwise, depends on what's come before. */ - || PREFIX(at_begline_loc_p) (pattern, p, syntax)) - BUF_PUSH (begline); - else - goto normal_char; - } - break; - - - case '$': - { - if ( /* If at end of pattern, it's an operator. */ - p == pend - /* If context independent, it's an operator. */ - || syntax & RE_CONTEXT_INDEP_ANCHORS - /* Otherwise, depends on what's next. */ - || PREFIX(at_endline_loc_p) (p, pend, syntax)) - BUF_PUSH (endline); - else - goto normal_char; - } - break; - - - case '+': - case '?': - if ((syntax & RE_BK_PLUS_QM) - || (syntax & RE_LIMITED_OPS)) - goto normal_char; - handle_plus: - case '*': - /* If there is no previous pattern... */ - if (!laststart) - { - if (syntax & RE_CONTEXT_INVALID_OPS) - FREE_STACK_RETURN (REG_BADRPT); - else if (!(syntax & RE_CONTEXT_INDEP_OPS)) - goto normal_char; - } - - { - /* Are we optimizing this jump? */ - boolean keep_string_p = false; - - /* 1 means zero (many) matches is allowed. */ - char zero_times_ok = 0, many_times_ok = 0; - - /* If there is a sequence of repetition chars, collapse it - down to just one (the right one). We can't combine - interval operators with these because of, e.g., `a{2}*', - which should only match an even number of `a's. */ - - for (;;) - { - zero_times_ok |= c != '+'; - many_times_ok |= c != '?'; - - if (p == pend) - break; - - PATFETCH (c); - - if (c == '*' - || (!(syntax & RE_BK_PLUS_QM) && (c == '+' || c == '?'))) - ; - - else if (syntax & RE_BK_PLUS_QM && c == '\\') - { - if (p == pend) FREE_STACK_RETURN (REG_EESCAPE); - - PATFETCH (c1); - if (!(c1 == '+' || c1 == '?')) - { - PATUNFETCH; - PATUNFETCH; - break; - } - - c = c1; - } - else - { - PATUNFETCH; - break; - } - - /* If we get here, we found another repeat character. */ - } - - /* Star, etc. applied to an empty pattern is equivalent - to an empty pattern. */ - if (!laststart) - break; - - /* Now we know whether or not zero matches is allowed - and also whether or not two or more matches is allowed. */ - if (many_times_ok) - { /* More than one repetition is allowed, so put in at the - end a backward relative jump from `b' to before the next - jump we're going to put in below (which jumps from - laststart to after this jump). - - But if we are at the `*' in the exact sequence `.*\n', - insert an unconditional jump backwards to the ., - instead of the beginning of the loop. This way we only - push a failure point once, instead of every time - through the loop. */ - assert (p - 1 > pattern); - - /* Allocate the space for the jump. */ - GET_BUFFER_SPACE (1 + OFFSET_ADDRESS_SIZE); - - /* We know we are not at the first character of the pattern, - because laststart was nonzero. And we've already - incremented `p', by the way, to be the character after - the `*'. Do we have to do something analogous here - for null bytes, because of RE_DOT_NOT_NULL? */ - if (TRANSLATE (*(p - 2)) == TRANSLATE ('.') - && zero_times_ok - && p < pend && TRANSLATE (*p) == TRANSLATE ('\n') - && !(syntax & RE_DOT_NEWLINE)) - { /* We have .*\n. */ - STORE_JUMP (jump, b, laststart); - keep_string_p = true; - } - else - /* Anything else. */ - STORE_JUMP (maybe_pop_jump, b, laststart - - (1 + OFFSET_ADDRESS_SIZE)); - - /* We've added more stuff to the buffer. */ - b += 1 + OFFSET_ADDRESS_SIZE; - } - - /* On failure, jump from laststart to b + 3, which will be the - end of the buffer after this jump is inserted. */ - /* ifdef WCHAR, 'b + 1 + OFFSET_ADDRESS_SIZE' instead of - 'b + 3'. */ - GET_BUFFER_SPACE (1 + OFFSET_ADDRESS_SIZE); - INSERT_JUMP (keep_string_p ? on_failure_keep_string_jump - : on_failure_jump, - laststart, b + 1 + OFFSET_ADDRESS_SIZE); - pending_exact = 0; - b += 1 + OFFSET_ADDRESS_SIZE; - - if (!zero_times_ok) - { - /* At least one repetition is required, so insert a - `dummy_failure_jump' before the initial - `on_failure_jump' instruction of the loop. This - effects a skip over that instruction the first time - we hit that loop. */ - GET_BUFFER_SPACE (1 + OFFSET_ADDRESS_SIZE); - INSERT_JUMP (dummy_failure_jump, laststart, laststart + - 2 + 2 * OFFSET_ADDRESS_SIZE); - b += 1 + OFFSET_ADDRESS_SIZE; - } - } - break; - - - case '.': - laststart = b; - BUF_PUSH (anychar); - break; - - - case '[': - { - boolean had_char_class = false; -#ifdef WCHAR - CHAR_T range_start = 0xffffffff; -#else - unsigned int range_start = 0xffffffff; -#endif - if (p == pend) FREE_STACK_RETURN (REG_EBRACK); - -#ifdef WCHAR - /* We assume a charset(_not) structure as a wchar_t array. - charset[0] = (re_opcode_t) charset(_not) - charset[1] = l (= length of char_classes) - charset[2] = m (= length of collating_symbols) - charset[3] = n (= length of equivalence_classes) - charset[4] = o (= length of char_ranges) - charset[5] = p (= length of chars) - - charset[6] = char_class (wctype_t) - charset[6+CHAR_CLASS_SIZE] = char_class (wctype_t) - ... - charset[l+5] = char_class (wctype_t) - - charset[l+6] = collating_symbol (wchar_t) - ... - charset[l+m+5] = collating_symbol (wchar_t) - ifdef _LIBC we use the index if - _NL_COLLATE_SYMB_EXTRAMB instead of - wchar_t string. - - charset[l+m+6] = equivalence_classes (wchar_t) - ... - charset[l+m+n+5] = equivalence_classes (wchar_t) - ifdef _LIBC we use the index in - _NL_COLLATE_WEIGHT instead of - wchar_t string. - - charset[l+m+n+6] = range_start - charset[l+m+n+7] = range_end - ... - charset[l+m+n+2o+4] = range_start - charset[l+m+n+2o+5] = range_end - ifdef _LIBC we use the value looked up - in _NL_COLLATE_COLLSEQ instead of - wchar_t character. - - charset[l+m+n+2o+6] = char - ... - charset[l+m+n+2o+p+5] = char - - */ - - /* We need at least 6 spaces: the opcode, the length of - char_classes, the length of collating_symbols, the length of - equivalence_classes, the length of char_ranges, the length of - chars. */ - GET_BUFFER_SPACE (6); - - /* Save b as laststart. And We use laststart as the pointer - to the first element of the charset here. - In other words, laststart[i] indicates charset[i]. */ - laststart = b; - - /* We test `*p == '^' twice, instead of using an if - statement, so we only need one BUF_PUSH. */ - BUF_PUSH (*p == '^' ? charset_not : charset); - if (*p == '^') - p++; - - /* Push the length of char_classes, the length of - collating_symbols, the length of equivalence_classes, the - length of char_ranges and the length of chars. */ - BUF_PUSH_3 (0, 0, 0); - BUF_PUSH_2 (0, 0); - - /* Remember the first position in the bracket expression. */ - p1 = p; - - /* charset_not matches newline according to a syntax bit. */ - if ((re_opcode_t) b[-6] == charset_not - && (syntax & RE_HAT_LISTS_NOT_NEWLINE)) - { - BUF_PUSH('\n'); - laststart[5]++; /* Update the length of characters */ - } - - /* Read in characters and ranges, setting map bits. */ - for (;;) - { - if (p == pend) FREE_STACK_RETURN (REG_EBRACK); - - PATFETCH (c); - - /* \ might escape characters inside [...] and [^...]. */ - if ((syntax & RE_BACKSLASH_ESCAPE_IN_LISTS) && c == '\\') - { - if (p == pend) FREE_STACK_RETURN (REG_EESCAPE); - - PATFETCH (c1); - BUF_PUSH(c1); - laststart[5]++; /* Update the length of chars */ - range_start = c1; - continue; - } - - /* Could be the end of the bracket expression. If it's - not (i.e., when the bracket expression is `[]' so - far), the ']' character bit gets set way below. */ - if (c == ']' && p != p1 + 1) - break; - - /* Look ahead to see if it's a range when the last thing - was a character class. */ - if (had_char_class && c == '-' && *p != ']') - FREE_STACK_RETURN (REG_ERANGE); - - /* Look ahead to see if it's a range when the last thing - was a character: if this is a hyphen not at the - beginning or the end of a list, then it's the range - operator. */ - if (c == '-' - && !(p - 2 >= pattern && p[-2] == '[') - && !(p - 3 >= pattern && p[-3] == '[' && p[-2] == '^') - && *p != ']') - { - reg_errcode_t ret; - /* Allocate the space for range_start and range_end. */ - GET_BUFFER_SPACE (2); - /* Update the pointer to indicate end of buffer. */ - b += 2; - ret = wcs_compile_range (range_start, &p, pend, translate, - syntax, b, laststart); - if (ret != REG_NOERROR) FREE_STACK_RETURN (ret); - range_start = 0xffffffff; - } - else if (p[0] == '-' && p[1] != ']') - { /* This handles ranges made up of characters only. */ - reg_errcode_t ret; - - /* Move past the `-'. */ - PATFETCH (c1); - /* Allocate the space for range_start and range_end. */ - GET_BUFFER_SPACE (2); - /* Update the pointer to indicate end of buffer. */ - b += 2; - ret = wcs_compile_range (c, &p, pend, translate, syntax, b, - laststart); - if (ret != REG_NOERROR) FREE_STACK_RETURN (ret); - range_start = 0xffffffff; - } - - /* See if we're at the beginning of a possible character - class. */ - else if (syntax & RE_CHAR_CLASSES && c == '[' && *p == ':') - { /* Leave room for the null. */ - char str[CHAR_CLASS_MAX_LENGTH + 1]; - - PATFETCH (c); - c1 = 0; - - /* If pattern is `[[:'. */ - if (p == pend) FREE_STACK_RETURN (REG_EBRACK); - - for (;;) - { - PATFETCH (c); - if ((c == ':' && *p == ']') || p == pend) - break; - if (c1 < CHAR_CLASS_MAX_LENGTH) - str[c1++] = c; - else - /* This is in any case an invalid class name. */ - str[0] = '\0'; - } - str[c1] = '\0'; - - /* If isn't a word bracketed by `[:' and `:]': - undo the ending character, the letters, and leave - the leading `:' and `[' (but store them as character). */ - if (c == ':' && *p == ']') - { - wctype_t wt; - uintptr_t alignedp; - - /* Query the character class as wctype_t. */ - wt = IS_CHAR_CLASS (str); - if (wt == 0) - FREE_STACK_RETURN (REG_ECTYPE); - - /* Throw away the ] at the end of the character - class. */ - PATFETCH (c); - - if (p == pend) FREE_STACK_RETURN (REG_EBRACK); - - /* Allocate the space for character class. */ - GET_BUFFER_SPACE(CHAR_CLASS_SIZE); - /* Update the pointer to indicate end of buffer. */ - b += CHAR_CLASS_SIZE; - /* Move data which follow character classes - not to violate the data. */ - insert_space(CHAR_CLASS_SIZE, - laststart + 6 + laststart[1], - b - 1); - alignedp = ((uintptr_t)(laststart + 6 + laststart[1]) - + __alignof__(wctype_t) - 1) - & ~(uintptr_t)(__alignof__(wctype_t) - 1); - /* Store the character class. */ - *((wctype_t*)alignedp) = wt; - /* Update length of char_classes */ - laststart[1] += CHAR_CLASS_SIZE; - - had_char_class = true; - } - else - { - c1++; - while (c1--) - PATUNFETCH; - BUF_PUSH ('['); - BUF_PUSH (':'); - laststart[5] += 2; /* Update the length of characters */ - range_start = ':'; - had_char_class = false; - } - } - else if (syntax & RE_CHAR_CLASSES && c == '[' && (*p == '=' - || *p == '.')) - { - CHAR_T str[128]; /* Should be large enough. */ - CHAR_T delim = *p; /* '=' or '.' */ -# ifdef _LIBC - uint32_t nrules = - _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES); -# endif - PATFETCH (c); - c1 = 0; - - /* If pattern is `[[=' or '[[.'. */ - if (p == pend) FREE_STACK_RETURN (REG_EBRACK); - - for (;;) - { - PATFETCH (c); - if ((c == delim && *p == ']') || p == pend) - break; - if (c1 < sizeof (str) - 1) - str[c1++] = c; - else - /* This is in any case an invalid class name. */ - str[0] = '\0'; - } - str[c1] = '\0'; - - if (c == delim && *p == ']' && str[0] != '\0') - { - unsigned int i, offset; - /* If we have no collation data we use the default - collation in which each character is in a class - by itself. It also means that ASCII is the - character set and therefore we cannot have character - with more than one byte in the multibyte - representation. */ - - /* If not defined _LIBC, we push the name and - `\0' for the sake of matching performance. */ - int datasize = c1 + 1; - -# ifdef _LIBC - int32_t idx = 0; - if (nrules == 0) -# endif - { - if (c1 != 1) - FREE_STACK_RETURN (REG_ECOLLATE); - } -# ifdef _LIBC - else - { - const int32_t *table; - const int32_t *weights; - const int32_t *extra; - const int32_t *indirect; - wint_t *cp; - - /* This #include defines a local function! */ -# include - - if(delim == '=') - { - /* We push the index for equivalence class. */ - cp = (wint_t*)str; - - table = (const int32_t *) - _NL_CURRENT (LC_COLLATE, - _NL_COLLATE_TABLEWC); - weights = (const int32_t *) - _NL_CURRENT (LC_COLLATE, - _NL_COLLATE_WEIGHTWC); - extra = (const int32_t *) - _NL_CURRENT (LC_COLLATE, - _NL_COLLATE_EXTRAWC); - indirect = (const int32_t *) - _NL_CURRENT (LC_COLLATE, - _NL_COLLATE_INDIRECTWC); - - idx = findidx ((const wint_t**)&cp); - if (idx == 0 || cp < (wint_t*) str + c1) - /* This is no valid character. */ - FREE_STACK_RETURN (REG_ECOLLATE); - - str[0] = (wchar_t)idx; - } - else /* delim == '.' */ - { - /* We push collation sequence value - for collating symbol. */ - int32_t table_size; - const int32_t *symb_table; - const unsigned char *extra; - int32_t idx; - int32_t elem; - int32_t second; - int32_t hash; - char char_str[c1]; - - /* We have to convert the name to a single-byte - string. This is possible since the names - consist of ASCII characters and the internal - representation is UCS4. */ - for (i = 0; i < c1; ++i) - char_str[i] = str[i]; - - table_size = - _NL_CURRENT_WORD (LC_COLLATE, - _NL_COLLATE_SYMB_HASH_SIZEMB); - symb_table = (const int32_t *) - _NL_CURRENT (LC_COLLATE, - _NL_COLLATE_SYMB_TABLEMB); - extra = (const unsigned char *) - _NL_CURRENT (LC_COLLATE, - _NL_COLLATE_SYMB_EXTRAMB); - - /* Locate the character in the hashing table. */ - hash = elem_hash (char_str, c1); - - idx = 0; - elem = hash % table_size; - second = hash % (table_size - 2); - while (symb_table[2 * elem] != 0) - { - /* First compare the hashing value. */ - if (symb_table[2 * elem] == hash - && c1 == extra[symb_table[2 * elem + 1]] - && memcmp (char_str, - &extra[symb_table[2 * elem + 1] - + 1], c1) == 0) - { - /* Yep, this is the entry. */ - idx = symb_table[2 * elem + 1]; - idx += 1 + extra[idx]; - break; - } - - /* Next entry. */ - elem += second; - } - - if (symb_table[2 * elem] != 0) - { - /* Compute the index of the byte sequence - in the table. */ - idx += 1 + extra[idx]; - /* Adjust for the alignment. */ - idx = (idx + 3) & ~3; - - str[0] = (wchar_t) idx + 4; - } - else if (symb_table[2 * elem] == 0 && c1 == 1) - { - /* No valid character. Match it as a - single byte character. */ - had_char_class = false; - BUF_PUSH(str[0]); - /* Update the length of characters */ - laststart[5]++; - range_start = str[0]; - - /* Throw away the ] at the end of the - collating symbol. */ - PATFETCH (c); - /* exit from the switch block. */ - continue; - } - else - FREE_STACK_RETURN (REG_ECOLLATE); - } - datasize = 1; - } -# endif - /* Throw away the ] at the end of the equivalence - class (or collating symbol). */ - PATFETCH (c); - - /* Allocate the space for the equivalence class - (or collating symbol) (and '\0' if needed). */ - GET_BUFFER_SPACE(datasize); - /* Update the pointer to indicate end of buffer. */ - b += datasize; - - if (delim == '=') - { /* equivalence class */ - /* Calculate the offset of char_ranges, - which is next to equivalence_classes. */ - offset = laststart[1] + laststart[2] - + laststart[3] +6; - /* Insert space. */ - insert_space(datasize, laststart + offset, b - 1); - - /* Write the equivalence_class and \0. */ - for (i = 0 ; i < datasize ; i++) - laststart[offset + i] = str[i]; - - /* Update the length of equivalence_classes. */ - laststart[3] += datasize; - had_char_class = true; - } - else /* delim == '.' */ - { /* collating symbol */ - /* Calculate the offset of the equivalence_classes, - which is next to collating_symbols. */ - offset = laststart[1] + laststart[2] + 6; - /* Insert space and write the collationg_symbol - and \0. */ - insert_space(datasize, laststart + offset, b-1); - for (i = 0 ; i < datasize ; i++) - laststart[offset + i] = str[i]; - - /* In re_match_2_internal if range_start < -1, we - assume -range_start is the offset of the - collating symbol which is specified as - the character of the range start. So we assign - -(laststart[1] + laststart[2] + 6) to - range_start. */ - range_start = -(laststart[1] + laststart[2] + 6); - /* Update the length of collating_symbol. */ - laststart[2] += datasize; - had_char_class = false; - } - } - else - { - c1++; - while (c1--) - PATUNFETCH; - BUF_PUSH ('['); - BUF_PUSH (delim); - laststart[5] += 2; /* Update the length of characters */ - range_start = delim; - had_char_class = false; - } - } - else - { - had_char_class = false; - BUF_PUSH(c); - laststart[5]++; /* Update the length of characters */ - range_start = c; - } - } - -#else /* BYTE */ - /* Ensure that we have enough space to push a charset: the - opcode, the length count, and the bitset; 34 bytes in all. */ - GET_BUFFER_SPACE (34); - - laststart = b; - - /* We test `*p == '^' twice, instead of using an if - statement, so we only need one BUF_PUSH. */ - BUF_PUSH (*p == '^' ? charset_not : charset); - if (*p == '^') - p++; - - /* Remember the first position in the bracket expression. */ - p1 = p; - - /* Push the number of bytes in the bitmap. */ - BUF_PUSH ((1 << BYTEWIDTH) / BYTEWIDTH); - - /* Clear the whole map. */ - bzero (b, (1 << BYTEWIDTH) / BYTEWIDTH); - - /* charset_not matches newline according to a syntax bit. */ - if ((re_opcode_t) b[-2] == charset_not - && (syntax & RE_HAT_LISTS_NOT_NEWLINE)) - SET_LIST_BIT ('\n'); - - /* Read in characters and ranges, setting map bits. */ - for (;;) - { - if (p == pend) FREE_STACK_RETURN (REG_EBRACK); - - PATFETCH (c); - - /* \ might escape characters inside [...] and [^...]. */ - if ((syntax & RE_BACKSLASH_ESCAPE_IN_LISTS) && c == '\\') - { - if (p == pend) FREE_STACK_RETURN (REG_EESCAPE); - - PATFETCH (c1); - SET_LIST_BIT (c1); - range_start = c1; - continue; - } - - /* Could be the end of the bracket expression. If it's - not (i.e., when the bracket expression is `[]' so - far), the ']' character bit gets set way below. */ - if (c == ']' && p != p1 + 1) - break; - - /* Look ahead to see if it's a range when the last thing - was a character class. */ - if (had_char_class && c == '-' && *p != ']') - FREE_STACK_RETURN (REG_ERANGE); - - /* Look ahead to see if it's a range when the last thing - was a character: if this is a hyphen not at the - beginning or the end of a list, then it's the range - operator. */ - if (c == '-' - && !(p - 2 >= pattern && p[-2] == '[') - && !(p - 3 >= pattern && p[-3] == '[' && p[-2] == '^') - && *p != ']') - { - reg_errcode_t ret - = byte_compile_range (range_start, &p, pend, translate, - syntax, b); - if (ret != REG_NOERROR) FREE_STACK_RETURN (ret); - range_start = 0xffffffff; - } - - else if (p[0] == '-' && p[1] != ']') - { /* This handles ranges made up of characters only. */ - reg_errcode_t ret; - - /* Move past the `-'. */ - PATFETCH (c1); - - ret = byte_compile_range (c, &p, pend, translate, syntax, b); - if (ret != REG_NOERROR) FREE_STACK_RETURN (ret); - range_start = 0xffffffff; - } - - /* See if we're at the beginning of a possible character - class. */ - - else if (syntax & RE_CHAR_CLASSES && c == '[' && *p == ':') - { /* Leave room for the null. */ - char str[CHAR_CLASS_MAX_LENGTH + 1]; - - PATFETCH (c); - c1 = 0; - - /* If pattern is `[[:'. */ - if (p == pend) FREE_STACK_RETURN (REG_EBRACK); - - for (;;) - { - PATFETCH (c); - if ((c == ':' && *p == ']') || p == pend) - break; - if (c1 < CHAR_CLASS_MAX_LENGTH) - str[c1++] = c; - else - /* This is in any case an invalid class name. */ - str[0] = '\0'; - } - str[c1] = '\0'; - - /* If isn't a word bracketed by `[:' and `:]': - undo the ending character, the letters, and leave - the leading `:' and `[' (but set bits for them). */ - if (c == ':' && *p == ']') - { -# if defined _LIBC || WIDE_CHAR_SUPPORT - boolean is_lower = STREQ (str, "lower"); - boolean is_upper = STREQ (str, "upper"); - wctype_t wt; - int ch; - - wt = IS_CHAR_CLASS (str); - if (wt == 0) - FREE_STACK_RETURN (REG_ECTYPE); - - /* Throw away the ] at the end of the character - class. */ - PATFETCH (c); - - if (p == pend) FREE_STACK_RETURN (REG_EBRACK); - - for (ch = 0; ch < 1 << BYTEWIDTH; ++ch) - { - if (iswctype (btowc (ch), wt)) - SET_LIST_BIT (ch); - - if (translate && (is_upper || is_lower) - && (ISUPPER (ch) || ISLOWER (ch))) - SET_LIST_BIT (ch); - } - - had_char_class = true; -# else - int ch; - boolean is_alnum = STREQ (str, "alnum"); - boolean is_alpha = STREQ (str, "alpha"); - boolean is_blank = STREQ (str, "blank"); - boolean is_cntrl = STREQ (str, "cntrl"); - boolean is_digit = STREQ (str, "digit"); - boolean is_graph = STREQ (str, "graph"); - boolean is_lower = STREQ (str, "lower"); - boolean is_print = STREQ (str, "print"); - boolean is_punct = STREQ (str, "punct"); - boolean is_space = STREQ (str, "space"); - boolean is_upper = STREQ (str, "upper"); - boolean is_xdigit = STREQ (str, "xdigit"); - - if (!IS_CHAR_CLASS (str)) - FREE_STACK_RETURN (REG_ECTYPE); - - /* Throw away the ] at the end of the character - class. */ - PATFETCH (c); - - if (p == pend) FREE_STACK_RETURN (REG_EBRACK); - - for (ch = 0; ch < 1 << BYTEWIDTH; ch++) - { - /* This was split into 3 if's to - avoid an arbitrary limit in some compiler. */ - if ( (is_alnum && ISALNUM (ch)) - || (is_alpha && ISALPHA (ch)) - || (is_blank && ISBLANK (ch)) - || (is_cntrl && ISCNTRL (ch))) - SET_LIST_BIT (ch); - if ( (is_digit && ISDIGIT (ch)) - || (is_graph && ISGRAPH (ch)) - || (is_lower && ISLOWER (ch)) - || (is_print && ISPRINT (ch))) - SET_LIST_BIT (ch); - if ( (is_punct && ISPUNCT (ch)) - || (is_space && ISSPACE (ch)) - || (is_upper && ISUPPER (ch)) - || (is_xdigit && ISXDIGIT (ch))) - SET_LIST_BIT (ch); - if ( translate && (is_upper || is_lower) - && (ISUPPER (ch) || ISLOWER (ch))) - SET_LIST_BIT (ch); - } - had_char_class = true; -# endif /* libc || wctype.h */ - } - else - { - c1++; - while (c1--) - PATUNFETCH; - SET_LIST_BIT ('['); - SET_LIST_BIT (':'); - range_start = ':'; - had_char_class = false; - } - } - else if (syntax & RE_CHAR_CLASSES && c == '[' && *p == '=') - { - unsigned char str[MB_LEN_MAX + 1]; -# ifdef _LIBC - uint32_t nrules = - _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES); -# endif - - PATFETCH (c); - c1 = 0; - - /* If pattern is `[[='. */ - if (p == pend) FREE_STACK_RETURN (REG_EBRACK); - - for (;;) - { - PATFETCH (c); - if ((c == '=' && *p == ']') || p == pend) - break; - if (c1 < MB_LEN_MAX) - str[c1++] = c; - else - /* This is in any case an invalid class name. */ - str[0] = '\0'; - } - str[c1] = '\0'; - - if (c == '=' && *p == ']' && str[0] != '\0') - { - /* If we have no collation data we use the default - collation in which each character is in a class - by itself. It also means that ASCII is the - character set and therefore we cannot have character - with more than one byte in the multibyte - representation. */ -# ifdef _LIBC - if (nrules == 0) -# endif - { - if (c1 != 1) - FREE_STACK_RETURN (REG_ECOLLATE); - - /* Throw away the ] at the end of the equivalence - class. */ - PATFETCH (c); - - /* Set the bit for the character. */ - SET_LIST_BIT (str[0]); - } -# ifdef _LIBC - else - { - /* Try to match the byte sequence in `str' against - those known to the collate implementation. - First find out whether the bytes in `str' are - actually from exactly one character. */ - const int32_t *table; - const unsigned char *weights; - const unsigned char *extra; - const int32_t *indirect; - int32_t idx; - const unsigned char *cp = str; - int ch; - - /* This #include defines a local function! */ -# include - - table = (const int32_t *) - _NL_CURRENT (LC_COLLATE, _NL_COLLATE_TABLEMB); - weights = (const unsigned char *) - _NL_CURRENT (LC_COLLATE, _NL_COLLATE_WEIGHTMB); - extra = (const unsigned char *) - _NL_CURRENT (LC_COLLATE, _NL_COLLATE_EXTRAMB); - indirect = (const int32_t *) - _NL_CURRENT (LC_COLLATE, _NL_COLLATE_INDIRECTMB); - - idx = findidx (&cp); - if (idx == 0 || cp < str + c1) - /* This is no valid character. */ - FREE_STACK_RETURN (REG_ECOLLATE); - - /* Throw away the ] at the end of the equivalence - class. */ - PATFETCH (c); - - /* Now we have to go throught the whole table - and find all characters which have the same - first level weight. - - XXX Note that this is not entirely correct. - we would have to match multibyte sequences - but this is not possible with the current - implementation. */ - for (ch = 1; ch < 256; ++ch) - /* XXX This test would have to be changed if we - would allow matching multibyte sequences. */ - if (table[ch] > 0) - { - int32_t idx2 = table[ch]; - size_t len = weights[idx2]; - - /* Test whether the lenghts match. */ - if (weights[idx] == len) - { - /* They do. New compare the bytes of - the weight. */ - size_t cnt = 0; - - while (cnt < len - && (weights[idx + 1 + cnt] - == weights[idx2 + 1 + cnt])) - ++cnt; - - if (cnt == len) - /* They match. Mark the character as - acceptable. */ - SET_LIST_BIT (ch); - } - } - } -# endif - had_char_class = true; - } - else - { - c1++; - while (c1--) - PATUNFETCH; - SET_LIST_BIT ('['); - SET_LIST_BIT ('='); - range_start = '='; - had_char_class = false; - } - } - else if (syntax & RE_CHAR_CLASSES && c == '[' && *p == '.') - { - unsigned char str[128]; /* Should be large enough. */ -# ifdef _LIBC - uint32_t nrules = - _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES); -# endif - - PATFETCH (c); - c1 = 0; - - /* If pattern is `[[.'. */ - if (p == pend) FREE_STACK_RETURN (REG_EBRACK); - - for (;;) - { - PATFETCH (c); - if ((c == '.' && *p == ']') || p == pend) - break; - if (c1 < sizeof (str)) - str[c1++] = c; - else - /* This is in any case an invalid class name. */ - str[0] = '\0'; - } - str[c1] = '\0'; - - if (c == '.' && *p == ']' && str[0] != '\0') - { - /* If we have no collation data we use the default - collation in which each character is the name - for its own class which contains only the one - character. It also means that ASCII is the - character set and therefore we cannot have character - with more than one byte in the multibyte - representation. */ -# ifdef _LIBC - if (nrules == 0) -# endif - { - if (c1 != 1) - FREE_STACK_RETURN (REG_ECOLLATE); - - /* Throw away the ] at the end of the equivalence - class. */ - PATFETCH (c); - - /* Set the bit for the character. */ - SET_LIST_BIT (str[0]); - range_start = ((const unsigned char *) str)[0]; - } -# ifdef _LIBC - else - { - /* Try to match the byte sequence in `str' against - those known to the collate implementation. - First find out whether the bytes in `str' are - actually from exactly one character. */ - int32_t table_size; - const int32_t *symb_table; - const unsigned char *extra; - int32_t idx; - int32_t elem; - int32_t second; - int32_t hash; - - table_size = - _NL_CURRENT_WORD (LC_COLLATE, - _NL_COLLATE_SYMB_HASH_SIZEMB); - symb_table = (const int32_t *) - _NL_CURRENT (LC_COLLATE, - _NL_COLLATE_SYMB_TABLEMB); - extra = (const unsigned char *) - _NL_CURRENT (LC_COLLATE, - _NL_COLLATE_SYMB_EXTRAMB); - - /* Locate the character in the hashing table. */ - hash = elem_hash (str, c1); - - idx = 0; - elem = hash % table_size; - second = hash % (table_size - 2); - while (symb_table[2 * elem] != 0) - { - /* First compare the hashing value. */ - if (symb_table[2 * elem] == hash - && c1 == extra[symb_table[2 * elem + 1]] - && memcmp (str, - &extra[symb_table[2 * elem + 1] - + 1], - c1) == 0) - { - /* Yep, this is the entry. */ - idx = symb_table[2 * elem + 1]; - idx += 1 + extra[idx]; - break; - } - - /* Next entry. */ - elem += second; - } - - if (symb_table[2 * elem] == 0) - /* This is no valid character. */ - FREE_STACK_RETURN (REG_ECOLLATE); - - /* Throw away the ] at the end of the equivalence - class. */ - PATFETCH (c); - - /* Now add the multibyte character(s) we found - to the accept list. - - XXX Note that this is not entirely correct. - we would have to match multibyte sequences - but this is not possible with the current - implementation. Also, we have to match - collating symbols, which expand to more than - one file, as a whole and not allow the - individual bytes. */ - c1 = extra[idx++]; - if (c1 == 1) - range_start = extra[idx]; - while (c1-- > 0) - { - SET_LIST_BIT (extra[idx]); - ++idx; - } - } -# endif - had_char_class = false; - } - else - { - c1++; - while (c1--) - PATUNFETCH; - SET_LIST_BIT ('['); - SET_LIST_BIT ('.'); - range_start = '.'; - had_char_class = false; - } - } - else - { - had_char_class = false; - SET_LIST_BIT (c); - range_start = c; - } - } - - /* Discard any (non)matching list bytes that are all 0 at the - end of the map. Decrease the map-length byte too. */ - while ((int) b[-1] > 0 && b[b[-1] - 1] == 0) - b[-1]--; - b += b[-1]; -#endif /* WCHAR */ - } - break; - - - case '(': - if (syntax & RE_NO_BK_PARENS) - goto handle_open; - else - goto normal_char; - - - case ')': - if (syntax & RE_NO_BK_PARENS) - goto handle_close; - else - goto normal_char; - - - case '\n': - if (syntax & RE_NEWLINE_ALT) - goto handle_alt; - else - goto normal_char; - - - case '|': - if (syntax & RE_NO_BK_VBAR) - goto handle_alt; - else - goto normal_char; - - - case '{': - if (syntax & RE_INTERVALS && syntax & RE_NO_BK_BRACES) - goto handle_interval; - else - goto normal_char; - - - case '\\': - if (p == pend) FREE_STACK_RETURN (REG_EESCAPE); - - /* Do not translate the character after the \, so that we can - distinguish, e.g., \B from \b, even if we normally would - translate, e.g., B to b. */ - PATFETCH_RAW (c); - - switch (c) - { - case '(': - if (syntax & RE_NO_BK_PARENS) - goto normal_backslash; - - handle_open: - bufp->re_nsub++; - regnum++; - - if (COMPILE_STACK_FULL) - { - RETALLOC (compile_stack.stack, compile_stack.size << 1, - compile_stack_elt_t); - if (compile_stack.stack == NULL) return REG_ESPACE; - - compile_stack.size <<= 1; - } - - /* These are the values to restore when we hit end of this - group. They are all relative offsets, so that if the - whole pattern moves because of realloc, they will still - be valid. */ - COMPILE_STACK_TOP.begalt_offset = begalt - COMPILED_BUFFER_VAR; - COMPILE_STACK_TOP.fixup_alt_jump - = fixup_alt_jump ? fixup_alt_jump - COMPILED_BUFFER_VAR + 1 : 0; - COMPILE_STACK_TOP.laststart_offset = b - COMPILED_BUFFER_VAR; - COMPILE_STACK_TOP.regnum = regnum; - - /* We will eventually replace the 0 with the number of - groups inner to this one. But do not push a - start_memory for groups beyond the last one we can - represent in the compiled pattern. */ - if (regnum <= MAX_REGNUM) - { - COMPILE_STACK_TOP.inner_group_offset = b - - COMPILED_BUFFER_VAR + 2; - BUF_PUSH_3 (start_memory, regnum, 0); - } - - compile_stack.avail++; - - fixup_alt_jump = 0; - laststart = 0; - begalt = b; - /* If we've reached MAX_REGNUM groups, then this open - won't actually generate any code, so we'll have to - clear pending_exact explicitly. */ - pending_exact = 0; - break; - - - case ')': - if (syntax & RE_NO_BK_PARENS) goto normal_backslash; - - if (COMPILE_STACK_EMPTY) - { - if (syntax & RE_UNMATCHED_RIGHT_PAREN_ORD) - goto normal_backslash; - else - FREE_STACK_RETURN (REG_ERPAREN); - } - - handle_close: - if (fixup_alt_jump) - { /* Push a dummy failure point at the end of the - alternative for a possible future - `pop_failure_jump' to pop. See comments at - `push_dummy_failure' in `re_match_2'. */ - BUF_PUSH (push_dummy_failure); - - /* We allocated space for this jump when we assigned - to `fixup_alt_jump', in the `handle_alt' case below. */ - STORE_JUMP (jump_past_alt, fixup_alt_jump, b - 1); - } - - /* See similar code for backslashed left paren above. */ - if (COMPILE_STACK_EMPTY) - { - if (syntax & RE_UNMATCHED_RIGHT_PAREN_ORD) - goto normal_char; - else - FREE_STACK_RETURN (REG_ERPAREN); - } - - /* Since we just checked for an empty stack above, this - ``can't happen''. */ - assert (compile_stack.avail != 0); - { - /* We don't just want to restore into `regnum', because - later groups should continue to be numbered higher, - as in `(ab)c(de)' -- the second group is #2. */ - regnum_t this_group_regnum; - - compile_stack.avail--; - begalt = COMPILED_BUFFER_VAR + COMPILE_STACK_TOP.begalt_offset; - fixup_alt_jump - = COMPILE_STACK_TOP.fixup_alt_jump - ? COMPILED_BUFFER_VAR + COMPILE_STACK_TOP.fixup_alt_jump - 1 - : 0; - laststart = COMPILED_BUFFER_VAR + COMPILE_STACK_TOP.laststart_offset; - this_group_regnum = COMPILE_STACK_TOP.regnum; - /* If we've reached MAX_REGNUM groups, then this open - won't actually generate any code, so we'll have to - clear pending_exact explicitly. */ - pending_exact = 0; - - /* We're at the end of the group, so now we know how many - groups were inside this one. */ - if (this_group_regnum <= MAX_REGNUM) - { - UCHAR_T *inner_group_loc - = COMPILED_BUFFER_VAR + COMPILE_STACK_TOP.inner_group_offset; - - *inner_group_loc = regnum - this_group_regnum; - BUF_PUSH_3 (stop_memory, this_group_regnum, - regnum - this_group_regnum); - } - } - break; - - - case '|': /* `\|'. */ - if (syntax & RE_LIMITED_OPS || syntax & RE_NO_BK_VBAR) - goto normal_backslash; - handle_alt: - if (syntax & RE_LIMITED_OPS) - goto normal_char; - - /* Insert before the previous alternative a jump which - jumps to this alternative if the former fails. */ - GET_BUFFER_SPACE (1 + OFFSET_ADDRESS_SIZE); - INSERT_JUMP (on_failure_jump, begalt, - b + 2 + 2 * OFFSET_ADDRESS_SIZE); - pending_exact = 0; - b += 1 + OFFSET_ADDRESS_SIZE; - - /* The alternative before this one has a jump after it - which gets executed if it gets matched. Adjust that - jump so it will jump to this alternative's analogous - jump (put in below, which in turn will jump to the next - (if any) alternative's such jump, etc.). The last such - jump jumps to the correct final destination. A picture: - _____ _____ - | | | | - | v | v - a | b | c - - If we are at `b', then fixup_alt_jump right now points to a - three-byte space after `a'. We'll put in the jump, set - fixup_alt_jump to right after `b', and leave behind three - bytes which we'll fill in when we get to after `c'. */ - - if (fixup_alt_jump) - STORE_JUMP (jump_past_alt, fixup_alt_jump, b); - - /* Mark and leave space for a jump after this alternative, - to be filled in later either by next alternative or - when know we're at the end of a series of alternatives. */ - fixup_alt_jump = b; - GET_BUFFER_SPACE (1 + OFFSET_ADDRESS_SIZE); - b += 1 + OFFSET_ADDRESS_SIZE; - - laststart = 0; - begalt = b; - break; - - - case '{': - /* If \{ is a literal. */ - if (!(syntax & RE_INTERVALS) - /* If we're at `\{' and it's not the open-interval - operator. */ - || (syntax & RE_NO_BK_BRACES)) - goto normal_backslash; - - handle_interval: - { - /* If got here, then the syntax allows intervals. */ - - /* At least (most) this many matches must be made. */ - int lower_bound = -1, upper_bound = -1; - - /* Place in the uncompiled pattern (i.e., just after - the '{') to go back to if the interval is invalid. */ - const CHAR_T *beg_interval = p; - - if (p == pend) - goto invalid_interval; - - GET_UNSIGNED_NUMBER (lower_bound); - - if (c == ',') - { - GET_UNSIGNED_NUMBER (upper_bound); - if (upper_bound < 0) - upper_bound = RE_DUP_MAX; - } - else - /* Interval such as `{1}' => match exactly once. */ - upper_bound = lower_bound; - - if (! (0 <= lower_bound && lower_bound <= upper_bound)) - goto invalid_interval; - - if (!(syntax & RE_NO_BK_BRACES)) - { - if (c != '\\' || p == pend) - goto invalid_interval; - PATFETCH (c); - } - - if (c != '}') - goto invalid_interval; - - /* If it's invalid to have no preceding re. */ - if (!laststart) - { - if (syntax & RE_CONTEXT_INVALID_OPS - && !(syntax & RE_INVALID_INTERVAL_ORD)) - FREE_STACK_RETURN (REG_BADRPT); - else if (syntax & RE_CONTEXT_INDEP_OPS) - laststart = b; - else - goto unfetch_interval; - } - - /* We just parsed a valid interval. */ - - if (RE_DUP_MAX < upper_bound) - FREE_STACK_RETURN (REG_BADBR); - - /* If the upper bound is zero, don't want to succeed at - all; jump from `laststart' to `b + 3', which will be - the end of the buffer after we insert the jump. */ - /* ifdef WCHAR, 'b + 1 + OFFSET_ADDRESS_SIZE' - instead of 'b + 3'. */ - if (upper_bound == 0) - { - GET_BUFFER_SPACE (1 + OFFSET_ADDRESS_SIZE); - INSERT_JUMP (jump, laststart, b + 1 - + OFFSET_ADDRESS_SIZE); - b += 1 + OFFSET_ADDRESS_SIZE; - } - - /* Otherwise, we have a nontrivial interval. When - we're all done, the pattern will look like: - set_number_at - set_number_at - succeed_n - - jump_n - (The upper bound and `jump_n' are omitted if - `upper_bound' is 1, though.) */ - else - { /* If the upper bound is > 1, we need to insert - more at the end of the loop. */ - unsigned nbytes = 2 + 4 * OFFSET_ADDRESS_SIZE + - (upper_bound > 1) * (2 + 4 * OFFSET_ADDRESS_SIZE); - - GET_BUFFER_SPACE (nbytes); - - /* Initialize lower bound of the `succeed_n', even - though it will be set during matching by its - attendant `set_number_at' (inserted next), - because `re_compile_fastmap' needs to know. - Jump to the `jump_n' we might insert below. */ - INSERT_JUMP2 (succeed_n, laststart, - b + 1 + 2 * OFFSET_ADDRESS_SIZE - + (upper_bound > 1) * (1 + 2 * OFFSET_ADDRESS_SIZE) - , lower_bound); - b += 1 + 2 * OFFSET_ADDRESS_SIZE; - - /* Code to initialize the lower bound. Insert - before the `succeed_n'. The `5' is the last two - bytes of this `set_number_at', plus 3 bytes of - the following `succeed_n'. */ - /* ifdef WCHAR, The '1+2*OFFSET_ADDRESS_SIZE' - is the 'set_number_at', plus '1+OFFSET_ADDRESS_SIZE' - of the following `succeed_n'. */ - PREFIX(insert_op2) (set_number_at, laststart, 1 - + 2 * OFFSET_ADDRESS_SIZE, lower_bound, b); - b += 1 + 2 * OFFSET_ADDRESS_SIZE; - - if (upper_bound > 1) - { /* More than one repetition is allowed, so - append a backward jump to the `succeed_n' - that starts this interval. - - When we've reached this during matching, - we'll have matched the interval once, so - jump back only `upper_bound - 1' times. */ - STORE_JUMP2 (jump_n, b, laststart - + 2 * OFFSET_ADDRESS_SIZE + 1, - upper_bound - 1); - b += 1 + 2 * OFFSET_ADDRESS_SIZE; - - /* The location we want to set is the second - parameter of the `jump_n'; that is `b-2' as - an absolute address. `laststart' will be - the `set_number_at' we're about to insert; - `laststart+3' the number to set, the source - for the relative address. But we are - inserting into the middle of the pattern -- - so everything is getting moved up by 5. - Conclusion: (b - 2) - (laststart + 3) + 5, - i.e., b - laststart. - - We insert this at the beginning of the loop - so that if we fail during matching, we'll - reinitialize the bounds. */ - PREFIX(insert_op2) (set_number_at, laststart, - b - laststart, - upper_bound - 1, b); - b += 1 + 2 * OFFSET_ADDRESS_SIZE; - } - } - pending_exact = 0; - break; - - invalid_interval: - if (!(syntax & RE_INVALID_INTERVAL_ORD)) - FREE_STACK_RETURN (p == pend ? REG_EBRACE : REG_BADBR); - unfetch_interval: - /* Match the characters as literals. */ - p = beg_interval; - c = '{'; - if (syntax & RE_NO_BK_BRACES) - goto normal_char; - else - goto normal_backslash; - } - -#ifdef emacs - /* There is no way to specify the before_dot and after_dot - operators. rms says this is ok. --karl */ - case '=': - BUF_PUSH (at_dot); - break; - - case 's': - laststart = b; - PATFETCH (c); - BUF_PUSH_2 (syntaxspec, syntax_spec_code[c]); - break; - - case 'S': - laststart = b; - PATFETCH (c); - BUF_PUSH_2 (notsyntaxspec, syntax_spec_code[c]); - break; -#endif /* emacs */ - - - case 'w': - if (syntax & RE_NO_GNU_OPS) - goto normal_char; - laststart = b; - BUF_PUSH (wordchar); - break; - - - case 'W': - if (syntax & RE_NO_GNU_OPS) - goto normal_char; - laststart = b; - BUF_PUSH (notwordchar); - break; - - - case '<': - if (syntax & RE_NO_GNU_OPS) - goto normal_char; - BUF_PUSH (wordbeg); - break; - - case '>': - if (syntax & RE_NO_GNU_OPS) - goto normal_char; - BUF_PUSH (wordend); - break; - - case 'b': - if (syntax & RE_NO_GNU_OPS) - goto normal_char; - BUF_PUSH (wordbound); - break; - - case 'B': - if (syntax & RE_NO_GNU_OPS) - goto normal_char; - BUF_PUSH (notwordbound); - break; - - case '`': - if (syntax & RE_NO_GNU_OPS) - goto normal_char; - BUF_PUSH (begbuf); - break; - - case '\'': - if (syntax & RE_NO_GNU_OPS) - goto normal_char; - BUF_PUSH (endbuf); - break; - - case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - if (syntax & RE_NO_BK_REFS) - goto normal_char; - - c1 = c - '0'; - - if (c1 > regnum) - FREE_STACK_RETURN (REG_ESUBREG); - - /* Can't back reference to a subexpression if inside of it. */ - if (group_in_compile_stack (compile_stack, (regnum_t) c1)) - goto normal_char; - - laststart = b; - BUF_PUSH_2 (duplicate, c1); - break; - - - case '+': - case '?': - if (syntax & RE_BK_PLUS_QM) - goto handle_plus; - else - goto normal_backslash; - - default: - normal_backslash: - /* You might think it would be useful for \ to mean - not to translate; but if we don't translate it - it will never match anything. */ - c = TRANSLATE (c); - goto normal_char; - } - break; - - - default: - /* Expects the character in `c'. */ - normal_char: - /* If no exactn currently being built. */ - if (!pending_exact -#ifdef WCHAR - /* If last exactn handle binary(or character) and - new exactn handle character(or binary). */ - || is_exactn_bin != is_binary[p - 1 - pattern] -#endif /* WCHAR */ - - /* If last exactn not at current position. */ - || pending_exact + *pending_exact + 1 != b - - /* We have only one byte following the exactn for the count. */ - || *pending_exact == (1 << BYTEWIDTH) - 1 - - /* If followed by a repetition operator. */ - || *p == '*' || *p == '^' - || ((syntax & RE_BK_PLUS_QM) - ? *p == '\\' && (p[1] == '+' || p[1] == '?') - : (*p == '+' || *p == '?')) - || ((syntax & RE_INTERVALS) - && ((syntax & RE_NO_BK_BRACES) - ? *p == '{' - : (p[0] == '\\' && p[1] == '{')))) - { - /* Start building a new exactn. */ - - laststart = b; - -#ifdef WCHAR - /* Is this exactn binary data or character? */ - is_exactn_bin = is_binary[p - 1 - pattern]; - if (is_exactn_bin) - BUF_PUSH_2 (exactn_bin, 0); - else - BUF_PUSH_2 (exactn, 0); -#else - BUF_PUSH_2 (exactn, 0); -#endif /* WCHAR */ - pending_exact = b - 1; - } - - BUF_PUSH (c); - (*pending_exact)++; - break; - } /* switch (c) */ - } /* while p != pend */ - - - /* Through the pattern now. */ - - if (fixup_alt_jump) - STORE_JUMP (jump_past_alt, fixup_alt_jump, b); - - if (!COMPILE_STACK_EMPTY) - FREE_STACK_RETURN (REG_EPAREN); - - /* If we don't want backtracking, force success - the first time we reach the end of the compiled pattern. */ - if (syntax & RE_NO_POSIX_BACKTRACKING) - BUF_PUSH (succeed); - -#ifdef WCHAR - free (pattern); - free (mbs_offset); - free (is_binary); -#endif - free (compile_stack.stack); - - /* We have succeeded; set the length of the buffer. */ -#ifdef WCHAR - bufp->used = (uintptr_t) b - (uintptr_t) COMPILED_BUFFER_VAR; -#else - bufp->used = b - bufp->buffer; -#endif - -#ifdef DEBUG - if (debug) - { - DEBUG_PRINT1 ("\nCompiled pattern: \n"); - PREFIX(print_compiled_pattern) (bufp); - } -#endif /* DEBUG */ - -#ifndef MATCH_MAY_ALLOCATE - /* Initialize the failure stack to the largest possible stack. This - isn't necessary unless we're trying to avoid calling alloca in - the search and match routines. */ - { - int num_regs = bufp->re_nsub + 1; - - /* Since DOUBLE_FAIL_STACK refuses to double only if the current size - is strictly greater than re_max_failures, the largest possible stack - is 2 * re_max_failures failure points. */ - if (fail_stack.size < (2 * re_max_failures * MAX_FAILURE_ITEMS)) - { - fail_stack.size = (2 * re_max_failures * MAX_FAILURE_ITEMS); - -# ifdef emacs - if (! fail_stack.stack) - fail_stack.stack - = (PREFIX(fail_stack_elt_t) *) xmalloc (fail_stack.size - * sizeof (PREFIX(fail_stack_elt_t))); - else - fail_stack.stack - = (PREFIX(fail_stack_elt_t) *) xrealloc (fail_stack.stack, - (fail_stack.size - * sizeof (PREFIX(fail_stack_elt_t)))); -# else /* not emacs */ - if (! fail_stack.stack) - fail_stack.stack - = (PREFIX(fail_stack_elt_t) *) malloc (fail_stack.size - * sizeof (PREFIX(fail_stack_elt_t))); - else - fail_stack.stack - = (PREFIX(fail_stack_elt_t) *) realloc (fail_stack.stack, - (fail_stack.size - * sizeof (PREFIX(fail_stack_elt_t)))); -# endif /* not emacs */ - } - - PREFIX(regex_grow_registers) (num_regs); - } -#endif /* not MATCH_MAY_ALLOCATE */ - - return REG_NOERROR; -} /* regex_compile */ - -/* Subroutines for `regex_compile'. */ - -/* Store OP at LOC followed by two-byte integer parameter ARG. */ -/* ifdef WCHAR, integer parameter is 1 wchar_t. */ - -static void -PREFIX(store_op1) (op, loc, arg) - re_opcode_t op; - UCHAR_T *loc; - int arg; -{ - *loc = (UCHAR_T) op; - STORE_NUMBER (loc + 1, arg); -} - - -/* Like `store_op1', but for two two-byte parameters ARG1 and ARG2. */ -/* ifdef WCHAR, integer parameter is 1 wchar_t. */ - -static void -PREFIX(store_op2) (op, loc, arg1, arg2) - re_opcode_t op; - UCHAR_T *loc; - int arg1, arg2; -{ - *loc = (UCHAR_T) op; - STORE_NUMBER (loc + 1, arg1); - STORE_NUMBER (loc + 1 + OFFSET_ADDRESS_SIZE, arg2); -} - - -/* Copy the bytes from LOC to END to open up three bytes of space at LOC - for OP followed by two-byte integer parameter ARG. */ -/* ifdef WCHAR, integer parameter is 1 wchar_t. */ - -static void -PREFIX(insert_op1) (op, loc, arg, end) - re_opcode_t op; - UCHAR_T *loc; - int arg; - UCHAR_T *end; -{ - register UCHAR_T *pfrom = end; - register UCHAR_T *pto = end + 1 + OFFSET_ADDRESS_SIZE; - - while (pfrom != loc) - *--pto = *--pfrom; - - PREFIX(store_op1) (op, loc, arg); -} - - -/* Like `insert_op1', but for two two-byte parameters ARG1 and ARG2. */ -/* ifdef WCHAR, integer parameter is 1 wchar_t. */ - -static void -PREFIX(insert_op2) (op, loc, arg1, arg2, end) - re_opcode_t op; - UCHAR_T *loc; - int arg1, arg2; - UCHAR_T *end; -{ - register UCHAR_T *pfrom = end; - register UCHAR_T *pto = end + 1 + 2 * OFFSET_ADDRESS_SIZE; - - while (pfrom != loc) - *--pto = *--pfrom; - - PREFIX(store_op2) (op, loc, arg1, arg2); -} - - -/* P points to just after a ^ in PATTERN. Return true if that ^ comes - after an alternative or a begin-subexpression. We assume there is at - least one character before the ^. */ - -static boolean -PREFIX(at_begline_loc_p) (pattern, p, syntax) - const CHAR_T *pattern, *p; - reg_syntax_t syntax; -{ - const CHAR_T *prev = p - 2; - boolean prev_prev_backslash = prev > pattern && prev[-1] == '\\'; - - return - /* After a subexpression? */ - (*prev == '(' && (syntax & RE_NO_BK_PARENS || prev_prev_backslash)) - /* After an alternative? */ - || (*prev == '|' && (syntax & RE_NO_BK_VBAR || prev_prev_backslash)); -} - - -/* The dual of at_begline_loc_p. This one is for $. We assume there is - at least one character after the $, i.e., `P < PEND'. */ - -static boolean -PREFIX(at_endline_loc_p) (p, pend, syntax) - const CHAR_T *p, *pend; - reg_syntax_t syntax; -{ - const CHAR_T *next = p; - boolean next_backslash = *next == '\\'; - const CHAR_T *next_next = p + 1 < pend ? p + 1 : 0; - - return - /* Before a subexpression? */ - (syntax & RE_NO_BK_PARENS ? *next == ')' - : next_backslash && next_next && *next_next == ')') - /* Before an alternative? */ - || (syntax & RE_NO_BK_VBAR ? *next == '|' - : next_backslash && next_next && *next_next == '|'); -} - -#else /* not INSIDE_RECURSION */ - -/* Returns true if REGNUM is in one of COMPILE_STACK's elements and - false if it's not. */ - -static boolean -group_in_compile_stack (compile_stack, regnum) - compile_stack_type compile_stack; - regnum_t regnum; -{ - int this_element; - - for (this_element = compile_stack.avail - 1; - this_element >= 0; - this_element--) - if (compile_stack.stack[this_element].regnum == regnum) - return true; - - return false; -} -#endif /* not INSIDE_RECURSION */ - -#ifdef INSIDE_RECURSION - -#ifdef WCHAR -/* This insert space, which size is "num", into the pattern at "loc". - "end" must point the end of the allocated buffer. */ -static void -insert_space (num, loc, end) - int num; - CHAR_T *loc; - CHAR_T *end; -{ - register CHAR_T *pto = end; - register CHAR_T *pfrom = end - num; - - while (pfrom >= loc) - *pto-- = *pfrom--; -} -#endif /* WCHAR */ - -#ifdef WCHAR -static reg_errcode_t -wcs_compile_range (range_start_char, p_ptr, pend, translate, syntax, b, - char_set) - CHAR_T range_start_char; - const CHAR_T **p_ptr, *pend; - CHAR_T *char_set, *b; - RE_TRANSLATE_TYPE translate; - reg_syntax_t syntax; -{ - const CHAR_T *p = *p_ptr; - CHAR_T range_start, range_end; - reg_errcode_t ret; -# ifdef _LIBC - uint32_t nrules; - uint32_t start_val, end_val; -# endif - if (p == pend) - return REG_ERANGE; - -# ifdef _LIBC - nrules = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES); - if (nrules != 0) - { - const char *collseq = (const char *) _NL_CURRENT(LC_COLLATE, - _NL_COLLATE_COLLSEQWC); - const unsigned char *extra = (const unsigned char *) - _NL_CURRENT (LC_COLLATE, _NL_COLLATE_SYMB_EXTRAMB); - - if (range_start_char < -1) - { - /* range_start is a collating symbol. */ - int32_t *wextra; - /* Retreive the index and get collation sequence value. */ - wextra = (int32_t*)(extra + char_set[-range_start_char]); - start_val = wextra[1 + *wextra]; - } - else - start_val = collseq_table_lookup(collseq, TRANSLATE(range_start_char)); - - end_val = collseq_table_lookup (collseq, TRANSLATE (p[0])); - - /* Report an error if the range is empty and the syntax prohibits - this. */ - ret = ((syntax & RE_NO_EMPTY_RANGES) - && (start_val > end_val))? REG_ERANGE : REG_NOERROR; - - /* Insert space to the end of the char_ranges. */ - insert_space(2, b - char_set[5] - 2, b - 1); - *(b - char_set[5] - 2) = (wchar_t)start_val; - *(b - char_set[5] - 1) = (wchar_t)end_val; - char_set[4]++; /* ranges_index */ - } - else -# endif - { - range_start = (range_start_char >= 0)? TRANSLATE (range_start_char): - range_start_char; - range_end = TRANSLATE (p[0]); - /* Report an error if the range is empty and the syntax prohibits - this. */ - ret = ((syntax & RE_NO_EMPTY_RANGES) - && (range_start > range_end))? REG_ERANGE : REG_NOERROR; - - /* Insert space to the end of the char_ranges. */ - insert_space(2, b - char_set[5] - 2, b - 1); - *(b - char_set[5] - 2) = range_start; - *(b - char_set[5] - 1) = range_end; - char_set[4]++; /* ranges_index */ - } - /* Have to increment the pointer into the pattern string, so the - caller isn't still at the ending character. */ - (*p_ptr)++; - - return ret; -} -#else /* BYTE */ -/* Read the ending character of a range (in a bracket expression) from the - uncompiled pattern *P_PTR (which ends at PEND). We assume the - starting character is in `P[-2]'. (`P[-1]' is the character `-'.) - Then we set the translation of all bits between the starting and - ending characters (inclusive) in the compiled pattern B. - - Return an error code. - - We use these short variable names so we can use the same macros as - `regex_compile' itself. */ - -static reg_errcode_t -byte_compile_range (range_start_char, p_ptr, pend, translate, syntax, b) - unsigned int range_start_char; - const char **p_ptr, *pend; - RE_TRANSLATE_TYPE translate; - reg_syntax_t syntax; - unsigned char *b; -{ - unsigned this_char; - const char *p = *p_ptr; - reg_errcode_t ret; -# if _LIBC - const unsigned char *collseq; - unsigned int start_colseq; - unsigned int end_colseq; -# else - unsigned end_char; -# endif - - if (p == pend) - return REG_ERANGE; - - /* Have to increment the pointer into the pattern string, so the - caller isn't still at the ending character. */ - (*p_ptr)++; - - /* Report an error if the range is empty and the syntax prohibits this. */ - ret = syntax & RE_NO_EMPTY_RANGES ? REG_ERANGE : REG_NOERROR; - -# if _LIBC - collseq = (const unsigned char *) _NL_CURRENT (LC_COLLATE, - _NL_COLLATE_COLLSEQMB); - - start_colseq = collseq[(unsigned char) TRANSLATE (range_start_char)]; - end_colseq = collseq[(unsigned char) TRANSLATE (p[0])]; - for (this_char = 0; this_char <= (unsigned char) -1; ++this_char) - { - unsigned int this_colseq = collseq[(unsigned char) TRANSLATE (this_char)]; - - if (start_colseq <= this_colseq && this_colseq <= end_colseq) - { - SET_LIST_BIT (TRANSLATE (this_char)); - ret = REG_NOERROR; - } - } -# else - /* Here we see why `this_char' has to be larger than an `unsigned - char' -- we would otherwise go into an infinite loop, since all - characters <= 0xff. */ - range_start_char = TRANSLATE (range_start_char); - /* TRANSLATE(p[0]) is casted to char (not unsigned char) in TRANSLATE, - and some compilers cast it to int implicitly, so following for_loop - may fall to (almost) infinite loop. - e.g. If translate[p[0]] = 0xff, end_char may equals to 0xffffffff. - To avoid this, we cast p[0] to unsigned int and truncate it. */ - end_char = ((unsigned)TRANSLATE(p[0]) & ((1 << BYTEWIDTH) - 1)); - - for (this_char = range_start_char; this_char <= end_char; ++this_char) - { - SET_LIST_BIT (TRANSLATE (this_char)); - ret = REG_NOERROR; - } -# endif - - return ret; -} -#endif /* WCHAR */ - -/* re_compile_fastmap computes a ``fastmap'' for the compiled pattern in - BUFP. A fastmap records which of the (1 << BYTEWIDTH) possible - characters can start a string that matches the pattern. This fastmap - is used by re_search to skip quickly over impossible starting points. - - The caller must supply the address of a (1 << BYTEWIDTH)-byte data - area as BUFP->fastmap. - - We set the `fastmap', `fastmap_accurate', and `can_be_null' fields in - the pattern buffer. - - Returns 0 if we succeed, -2 if an internal error. */ - -#ifdef WCHAR -/* local function for re_compile_fastmap. - truncate wchar_t character to char. */ -static unsigned char truncate_wchar (CHAR_T c); - -static unsigned char -truncate_wchar (c) - CHAR_T c; -{ - unsigned char buf[MB_CUR_MAX]; - mbstate_t state; - int retval; - memset (&state, '\0', sizeof (state)); - retval = wcrtomb (buf, c, &state); - return retval > 0 ? buf[0] : (unsigned char) c; -} -#endif /* WCHAR */ - -static int -PREFIX(re_compile_fastmap) (bufp) - struct re_pattern_buffer *bufp; -{ - int j, k; -#ifdef MATCH_MAY_ALLOCATE - PREFIX(fail_stack_type) fail_stack; -#endif -#ifndef REGEX_MALLOC - char *destination; -#endif - - register char *fastmap = bufp->fastmap; - -#ifdef WCHAR - /* We need to cast pattern to (wchar_t*), because we casted this compiled - pattern to (char*) in regex_compile. */ - UCHAR_T *pattern = (UCHAR_T*)bufp->buffer; - register UCHAR_T *pend = (UCHAR_T*) (bufp->buffer + bufp->used); -#else /* BYTE */ - UCHAR_T *pattern = bufp->buffer; - register UCHAR_T *pend = pattern + bufp->used; -#endif /* WCHAR */ - UCHAR_T *p = pattern; - -#ifdef REL_ALLOC - /* This holds the pointer to the failure stack, when - it is allocated relocatably. */ - fail_stack_elt_t *failure_stack_ptr; -#endif - - /* Assume that each path through the pattern can be null until - proven otherwise. We set this false at the bottom of switch - statement, to which we get only if a particular path doesn't - match the empty string. */ - boolean path_can_be_null = true; - - /* We aren't doing a `succeed_n' to begin with. */ - boolean succeed_n_p = false; - - assert (fastmap != NULL && p != NULL); - - INIT_FAIL_STACK (); - bzero (fastmap, 1 << BYTEWIDTH); /* Assume nothing's valid. */ - bufp->fastmap_accurate = 1; /* It will be when we're done. */ - bufp->can_be_null = 0; - - while (1) - { - if (p == pend || *p == succeed) - { - /* We have reached the (effective) end of pattern. */ - if (!FAIL_STACK_EMPTY ()) - { - bufp->can_be_null |= path_can_be_null; - - /* Reset for next path. */ - path_can_be_null = true; - - p = fail_stack.stack[--fail_stack.avail].pointer; - - continue; - } - else - break; - } - - /* We should never be about to go beyond the end of the pattern. */ - assert (p < pend); - - switch (SWITCH_ENUM_CAST ((re_opcode_t) *p++)) - { - - /* I guess the idea here is to simply not bother with a fastmap - if a backreference is used, since it's too hard to figure out - the fastmap for the corresponding group. Setting - `can_be_null' stops `re_search_2' from using the fastmap, so - that is all we do. */ - case duplicate: - bufp->can_be_null = 1; - goto done; - - - /* Following are the cases which match a character. These end - with `break'. */ - -#ifdef WCHAR - case exactn: - fastmap[truncate_wchar(p[1])] = 1; - break; -#else /* BYTE */ - case exactn: - fastmap[p[1]] = 1; - break; -#endif /* WCHAR */ -#ifdef MBS_SUPPORT - case exactn_bin: - fastmap[p[1]] = 1; - break; -#endif - -#ifdef WCHAR - /* It is hard to distinguish fastmap from (multi byte) characters - which depends on current locale. */ - case charset: - case charset_not: - case wordchar: - case notwordchar: - bufp->can_be_null = 1; - goto done; -#else /* BYTE */ - case charset: - for (j = *p++ * BYTEWIDTH - 1; j >= 0; j--) - if (p[j / BYTEWIDTH] & (1 << (j % BYTEWIDTH))) - fastmap[j] = 1; - break; - - - case charset_not: - /* Chars beyond end of map must be allowed. */ - for (j = *p * BYTEWIDTH; j < (1 << BYTEWIDTH); j++) - fastmap[j] = 1; - - for (j = *p++ * BYTEWIDTH - 1; j >= 0; j--) - if (!(p[j / BYTEWIDTH] & (1 << (j % BYTEWIDTH)))) - fastmap[j] = 1; - break; - - - case wordchar: - for (j = 0; j < (1 << BYTEWIDTH); j++) - if (SYNTAX (j) == Sword) - fastmap[j] = 1; - break; - - - case notwordchar: - for (j = 0; j < (1 << BYTEWIDTH); j++) - if (SYNTAX (j) != Sword) - fastmap[j] = 1; - break; -#endif /* WCHAR */ - - case anychar: - { - int fastmap_newline = fastmap['\n']; - - /* `.' matches anything ... */ - for (j = 0; j < (1 << BYTEWIDTH); j++) - fastmap[j] = 1; - - /* ... except perhaps newline. */ - if (!(bufp->syntax & RE_DOT_NEWLINE)) - fastmap['\n'] = fastmap_newline; - - /* Return if we have already set `can_be_null'; if we have, - then the fastmap is irrelevant. Something's wrong here. */ - else if (bufp->can_be_null) - goto done; - - /* Otherwise, have to check alternative paths. */ - break; - } - -#ifdef emacs - case syntaxspec: - k = *p++; - for (j = 0; j < (1 << BYTEWIDTH); j++) - if (SYNTAX (j) == (enum syntaxcode) k) - fastmap[j] = 1; - break; - - - case notsyntaxspec: - k = *p++; - for (j = 0; j < (1 << BYTEWIDTH); j++) - if (SYNTAX (j) != (enum syntaxcode) k) - fastmap[j] = 1; - break; - - - /* All cases after this match the empty string. These end with - `continue'. */ - - - case before_dot: - case at_dot: - case after_dot: - continue; -#endif /* emacs */ - - - case no_op: - case begline: - case endline: - case begbuf: - case endbuf: - case wordbound: - case notwordbound: - case wordbeg: - case wordend: - case push_dummy_failure: - continue; - - - case jump_n: - case pop_failure_jump: - case maybe_pop_jump: - case jump: - case jump_past_alt: - case dummy_failure_jump: - EXTRACT_NUMBER_AND_INCR (j, p); - p += j; - if (j > 0) - continue; - - /* Jump backward implies we just went through the body of a - loop and matched nothing. Opcode jumped to should be - `on_failure_jump' or `succeed_n'. Just treat it like an - ordinary jump. For a * loop, it has pushed its failure - point already; if so, discard that as redundant. */ - if ((re_opcode_t) *p != on_failure_jump - && (re_opcode_t) *p != succeed_n) - continue; - - p++; - EXTRACT_NUMBER_AND_INCR (j, p); - p += j; - - /* If what's on the stack is where we are now, pop it. */ - if (!FAIL_STACK_EMPTY () - && fail_stack.stack[fail_stack.avail - 1].pointer == p) - fail_stack.avail--; - - continue; - - - case on_failure_jump: - case on_failure_keep_string_jump: - handle_on_failure_jump: - EXTRACT_NUMBER_AND_INCR (j, p); - - /* For some patterns, e.g., `(a?)?', `p+j' here points to the - end of the pattern. We don't want to push such a point, - since when we restore it above, entering the switch will - increment `p' past the end of the pattern. We don't need - to push such a point since we obviously won't find any more - fastmap entries beyond `pend'. Such a pattern can match - the null string, though. */ - if (p + j < pend) - { - if (!PUSH_PATTERN_OP (p + j, fail_stack)) - { - RESET_FAIL_STACK (); - return -2; - } - } - else - bufp->can_be_null = 1; - - if (succeed_n_p) - { - EXTRACT_NUMBER_AND_INCR (k, p); /* Skip the n. */ - succeed_n_p = false; - } - - continue; - - - case succeed_n: - /* Get to the number of times to succeed. */ - p += OFFSET_ADDRESS_SIZE; - - /* Increment p past the n for when k != 0. */ - EXTRACT_NUMBER_AND_INCR (k, p); - if (k == 0) - { - p -= 2 * OFFSET_ADDRESS_SIZE; - succeed_n_p = true; /* Spaghetti code alert. */ - goto handle_on_failure_jump; - } - continue; - - - case set_number_at: - p += 2 * OFFSET_ADDRESS_SIZE; - continue; - - - case start_memory: - case stop_memory: - p += 2; - continue; - - - default: - abort (); /* We have listed all the cases. */ - } /* switch *p++ */ - - /* Getting here means we have found the possible starting - characters for one path of the pattern -- and that the empty - string does not match. We need not follow this path further. - Instead, look at the next alternative (remembered on the - stack), or quit if no more. The test at the top of the loop - does these things. */ - path_can_be_null = false; - p = pend; - } /* while p */ - - /* Set `can_be_null' for the last path (also the first path, if the - pattern is empty). */ - bufp->can_be_null |= path_can_be_null; - - done: - RESET_FAIL_STACK (); - return 0; -} - -#else /* not INSIDE_RECURSION */ - -int -re_compile_fastmap (bufp) - struct re_pattern_buffer *bufp; -{ -# ifdef MBS_SUPPORT - if (MB_CUR_MAX != 1) - return wcs_re_compile_fastmap(bufp); - else -# endif - return byte_re_compile_fastmap(bufp); -} /* re_compile_fastmap */ -#ifdef _LIBC -weak_alias (__re_compile_fastmap, re_compile_fastmap) -#endif - - -/* Set REGS to hold NUM_REGS registers, storing them in STARTS and - ENDS. Subsequent matches using PATTERN_BUFFER and REGS will use - this memory for recording register information. STARTS and ENDS - must be allocated using the malloc library routine, and must each - be at least NUM_REGS * sizeof (regoff_t) bytes long. - - If NUM_REGS == 0, then subsequent matches should allocate their own - register data. - - Unless this function is called, the first search or match using - PATTERN_BUFFER will allocate its own register data, without - freeing the old data. */ - -void -re_set_registers (bufp, regs, num_regs, starts, ends) - struct re_pattern_buffer *bufp; - struct re_registers *regs; - unsigned num_regs; - regoff_t *starts, *ends; -{ - if (num_regs) - { - bufp->regs_allocated = REGS_REALLOCATE; - regs->num_regs = num_regs; - regs->start = starts; - regs->end = ends; - } - else - { - bufp->regs_allocated = REGS_UNALLOCATED; - regs->num_regs = 0; - regs->start = regs->end = (regoff_t *) 0; - } -} -#ifdef _LIBC -weak_alias (__re_set_registers, re_set_registers) -#endif - -/* Searching routines. */ - -/* Like re_search_2, below, but only one string is specified, and - doesn't let you say where to stop matching. */ - -int -re_search (bufp, string, size, startpos, range, regs) - struct re_pattern_buffer *bufp; - const char *string; - int size, startpos, range; - struct re_registers *regs; -{ - return re_search_2 (bufp, NULL, 0, string, size, startpos, range, - regs, size); -} -#ifdef _LIBC -weak_alias (__re_search, re_search) -#endif - - -/* Using the compiled pattern in BUFP->buffer, first tries to match the - virtual concatenation of STRING1 and STRING2, starting first at index - STARTPOS, then at STARTPOS + 1, and so on. - - STRING1 and STRING2 have length SIZE1 and SIZE2, respectively. - - RANGE is how far to scan while trying to match. RANGE = 0 means try - only at STARTPOS; in general, the last start tried is STARTPOS + - RANGE. - - In REGS, return the indices of the virtual concatenation of STRING1 - and STRING2 that matched the entire BUFP->buffer and its contained - subexpressions. - - Do not consider matching one past the index STOP in the virtual - concatenation of STRING1 and STRING2. - - We return either the position in the strings at which the match was - found, -1 if no match, or -2 if error (such as failure - stack overflow). */ - -int -re_search_2 (bufp, string1, size1, string2, size2, startpos, range, regs, stop) - struct re_pattern_buffer *bufp; - const char *string1, *string2; - int size1, size2; - int startpos; - int range; - struct re_registers *regs; - int stop; -{ -# ifdef MBS_SUPPORT - if (MB_CUR_MAX != 1) - return wcs_re_search_2 (bufp, string1, size1, string2, size2, startpos, - range, regs, stop); - else -# endif - return byte_re_search_2 (bufp, string1, size1, string2, size2, startpos, - range, regs, stop); -} /* re_search_2 */ -#ifdef _LIBC -weak_alias (__re_search_2, re_search_2) -#endif - -#endif /* not INSIDE_RECURSION */ - -#ifdef INSIDE_RECURSION - -#ifdef MATCH_MAY_ALLOCATE -# define FREE_VAR(var) if (var) REGEX_FREE (var); var = NULL -#else -# define FREE_VAR(var) if (var) free (var); var = NULL -#endif - -#ifdef WCHAR -# define MAX_ALLOCA_SIZE 2000 - -# define FREE_WCS_BUFFERS() \ - do { \ - if (size1 > MAX_ALLOCA_SIZE) \ - { \ - free (wcs_string1); \ - free (mbs_offset1); \ - } \ - else \ - { \ - FREE_VAR (wcs_string1); \ - FREE_VAR (mbs_offset1); \ - } \ - if (size2 > MAX_ALLOCA_SIZE) \ - { \ - free (wcs_string2); \ - free (mbs_offset2); \ - } \ - else \ - { \ - FREE_VAR (wcs_string2); \ - FREE_VAR (mbs_offset2); \ - } \ - } while (0) - -#endif - - -static int -PREFIX(re_search_2) (bufp, string1, size1, string2, size2, startpos, range, - regs, stop) - struct re_pattern_buffer *bufp; - const char *string1, *string2; - int size1, size2; - int startpos; - int range; - struct re_registers *regs; - int stop; -{ - int val; - register char *fastmap = bufp->fastmap; - register RE_TRANSLATE_TYPE translate = bufp->translate; - int total_size = size1 + size2; - int endpos = startpos + range; -#ifdef WCHAR - /* We need wchar_t* buffers correspond to cstring1, cstring2. */ - wchar_t *wcs_string1 = NULL, *wcs_string2 = NULL; - /* We need the size of wchar_t buffers correspond to csize1, csize2. */ - int wcs_size1 = 0, wcs_size2 = 0; - /* offset buffer for optimizatoin. See convert_mbs_to_wc. */ - int *mbs_offset1 = NULL, *mbs_offset2 = NULL; - /* They hold whether each wchar_t is binary data or not. */ - char *is_binary = NULL; -#endif /* WCHAR */ - - /* Check for out-of-range STARTPOS. */ - if (startpos < 0 || startpos > total_size) - return -1; - - /* Fix up RANGE if it might eventually take us outside - the virtual concatenation of STRING1 and STRING2. - Make sure we won't move STARTPOS below 0 or above TOTAL_SIZE. */ - if (endpos < 0) - range = 0 - startpos; - else if (endpos > total_size) - range = total_size - startpos; - - /* If the search isn't to be a backwards one, don't waste time in a - search for a pattern that must be anchored. */ - if (bufp->used > 0 && range > 0 - && ((re_opcode_t) bufp->buffer[0] == begbuf - /* `begline' is like `begbuf' if it cannot match at newlines. */ - || ((re_opcode_t) bufp->buffer[0] == begline - && !bufp->newline_anchor))) - { - if (startpos > 0) - return -1; - else - range = 1; - } - -#ifdef emacs - /* In a forward search for something that starts with \=. - don't keep searching past point. */ - if (bufp->used > 0 && (re_opcode_t) bufp->buffer[0] == at_dot && range > 0) - { - range = PT - startpos; - if (range <= 0) - return -1; - } -#endif /* emacs */ - - /* Update the fastmap now if not correct already. */ - if (fastmap && !bufp->fastmap_accurate) - if (re_compile_fastmap (bufp) == -2) - return -2; - -#ifdef WCHAR - /* Allocate wchar_t array for wcs_string1 and wcs_string2 and - fill them with converted string. */ - if (size1 != 0) - { - if (size1 > MAX_ALLOCA_SIZE) - { - wcs_string1 = TALLOC (size1 + 1, CHAR_T); - mbs_offset1 = TALLOC (size1 + 1, int); - is_binary = TALLOC (size1 + 1, char); - } - else - { - wcs_string1 = REGEX_TALLOC (size1 + 1, CHAR_T); - mbs_offset1 = REGEX_TALLOC (size1 + 1, int); - is_binary = REGEX_TALLOC (size1 + 1, char); - } - if (!wcs_string1 || !mbs_offset1 || !is_binary) - { - if (size1 > MAX_ALLOCA_SIZE) - { - free (wcs_string1); - free (mbs_offset1); - free (is_binary); - } - else - { - FREE_VAR (wcs_string1); - FREE_VAR (mbs_offset1); - FREE_VAR (is_binary); - } - return -2; - } - wcs_size1 = convert_mbs_to_wcs(wcs_string1, string1, size1, - mbs_offset1, is_binary); - wcs_string1[wcs_size1] = L'\0'; /* for a sentinel */ - if (size1 > MAX_ALLOCA_SIZE) - free (is_binary); - else - FREE_VAR (is_binary); - } - if (size2 != 0) - { - if (size2 > MAX_ALLOCA_SIZE) - { - wcs_string2 = TALLOC (size2 + 1, CHAR_T); - mbs_offset2 = TALLOC (size2 + 1, int); - is_binary = TALLOC (size2 + 1, char); - } - else - { - wcs_string2 = REGEX_TALLOC (size2 + 1, CHAR_T); - mbs_offset2 = REGEX_TALLOC (size2 + 1, int); - is_binary = REGEX_TALLOC (size2 + 1, char); - } - if (!wcs_string2 || !mbs_offset2 || !is_binary) - { - FREE_WCS_BUFFERS (); - if (size2 > MAX_ALLOCA_SIZE) - free (is_binary); - else - FREE_VAR (is_binary); - return -2; - } - wcs_size2 = convert_mbs_to_wcs(wcs_string2, string2, size2, - mbs_offset2, is_binary); - wcs_string2[wcs_size2] = L'\0'; /* for a sentinel */ - if (size2 > MAX_ALLOCA_SIZE) - free (is_binary); - else - FREE_VAR (is_binary); - } -#endif /* WCHAR */ - - - /* Loop through the string, looking for a place to start matching. */ - for (;;) - { - /* If a fastmap is supplied, skip quickly over characters that - cannot be the start of a match. If the pattern can match the - null string, however, we don't need to skip characters; we want - the first null string. */ - if (fastmap && startpos < total_size && !bufp->can_be_null) - { - if (range > 0) /* Searching forwards. */ - { - register const char *d; - register int lim = 0; - int irange = range; - - if (startpos < size1 && startpos + range >= size1) - lim = range - (size1 - startpos); - - d = (startpos >= size1 ? string2 - size1 : string1) + startpos; - - /* Written out as an if-else to avoid testing `translate' - inside the loop. */ - if (translate) - while (range > lim - && !fastmap[(unsigned char) - translate[(unsigned char) *d++]]) - range--; - else - while (range > lim && !fastmap[(unsigned char) *d++]) - range--; - - startpos += irange - range; - } - else /* Searching backwards. */ - { - register CHAR_T c = (size1 == 0 || startpos >= size1 - ? string2[startpos - size1] - : string1[startpos]); - - if (!fastmap[(unsigned char) TRANSLATE (c)]) - goto advance; - } - } - - /* If can't match the null string, and that's all we have left, fail. */ - if (range >= 0 && startpos == total_size && fastmap - && !bufp->can_be_null) - { -#ifdef WCHAR - FREE_WCS_BUFFERS (); -#endif - return -1; - } - -#ifdef WCHAR - val = wcs_re_match_2_internal (bufp, string1, size1, string2, - size2, startpos, regs, stop, - wcs_string1, wcs_size1, - wcs_string2, wcs_size2, - mbs_offset1, mbs_offset2); -#else /* BYTE */ - val = byte_re_match_2_internal (bufp, string1, size1, string2, - size2, startpos, regs, stop); -#endif /* BYTE */ - -#ifndef REGEX_MALLOC -# ifdef C_ALLOCA - alloca (0); -# endif -#endif - - if (val >= 0) - { -#ifdef WCHAR - FREE_WCS_BUFFERS (); -#endif - return startpos; - } - - if (val == -2) - { -#ifdef WCHAR - FREE_WCS_BUFFERS (); -#endif - return -2; - } - - advance: - if (!range) - break; - else if (range > 0) - { - range--; - startpos++; - } - else - { - range++; - startpos--; - } - } -#ifdef WCHAR - FREE_WCS_BUFFERS (); -#endif - return -1; -} - -#ifdef WCHAR -/* This converts PTR, a pointer into one of the search wchar_t strings - `string1' and `string2' into an multibyte string offset from the - beginning of that string. We use mbs_offset to optimize. - See convert_mbs_to_wcs. */ -# define POINTER_TO_OFFSET(ptr) \ - (FIRST_STRING_P (ptr) \ - ? ((regoff_t)(mbs_offset1 != NULL? mbs_offset1[(ptr)-string1] : 0)) \ - : ((regoff_t)((mbs_offset2 != NULL? mbs_offset2[(ptr)-string2] : 0) \ - + csize1))) -#else /* BYTE */ -/* This converts PTR, a pointer into one of the search strings `string1' - and `string2' into an offset from the beginning of that string. */ -# define POINTER_TO_OFFSET(ptr) \ - (FIRST_STRING_P (ptr) \ - ? ((regoff_t) ((ptr) - string1)) \ - : ((regoff_t) ((ptr) - string2 + size1))) -#endif /* WCHAR */ - -/* Macros for dealing with the split strings in re_match_2. */ - -#define MATCHING_IN_FIRST_STRING (dend == end_match_1) - -/* Call before fetching a character with *d. This switches over to - string2 if necessary. */ -#define PREFETCH() \ - while (d == dend) \ - { \ - /* End of string2 => fail. */ \ - if (dend == end_match_2) \ - goto fail; \ - /* End of string1 => advance to string2. */ \ - d = string2; \ - dend = end_match_2; \ - } - -/* Test if at very beginning or at very end of the virtual concatenation - of `string1' and `string2'. If only one string, it's `string2'. */ -#define AT_STRINGS_BEG(d) ((d) == (size1 ? string1 : string2) || !size2) -#define AT_STRINGS_END(d) ((d) == end2) - - -/* Test if D points to a character which is word-constituent. We have - two special cases to check for: if past the end of string1, look at - the first character in string2; and if before the beginning of - string2, look at the last character in string1. */ -#ifdef WCHAR -/* Use internationalized API instead of SYNTAX. */ -# define WORDCHAR_P(d) \ - (iswalnum ((wint_t)((d) == end1 ? *string2 \ - : (d) == string2 - 1 ? *(end1 - 1) : *(d))) != 0 \ - || ((d) == end1 ? *string2 \ - : (d) == string2 - 1 ? *(end1 - 1) : *(d)) == L'_') -#else /* BYTE */ -# define WORDCHAR_P(d) \ - (SYNTAX ((d) == end1 ? *string2 \ - : (d) == string2 - 1 ? *(end1 - 1) : *(d)) \ - == Sword) -#endif /* WCHAR */ - -/* Disabled due to a compiler bug -- see comment at case wordbound */ -#if 0 -/* Test if the character before D and the one at D differ with respect - to being word-constituent. */ -#define AT_WORD_BOUNDARY(d) \ - (AT_STRINGS_BEG (d) || AT_STRINGS_END (d) \ - || WORDCHAR_P (d - 1) != WORDCHAR_P (d)) -#endif - -/* Free everything we malloc. */ -#ifdef MATCH_MAY_ALLOCATE -# ifdef WCHAR -# define FREE_VARIABLES() \ - do { \ - REGEX_FREE_STACK (fail_stack.stack); \ - FREE_VAR (regstart); \ - FREE_VAR (regend); \ - FREE_VAR (old_regstart); \ - FREE_VAR (old_regend); \ - FREE_VAR (best_regstart); \ - FREE_VAR (best_regend); \ - FREE_VAR (reg_info); \ - FREE_VAR (reg_dummy); \ - FREE_VAR (reg_info_dummy); \ - if (!cant_free_wcs_buf) \ - { \ - FREE_VAR (string1); \ - FREE_VAR (string2); \ - FREE_VAR (mbs_offset1); \ - FREE_VAR (mbs_offset2); \ - } \ - } while (0) -# else /* BYTE */ -# define FREE_VARIABLES() \ - do { \ - REGEX_FREE_STACK (fail_stack.stack); \ - FREE_VAR (regstart); \ - FREE_VAR (regend); \ - FREE_VAR (old_regstart); \ - FREE_VAR (old_regend); \ - FREE_VAR (best_regstart); \ - FREE_VAR (best_regend); \ - FREE_VAR (reg_info); \ - FREE_VAR (reg_dummy); \ - FREE_VAR (reg_info_dummy); \ - } while (0) -# endif /* WCHAR */ -#else -# ifdef WCHAR -# define FREE_VARIABLES() \ - do { \ - if (!cant_free_wcs_buf) \ - { \ - FREE_VAR (string1); \ - FREE_VAR (string2); \ - FREE_VAR (mbs_offset1); \ - FREE_VAR (mbs_offset2); \ - } \ - } while (0) -# else /* BYTE */ -# define FREE_VARIABLES() ((void)0) /* Do nothing! But inhibit gcc warning. */ -# endif /* WCHAR */ -#endif /* not MATCH_MAY_ALLOCATE */ - -/* These values must meet several constraints. They must not be valid - register values; since we have a limit of 255 registers (because - we use only one byte in the pattern for the register number), we can - use numbers larger than 255. They must differ by 1, because of - NUM_FAILURE_ITEMS above. And the value for the lowest register must - be larger than the value for the highest register, so we do not try - to actually save any registers when none are active. */ -#define NO_HIGHEST_ACTIVE_REG (1 << BYTEWIDTH) -#define NO_LOWEST_ACTIVE_REG (NO_HIGHEST_ACTIVE_REG + 1) - -#else /* not INSIDE_RECURSION */ -/* Matching routines. */ - -#ifndef emacs /* Emacs never uses this. */ -/* re_match is like re_match_2 except it takes only a single string. */ - -int -re_match (bufp, string, size, pos, regs) - struct re_pattern_buffer *bufp; - const char *string; - int size, pos; - struct re_registers *regs; -{ - int result; -# ifdef MBS_SUPPORT - if (MB_CUR_MAX != 1) - result = wcs_re_match_2_internal (bufp, NULL, 0, string, size, - pos, regs, size, - NULL, 0, NULL, 0, NULL, NULL); - else -# endif - result = byte_re_match_2_internal (bufp, NULL, 0, string, size, - pos, regs, size); -# ifndef REGEX_MALLOC -# ifdef C_ALLOCA - alloca (0); -# endif -# endif - return result; -} -# ifdef _LIBC -weak_alias (__re_match, re_match) -# endif -#endif /* not emacs */ - -#endif /* not INSIDE_RECURSION */ - -#ifdef INSIDE_RECURSION -static boolean PREFIX(group_match_null_string_p) _RE_ARGS ((UCHAR_T **p, - UCHAR_T *end, - PREFIX(register_info_type) *reg_info)); -static boolean PREFIX(alt_match_null_string_p) _RE_ARGS ((UCHAR_T *p, - UCHAR_T *end, - PREFIX(register_info_type) *reg_info)); -static boolean PREFIX(common_op_match_null_string_p) _RE_ARGS ((UCHAR_T **p, - UCHAR_T *end, - PREFIX(register_info_type) *reg_info)); -static int PREFIX(bcmp_translate) _RE_ARGS ((const CHAR_T *s1, const CHAR_T *s2, - int len, char *translate)); -#else /* not INSIDE_RECURSION */ - -/* re_match_2 matches the compiled pattern in BUFP against the - the (virtual) concatenation of STRING1 and STRING2 (of length SIZE1 - and SIZE2, respectively). We start matching at POS, and stop - matching at STOP. - - If REGS is non-null and the `no_sub' field of BUFP is nonzero, we - store offsets for the substring each group matched in REGS. See the - documentation for exactly how many groups we fill. - - We return -1 if no match, -2 if an internal error (such as the - failure stack overflowing). Otherwise, we return the length of the - matched substring. */ - -int -re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) - struct re_pattern_buffer *bufp; - const char *string1, *string2; - int size1, size2; - int pos; - struct re_registers *regs; - int stop; -{ - int result; -# ifdef MBS_SUPPORT - if (MB_CUR_MAX != 1) - result = wcs_re_match_2_internal (bufp, string1, size1, string2, size2, - pos, regs, stop, - NULL, 0, NULL, 0, NULL, NULL); - else -# endif - result = byte_re_match_2_internal (bufp, string1, size1, string2, size2, - pos, regs, stop); - -#ifndef REGEX_MALLOC -# ifdef C_ALLOCA - alloca (0); -# endif -#endif - return result; -} -#ifdef _LIBC -weak_alias (__re_match_2, re_match_2) -#endif - -#endif /* not INSIDE_RECURSION */ - -#ifdef INSIDE_RECURSION - -#ifdef WCHAR -static int count_mbs_length PARAMS ((int *, int)); - -/* This check the substring (from 0, to length) of the multibyte string, - to which offset_buffer correspond. And count how many wchar_t_characters - the substring occupy. We use offset_buffer to optimization. - See convert_mbs_to_wcs. */ - -static int -count_mbs_length(offset_buffer, length) - int *offset_buffer; - int length; -{ - int upper, lower; - - /* Check whether the size is valid. */ - if (length < 0) - return -1; - - if (offset_buffer == NULL) - return 0; - - /* If there are no multibyte character, offset_buffer[i] == i. - Optmize for this case. */ - if (offset_buffer[length] == length) - return length; - - /* Set up upper with length. (because for all i, offset_buffer[i] >= i) */ - upper = length; - lower = 0; - - while (true) - { - int middle = (lower + upper) / 2; - if (middle == lower || middle == upper) - break; - if (offset_buffer[middle] > length) - upper = middle; - else if (offset_buffer[middle] < length) - lower = middle; - else - return middle; - } - - return -1; -} -#endif /* WCHAR */ - -/* This is a separate function so that we can force an alloca cleanup - afterwards. */ -#ifdef WCHAR -static int -wcs_re_match_2_internal (bufp, cstring1, csize1, cstring2, csize2, pos, - regs, stop, string1, size1, string2, size2, - mbs_offset1, mbs_offset2) - struct re_pattern_buffer *bufp; - const char *cstring1, *cstring2; - int csize1, csize2; - int pos; - struct re_registers *regs; - int stop; - /* string1 == string2 == NULL means string1/2, size1/2 and - mbs_offset1/2 need seting up in this function. */ - /* We need wchar_t* buffers correspond to cstring1, cstring2. */ - wchar_t *string1, *string2; - /* We need the size of wchar_t buffers correspond to csize1, csize2. */ - int size1, size2; - /* offset buffer for optimizatoin. See convert_mbs_to_wc. */ - int *mbs_offset1, *mbs_offset2; -#else /* BYTE */ -static int -byte_re_match_2_internal (bufp, string1, size1,string2, size2, pos, - regs, stop) - struct re_pattern_buffer *bufp; - const char *string1, *string2; - int size1, size2; - int pos; - struct re_registers *regs; - int stop; -#endif /* BYTE */ -{ - /* General temporaries. */ - int mcnt; - UCHAR_T *p1; -#ifdef WCHAR - /* They hold whether each wchar_t is binary data or not. */ - char *is_binary = NULL; - /* If true, we can't free string1/2, mbs_offset1/2. */ - int cant_free_wcs_buf = 1; -#endif /* WCHAR */ - - /* Just past the end of the corresponding string. */ - const CHAR_T *end1, *end2; - - /* Pointers into string1 and string2, just past the last characters in - each to consider matching. */ - const CHAR_T *end_match_1, *end_match_2; - - /* Where we are in the data, and the end of the current string. */ - const CHAR_T *d, *dend; - - /* Where we are in the pattern, and the end of the pattern. */ -#ifdef WCHAR - UCHAR_T *pattern, *p; - register UCHAR_T *pend; -#else /* BYTE */ - UCHAR_T *p = bufp->buffer; - register UCHAR_T *pend = p + bufp->used; -#endif /* WCHAR */ - - /* Mark the opcode just after a start_memory, so we can test for an - empty subpattern when we get to the stop_memory. */ - UCHAR_T *just_past_start_mem = 0; - - /* We use this to map every character in the string. */ - RE_TRANSLATE_TYPE translate = bufp->translate; - - /* Failure point stack. Each place that can handle a failure further - down the line pushes a failure point on this stack. It consists of - restart, regend, and reg_info for all registers corresponding to - the subexpressions we're currently inside, plus the number of such - registers, and, finally, two char *'s. The first char * is where - to resume scanning the pattern; the second one is where to resume - scanning the strings. If the latter is zero, the failure point is - a ``dummy''; if a failure happens and the failure point is a dummy, - it gets discarded and the next next one is tried. */ -#ifdef MATCH_MAY_ALLOCATE /* otherwise, this is global. */ - PREFIX(fail_stack_type) fail_stack; -#endif -#ifdef DEBUG - static unsigned failure_id; - unsigned nfailure_points_pushed = 0, nfailure_points_popped = 0; -#endif - -#ifdef REL_ALLOC - /* This holds the pointer to the failure stack, when - it is allocated relocatably. */ - fail_stack_elt_t *failure_stack_ptr; -#endif - - /* We fill all the registers internally, independent of what we - return, for use in backreferences. The number here includes - an element for register zero. */ - size_t num_regs = bufp->re_nsub + 1; - - /* The currently active registers. */ - active_reg_t lowest_active_reg = NO_LOWEST_ACTIVE_REG; - active_reg_t highest_active_reg = NO_HIGHEST_ACTIVE_REG; - - /* Information on the contents of registers. These are pointers into - the input strings; they record just what was matched (on this - attempt) by a subexpression part of the pattern, that is, the - regnum-th regstart pointer points to where in the pattern we began - matching and the regnum-th regend points to right after where we - stopped matching the regnum-th subexpression. (The zeroth register - keeps track of what the whole pattern matches.) */ -#ifdef MATCH_MAY_ALLOCATE /* otherwise, these are global. */ - const CHAR_T **regstart, **regend; -#endif - - /* If a group that's operated upon by a repetition operator fails to - match anything, then the register for its start will need to be - restored because it will have been set to wherever in the string we - are when we last see its open-group operator. Similarly for a - register's end. */ -#ifdef MATCH_MAY_ALLOCATE /* otherwise, these are global. */ - const CHAR_T **old_regstart, **old_regend; -#endif - - /* The is_active field of reg_info helps us keep track of which (possibly - nested) subexpressions we are currently in. The matched_something - field of reg_info[reg_num] helps us tell whether or not we have - matched any of the pattern so far this time through the reg_num-th - subexpression. These two fields get reset each time through any - loop their register is in. */ -#ifdef MATCH_MAY_ALLOCATE /* otherwise, this is global. */ - PREFIX(register_info_type) *reg_info; -#endif - - /* The following record the register info as found in the above - variables when we find a match better than any we've seen before. - This happens as we backtrack through the failure points, which in - turn happens only if we have not yet matched the entire string. */ - unsigned best_regs_set = false; -#ifdef MATCH_MAY_ALLOCATE /* otherwise, these are global. */ - const CHAR_T **best_regstart, **best_regend; -#endif - - /* Logically, this is `best_regend[0]'. But we don't want to have to - allocate space for that if we're not allocating space for anything - else (see below). Also, we never need info about register 0 for - any of the other register vectors, and it seems rather a kludge to - treat `best_regend' differently than the rest. So we keep track of - the end of the best match so far in a separate variable. We - initialize this to NULL so that when we backtrack the first time - and need to test it, it's not garbage. */ - const CHAR_T *match_end = NULL; - - /* This helps SET_REGS_MATCHED avoid doing redundant work. */ - int set_regs_matched_done = 0; - - /* Used when we pop values we don't care about. */ -#ifdef MATCH_MAY_ALLOCATE /* otherwise, these are global. */ - const CHAR_T **reg_dummy; - PREFIX(register_info_type) *reg_info_dummy; -#endif - -#ifdef DEBUG - /* Counts the total number of registers pushed. */ - unsigned num_regs_pushed = 0; -#endif - - /* Definitions for state transitions. More efficiently for gcc. */ -#ifdef __GNUC__ -# if defined HAVE_SUBTRACT_LOCAL_LABELS && defined SHARED -# define NEXT \ - do \ - { \ - int offset; \ - const void *__unbounded ptr; \ - offset = (p == pend \ - ? 0 : jmptable[SWITCH_ENUM_CAST ((re_opcode_t) *p++)]); \ - ptr = &&end_of_pattern + offset; \ - goto *ptr; \ - } \ - while (0) -# define REF(x) \ - &&label_##x - &&end_of_pattern -# define JUMP_TABLE_TYPE const int -# else -# define NEXT \ - do \ - { \ - const void *__unbounded ptr; \ - ptr = (p == pend ? &&end_of_pattern \ - : jmptable[SWITCH_ENUM_CAST ((re_opcode_t) *p++)]); \ - goto *ptr; \ - } \ - while (0) -# define REF(x) \ - &&label_##x -# define JUMP_TABLE_TYPE const void *const -# endif -# define CASE(x) label_##x - static JUMP_TABLE_TYPE jmptable[] = - { - REF (no_op), - REF (succeed), - REF (exactn), -# ifdef MBS_SUPPORT - REF (exactn_bin), -# endif - REF (anychar), - REF (charset), - REF (charset_not), - REF (start_memory), - REF (stop_memory), - REF (duplicate), - REF (begline), - REF (endline), - REF (begbuf), - REF (endbuf), - REF (jump), - REF (jump_past_alt), - REF (on_failure_jump), - REF (on_failure_keep_string_jump), - REF (pop_failure_jump), - REF (maybe_pop_jump), - REF (dummy_failure_jump), - REF (push_dummy_failure), - REF (succeed_n), - REF (jump_n), - REF (set_number_at), - REF (wordchar), - REF (notwordchar), - REF (wordbeg), - REF (wordend), - REF (wordbound), - REF (notwordbound) -# ifdef emacs - ,REF (before_dot), - REF (at_dot), - REF (after_dot), - REF (syntaxspec), - REF (notsyntaxspec) -# endif - }; -#else -# define NEXT \ - break -# define CASE(x) \ - case x -#endif - - DEBUG_PRINT1 ("\n\nEntering re_match_2.\n"); - - INIT_FAIL_STACK (); - -#ifdef MATCH_MAY_ALLOCATE - /* Do not bother to initialize all the register variables if there are - no groups in the pattern, as it takes a fair amount of time. If - there are groups, we include space for register 0 (the whole - pattern), even though we never use it, since it simplifies the - array indexing. We should fix this. */ - if (bufp->re_nsub) - { - regstart = REGEX_TALLOC (num_regs, const CHAR_T *); - regend = REGEX_TALLOC (num_regs, const CHAR_T *); - old_regstart = REGEX_TALLOC (num_regs, const CHAR_T *); - old_regend = REGEX_TALLOC (num_regs, const CHAR_T *); - best_regstart = REGEX_TALLOC (num_regs, const CHAR_T *); - best_regend = REGEX_TALLOC (num_regs, const CHAR_T *); - reg_info = REGEX_TALLOC (num_regs, PREFIX(register_info_type)); - reg_dummy = REGEX_TALLOC (num_regs, const CHAR_T *); - reg_info_dummy = REGEX_TALLOC (num_regs, PREFIX(register_info_type)); - - if (!(regstart && regend && old_regstart && old_regend && reg_info - && best_regstart && best_regend && reg_dummy && reg_info_dummy)) - { - FREE_VARIABLES (); - return -2; - } - } - else - { - /* We must initialize all our variables to NULL, so that - `FREE_VARIABLES' doesn't try to free them. */ - regstart = regend = old_regstart = old_regend = best_regstart - = best_regend = reg_dummy = NULL; - reg_info = reg_info_dummy = (PREFIX(register_info_type) *) NULL; - } -#endif /* MATCH_MAY_ALLOCATE */ - - /* The starting position is bogus. */ -#ifdef WCHAR - if (pos < 0 || pos > csize1 + csize2) -#else /* BYTE */ - if (pos < 0 || pos > size1 + size2) -#endif - { - FREE_VARIABLES (); - return -1; - } - -#ifdef WCHAR - /* Allocate wchar_t array for string1 and string2 and - fill them with converted string. */ - if (string1 == NULL && string2 == NULL) - { - /* We need seting up buffers here. */ - - /* We must free wcs buffers in this function. */ - cant_free_wcs_buf = 0; - - if (csize1 != 0) - { - string1 = REGEX_TALLOC (csize1 + 1, CHAR_T); - mbs_offset1 = REGEX_TALLOC (csize1 + 1, int); - is_binary = REGEX_TALLOC (csize1 + 1, char); - if (!string1 || !mbs_offset1 || !is_binary) - { - FREE_VAR (string1); - FREE_VAR (mbs_offset1); - FREE_VAR (is_binary); - return -2; - } - } - if (csize2 != 0) - { - string2 = REGEX_TALLOC (csize2 + 1, CHAR_T); - mbs_offset2 = REGEX_TALLOC (csize2 + 1, int); - is_binary = REGEX_TALLOC (csize2 + 1, char); - if (!string2 || !mbs_offset2 || !is_binary) - { - FREE_VAR (string1); - FREE_VAR (mbs_offset1); - FREE_VAR (string2); - FREE_VAR (mbs_offset2); - FREE_VAR (is_binary); - return -2; - } - size2 = convert_mbs_to_wcs(string2, cstring2, csize2, - mbs_offset2, is_binary); - string2[size2] = L'\0'; /* for a sentinel */ - FREE_VAR (is_binary); - } - } - - /* We need to cast pattern to (wchar_t*), because we casted this compiled - pattern to (char*) in regex_compile. */ - p = pattern = (CHAR_T*)bufp->buffer; - pend = (CHAR_T*)(bufp->buffer + bufp->used); - -#endif /* WCHAR */ - - /* Initialize subexpression text positions to -1 to mark ones that no - start_memory/stop_memory has been seen for. Also initialize the - register information struct. */ - for (mcnt = 1; (unsigned) mcnt < num_regs; mcnt++) - { - regstart[mcnt] = regend[mcnt] - = old_regstart[mcnt] = old_regend[mcnt] = REG_UNSET_VALUE; - - REG_MATCH_NULL_STRING_P (reg_info[mcnt]) = MATCH_NULL_UNSET_VALUE; - IS_ACTIVE (reg_info[mcnt]) = 0; - MATCHED_SOMETHING (reg_info[mcnt]) = 0; - EVER_MATCHED_SOMETHING (reg_info[mcnt]) = 0; - } - - /* We move `string1' into `string2' if the latter's empty -- but not if - `string1' is null. */ - if (size2 == 0 && string1 != NULL) - { - string2 = string1; - size2 = size1; - string1 = 0; - size1 = 0; -#ifdef WCHAR - mbs_offset2 = mbs_offset1; - csize2 = csize1; - mbs_offset1 = NULL; - csize1 = 0; -#endif - } - end1 = string1 + size1; - end2 = string2 + size2; - - /* Compute where to stop matching, within the two strings. */ -#ifdef WCHAR - if (stop <= csize1) - { - mcnt = count_mbs_length(mbs_offset1, stop); - end_match_1 = string1 + mcnt; - end_match_2 = string2; - } - else - { - if (stop > csize1 + csize2) - stop = csize1 + csize2; - end_match_1 = end1; - mcnt = count_mbs_length(mbs_offset2, stop-csize1); - end_match_2 = string2 + mcnt; - } - if (mcnt < 0) - { /* count_mbs_length return error. */ - FREE_VARIABLES (); - return -1; - } -#else - if (stop <= size1) - { - end_match_1 = string1 + stop; - end_match_2 = string2; - } - else - { - end_match_1 = end1; - end_match_2 = string2 + stop - size1; - } -#endif /* WCHAR */ - - /* `p' scans through the pattern as `d' scans through the data. - `dend' is the end of the input string that `d' points within. `d' - is advanced into the following input string whenever necessary, but - this happens before fetching; therefore, at the beginning of the - loop, `d' can be pointing at the end of a string, but it cannot - equal `string2'. */ -#ifdef WCHAR - if (size1 > 0 && pos <= csize1) - { - mcnt = count_mbs_length(mbs_offset1, pos); - d = string1 + mcnt; - dend = end_match_1; - } - else - { - mcnt = count_mbs_length(mbs_offset2, pos-csize1); - d = string2 + mcnt; - dend = end_match_2; - } - - if (mcnt < 0) - { /* count_mbs_length return error. */ - FREE_VARIABLES (); - return -1; - } -#else - if (size1 > 0 && pos <= size1) - { - d = string1 + pos; - dend = end_match_1; - } - else - { - d = string2 + pos - size1; - dend = end_match_2; - } -#endif /* WCHAR */ - - DEBUG_PRINT1 ("The compiled pattern is:\n"); - DEBUG_PRINT_COMPILED_PATTERN (bufp, p, pend); - DEBUG_PRINT1 ("The string to match is: `"); - DEBUG_PRINT_DOUBLE_STRING (d, string1, size1, string2, size2); - DEBUG_PRINT1 ("'\n"); - - /* This loops over pattern commands. It exits by returning from the - function if the match is complete, or it drops through if the match - fails at this starting point in the input data. */ - for (;;) - { -#ifdef _LIBC - DEBUG_PRINT2 ("\n%p: ", p); -#else - DEBUG_PRINT2 ("\n0x%x: ", p); -#endif - -#ifdef __GNUC__ - NEXT; -#else - if (p == pend) -#endif - { -#ifdef __GNUC__ - end_of_pattern: -#endif - /* End of pattern means we might have succeeded. */ - DEBUG_PRINT1 ("end of pattern ... "); - - /* If we haven't matched the entire string, and we want the - longest match, try backtracking. */ - if (d != end_match_2) - { - /* 1 if this match ends in the same string (string1 or string2) - as the best previous match. */ - boolean same_str_p = (FIRST_STRING_P (match_end) - == MATCHING_IN_FIRST_STRING); - /* 1 if this match is the best seen so far. */ - boolean best_match_p; - - /* AIX compiler got confused when this was combined - with the previous declaration. */ - if (same_str_p) - best_match_p = d > match_end; - else - best_match_p = !MATCHING_IN_FIRST_STRING; - - DEBUG_PRINT1 ("backtracking.\n"); - - if (!FAIL_STACK_EMPTY ()) - { /* More failure points to try. */ - - /* If exceeds best match so far, save it. */ - if (!best_regs_set || best_match_p) - { - best_regs_set = true; - match_end = d; - - DEBUG_PRINT1 ("\nSAVING match as best so far.\n"); - - for (mcnt = 1; (unsigned) mcnt < num_regs; mcnt++) - { - best_regstart[mcnt] = regstart[mcnt]; - best_regend[mcnt] = regend[mcnt]; - } - } - goto fail; - } - - /* If no failure points, don't restore garbage. And if - last match is real best match, don't restore second - best one. */ - else if (best_regs_set && !best_match_p) - { - restore_best_regs: - /* Restore best match. It may happen that `dend == - end_match_1' while the restored d is in string2. - For example, the pattern `x.*y.*z' against the - strings `x-' and `y-z-', if the two strings are - not consecutive in memory. */ - DEBUG_PRINT1 ("Restoring best registers.\n"); - - d = match_end; - dend = ((d >= string1 && d <= end1) - ? end_match_1 : end_match_2); - - for (mcnt = 1; (unsigned) mcnt < num_regs; mcnt++) - { - regstart[mcnt] = best_regstart[mcnt]; - regend[mcnt] = best_regend[mcnt]; - } - } - } /* d != end_match_2 */ - - succeed_label: - DEBUG_PRINT1 ("Accepting match.\n"); - /* If caller wants register contents data back, do it. */ - if (regs && !bufp->no_sub) - { - /* Have the register data arrays been allocated? */ - if (bufp->regs_allocated == REGS_UNALLOCATED) - { /* No. So allocate them with malloc. We need one - extra element beyond `num_regs' for the `-1' marker - GNU code uses. */ - regs->num_regs = MAX (RE_NREGS, num_regs + 1); - regs->start = TALLOC (regs->num_regs, regoff_t); - regs->end = TALLOC (regs->num_regs, regoff_t); - if (regs->start == NULL || regs->end == NULL) - { - FREE_VARIABLES (); - return -2; - } - bufp->regs_allocated = REGS_REALLOCATE; - } - else if (bufp->regs_allocated == REGS_REALLOCATE) - { /* Yes. If we need more elements than were already - allocated, reallocate them. If we need fewer, just - leave it alone. */ - if (regs->num_regs < num_regs + 1) - { - regs->num_regs = num_regs + 1; - RETALLOC (regs->start, regs->num_regs, regoff_t); - RETALLOC (regs->end, regs->num_regs, regoff_t); - if (regs->start == NULL || regs->end == NULL) - { - FREE_VARIABLES (); - return -2; - } - } - } - else - { - /* These braces fend off a "empty body in an else-statement" - warning under GCC when assert expands to nothing. */ - assert (bufp->regs_allocated == REGS_FIXED); - } - - /* Convert the pointer data in `regstart' and `regend' to - indices. Register zero has to be set differently, - since we haven't kept track of any info for it. */ - if (regs->num_regs > 0) - { - regs->start[0] = pos; -#ifdef WCHAR - if (MATCHING_IN_FIRST_STRING) - regs->end[0] = (mbs_offset1 != NULL ? - mbs_offset1[d-string1] : 0); - else - regs->end[0] = csize1 + (mbs_offset2 != NULL - ? mbs_offset2[d-string2] : 0); -#else - regs->end[0] = (MATCHING_IN_FIRST_STRING - ? ((regoff_t) (d - string1)) - : ((regoff_t) (d - string2 + size1))); -#endif /* WCHAR */ - } - - /* Go through the first `min (num_regs, regs->num_regs)' - registers, since that is all we initialized. */ - for (mcnt = 1; (unsigned) mcnt < MIN (num_regs, regs->num_regs); - mcnt++) - { - if (REG_UNSET (regstart[mcnt]) || REG_UNSET (regend[mcnt])) - regs->start[mcnt] = regs->end[mcnt] = -1; - else - { - regs->start[mcnt] - = (regoff_t) POINTER_TO_OFFSET (regstart[mcnt]); - regs->end[mcnt] - = (regoff_t) POINTER_TO_OFFSET (regend[mcnt]); - } - } - - /* If the regs structure we return has more elements than - were in the pattern, set the extra elements to -1. If - we (re)allocated the registers, this is the case, - because we always allocate enough to have at least one - -1 at the end. */ - for (mcnt = num_regs; (unsigned) mcnt < regs->num_regs; mcnt++) - regs->start[mcnt] = regs->end[mcnt] = -1; - } /* regs && !bufp->no_sub */ - - DEBUG_PRINT4 ("%u failure points pushed, %u popped (%u remain).\n", - nfailure_points_pushed, nfailure_points_popped, - nfailure_points_pushed - nfailure_points_popped); - DEBUG_PRINT2 ("%u registers pushed.\n", num_regs_pushed); - -#ifdef WCHAR - if (MATCHING_IN_FIRST_STRING) - mcnt = mbs_offset1 != NULL ? mbs_offset1[d-string1] : 0; - else - mcnt = (mbs_offset2 != NULL ? mbs_offset2[d-string2] : 0) + - csize1; - mcnt -= pos; -#else - mcnt = d - pos - (MATCHING_IN_FIRST_STRING - ? string1 : string2 - size1); -#endif /* WCHAR */ - - DEBUG_PRINT2 ("Returning %d from re_match_2.\n", mcnt); - - FREE_VARIABLES (); - return mcnt; - } - -#ifndef __GNUC__ - /* Otherwise match next pattern command. */ - switch (SWITCH_ENUM_CAST ((re_opcode_t) *p++)) - { -#endif - /* Ignore these. Used to ignore the n of succeed_n's which - currently have n == 0. */ - CASE (no_op): - DEBUG_PRINT1 ("EXECUTING no_op.\n"); - NEXT; - - CASE (succeed): - DEBUG_PRINT1 ("EXECUTING succeed.\n"); - goto succeed_label; - - /* Match the next n pattern characters exactly. The following - byte in the pattern defines n, and the n bytes after that - are the characters to match. */ - CASE (exactn): -#ifdef MBS_SUPPORT - CASE (exactn_bin): -#endif - mcnt = *p++; - DEBUG_PRINT2 ("EXECUTING exactn %d.\n", mcnt); - - /* This is written out as an if-else so we don't waste time - testing `translate' inside the loop. */ - if (translate) - { - do - { - PREFETCH (); -#ifdef WCHAR - if (*d <= 0xff) - { - if ((UCHAR_T) translate[(unsigned char) *d++] - != (UCHAR_T) *p++) - goto fail; - } - else - { - if (*d++ != (CHAR_T) *p++) - goto fail; - } -#else - if ((UCHAR_T) translate[(unsigned char) *d++] - != (UCHAR_T) *p++) - goto fail; -#endif /* WCHAR */ - } - while (--mcnt); - } - else - { - do - { - PREFETCH (); - if (*d++ != (CHAR_T) *p++) goto fail; - } - while (--mcnt); - } - SET_REGS_MATCHED (); - NEXT; - - - /* Match any character except possibly a newline or a null. */ - CASE (anychar): - DEBUG_PRINT1 ("EXECUTING anychar.\n"); - - PREFETCH (); - - if ((!(bufp->syntax & RE_DOT_NEWLINE) && TRANSLATE (*d) == '\n') - || (bufp->syntax & RE_DOT_NOT_NULL && TRANSLATE (*d) == '\000')) - goto fail; - - SET_REGS_MATCHED (); - DEBUG_PRINT2 (" Matched `%ld'.\n", (long int) *d); - d++; - NEXT; - - - CASE (charset): - CASE (charset_not): - { - register UCHAR_T c; -#ifdef WCHAR - unsigned int i, char_class_length, coll_symbol_length, - equiv_class_length, ranges_length, chars_length, length; - CHAR_T *workp, *workp2, *charset_top; -#define WORK_BUFFER_SIZE 128 - CHAR_T str_buf[WORK_BUFFER_SIZE]; -# ifdef _LIBC - uint32_t nrules; -# endif /* _LIBC */ -#endif /* WCHAR */ - boolean not = (re_opcode_t) *(p - 1) == charset_not; - - DEBUG_PRINT2 ("EXECUTING charset%s.\n", not ? "_not" : ""); - PREFETCH (); - c = TRANSLATE (*d); /* The character to match. */ -#ifdef WCHAR -# ifdef _LIBC - nrules = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES); -# endif /* _LIBC */ - charset_top = p - 1; - char_class_length = *p++; - coll_symbol_length = *p++; - equiv_class_length = *p++; - ranges_length = *p++; - chars_length = *p++; - /* p points charset[6], so the address of the next instruction - (charset[l+m+n+2o+k+p']) equals p[l+m+n+2*o+p'], - where l=length of char_classes, m=length of collating_symbol, - n=equivalence_class, o=length of char_range, - p'=length of character. */ - workp = p; - /* Update p to indicate the next instruction. */ - p += char_class_length + coll_symbol_length+ equiv_class_length + - 2*ranges_length + chars_length; - - /* match with char_class? */ - for (i = 0; i < char_class_length ; i += CHAR_CLASS_SIZE) - { - wctype_t wctype; - uintptr_t alignedp = ((uintptr_t)workp - + __alignof__(wctype_t) - 1) - & ~(uintptr_t)(__alignof__(wctype_t) - 1); - wctype = *((wctype_t*)alignedp); - workp += CHAR_CLASS_SIZE; - if (iswctype((wint_t)c, wctype)) - goto char_set_matched; - } - - /* match with collating_symbol? */ -# ifdef _LIBC - if (nrules != 0) - { - const unsigned char *extra = (const unsigned char *) - _NL_CURRENT (LC_COLLATE, _NL_COLLATE_SYMB_EXTRAMB); - - for (workp2 = workp + coll_symbol_length ; workp < workp2 ; - workp++) - { - int32_t *wextra; - wextra = (int32_t*)(extra + *workp++); - for (i = 0; i < *wextra; ++i) - if (TRANSLATE(d[i]) != wextra[1 + i]) - break; - - if (i == *wextra) - { - /* Update d, however d will be incremented at - char_set_matched:, we decrement d here. */ - d += i - 1; - goto char_set_matched; - } - } - } - else /* (nrules == 0) */ -# endif - /* If we can't look up collation data, we use wcscoll - instead. */ - { - for (workp2 = workp + coll_symbol_length ; workp < workp2 ;) - { - const CHAR_T *backup_d = d, *backup_dend = dend; - length = wcslen (workp); - - /* If wcscoll(the collating symbol, whole string) > 0, - any substring of the string never match with the - collating symbol. */ - if (wcscoll (workp, d) > 0) - { - workp += length + 1; - continue; - } - - /* First, we compare the collating symbol with - the first character of the string. - If it don't match, we add the next character to - the compare buffer in turn. */ - for (i = 0 ; i < WORK_BUFFER_SIZE-1 ; i++, d++) - { - int match; - if (d == dend) - { - if (dend == end_match_2) - break; - d = string2; - dend = end_match_2; - } - - /* add next character to the compare buffer. */ - str_buf[i] = TRANSLATE(*d); - str_buf[i+1] = '\0'; - - match = wcscoll (workp, str_buf); - if (match == 0) - goto char_set_matched; - - if (match < 0) - /* (str_buf > workp) indicate (str_buf + X > workp), - because for all X (str_buf + X > str_buf). - So we don't need continue this loop. */ - break; - - /* Otherwise(str_buf < workp), - (str_buf+next_character) may equals (workp). - So we continue this loop. */ - } - /* not matched */ - d = backup_d; - dend = backup_dend; - workp += length + 1; - } - } - /* match with equivalence_class? */ -# ifdef _LIBC - if (nrules != 0) - { - const CHAR_T *backup_d = d, *backup_dend = dend; - /* Try to match the equivalence class against - those known to the collate implementation. */ - const int32_t *table; - const int32_t *weights; - const int32_t *extra; - const int32_t *indirect; - int32_t idx, idx2; - wint_t *cp; - size_t len; - - /* This #include defines a local function! */ -# include - - table = (const int32_t *) - _NL_CURRENT (LC_COLLATE, _NL_COLLATE_TABLEWC); - weights = (const wint_t *) - _NL_CURRENT (LC_COLLATE, _NL_COLLATE_WEIGHTWC); - extra = (const wint_t *) - _NL_CURRENT (LC_COLLATE, _NL_COLLATE_EXTRAWC); - indirect = (const int32_t *) - _NL_CURRENT (LC_COLLATE, _NL_COLLATE_INDIRECTWC); - - /* Write 1 collating element to str_buf, and - get its index. */ - idx2 = 0; - - for (i = 0 ; idx2 == 0 && i < WORK_BUFFER_SIZE - 1; i++) - { - cp = (wint_t*)str_buf; - if (d == dend) - { - if (dend == end_match_2) - break; - d = string2; - dend = end_match_2; - } - str_buf[i] = TRANSLATE(*(d+i)); - str_buf[i+1] = '\0'; /* sentinel */ - idx2 = findidx ((const wint_t**)&cp); - } - - /* Update d, however d will be incremented at - char_set_matched:, we decrement d here. */ - d = backup_d + ((wchar_t*)cp - (wchar_t*)str_buf - 1); - if (d >= dend) - { - if (dend == end_match_2) - d = dend; - else - { - d = string2; - dend = end_match_2; - } - } - - len = weights[idx2]; - - for (workp2 = workp + equiv_class_length ; workp < workp2 ; - workp++) - { - idx = (int32_t)*workp; - /* We already checked idx != 0 in regex_compile. */ - - if (idx2 != 0 && len == weights[idx]) - { - int cnt = 0; - while (cnt < len && (weights[idx + 1 + cnt] - == weights[idx2 + 1 + cnt])) - ++cnt; - - if (cnt == len) - goto char_set_matched; - } - } - /* not matched */ - d = backup_d; - dend = backup_dend; - } - else /* (nrules == 0) */ -# endif - /* If we can't look up collation data, we use wcscoll - instead. */ - { - for (workp2 = workp + equiv_class_length ; workp < workp2 ;) - { - const CHAR_T *backup_d = d, *backup_dend = dend; - length = wcslen (workp); - - /* If wcscoll(the collating symbol, whole string) > 0, - any substring of the string never match with the - collating symbol. */ - if (wcscoll (workp, d) > 0) - { - workp += length + 1; - break; - } - - /* First, we compare the equivalence class with - the first character of the string. - If it don't match, we add the next character to - the compare buffer in turn. */ - for (i = 0 ; i < WORK_BUFFER_SIZE - 1 ; i++, d++) - { - int match; - if (d == dend) - { - if (dend == end_match_2) - break; - d = string2; - dend = end_match_2; - } - - /* add next character to the compare buffer. */ - str_buf[i] = TRANSLATE(*d); - str_buf[i+1] = '\0'; - - match = wcscoll (workp, str_buf); - - if (match == 0) - goto char_set_matched; - - if (match < 0) - /* (str_buf > workp) indicate (str_buf + X > workp), - because for all X (str_buf + X > str_buf). - So we don't need continue this loop. */ - break; - - /* Otherwise(str_buf < workp), - (str_buf+next_character) may equals (workp). - So we continue this loop. */ - } - /* not matched */ - d = backup_d; - dend = backup_dend; - workp += length + 1; - } - } - - /* match with char_range? */ -# ifdef _LIBC - if (nrules != 0) - { - uint32_t collseqval; - const char *collseq = (const char *) - _NL_CURRENT(LC_COLLATE, _NL_COLLATE_COLLSEQWC); - - collseqval = collseq_table_lookup (collseq, c); - - for (; workp < p - chars_length ;) - { - uint32_t start_val, end_val; - - /* We already compute the collation sequence value - of the characters (or collating symbols). */ - start_val = (uint32_t) *workp++; /* range_start */ - end_val = (uint32_t) *workp++; /* range_end */ - - if (start_val <= collseqval && collseqval <= end_val) - goto char_set_matched; - } - } - else -# endif - { - /* We set range_start_char at str_buf[0], range_end_char - at str_buf[4], and compared char at str_buf[2]. */ - str_buf[1] = 0; - str_buf[2] = c; - str_buf[3] = 0; - str_buf[5] = 0; - for (; workp < p - chars_length ;) - { - wchar_t *range_start_char, *range_end_char; - - /* match if (range_start_char <= c <= range_end_char). */ - - /* If range_start(or end) < 0, we assume -range_start(end) - is the offset of the collating symbol which is specified - as the character of the range start(end). */ - - /* range_start */ - if (*workp < 0) - range_start_char = charset_top - (*workp++); - else - { - str_buf[0] = *workp++; - range_start_char = str_buf; - } - - /* range_end */ - if (*workp < 0) - range_end_char = charset_top - (*workp++); - else - { - str_buf[4] = *workp++; - range_end_char = str_buf + 4; - } - - if (wcscoll (range_start_char, str_buf+2) <= 0 - && wcscoll (str_buf+2, range_end_char) <= 0) - goto char_set_matched; - } - } - - /* match with char? */ - for (; workp < p ; workp++) - if (c == *workp) - goto char_set_matched; - - not = !not; - - char_set_matched: - if (not) goto fail; -#else - /* Cast to `unsigned' instead of `unsigned char' in case the - bit list is a full 32 bytes long. */ - if (c < (unsigned) (*p * BYTEWIDTH) - && p[1 + c / BYTEWIDTH] & (1 << (c % BYTEWIDTH))) - not = !not; - - p += 1 + *p; - - if (!not) goto fail; -#undef WORK_BUFFER_SIZE -#endif /* WCHAR */ - SET_REGS_MATCHED (); - d++; - NEXT; - } - - - /* The beginning of a group is represented by start_memory. - The arguments are the register number in the next byte, and the - number of groups inner to this one in the next. The text - matched within the group is recorded (in the internal - registers data structure) under the register number. */ - CASE (start_memory): - DEBUG_PRINT3 ("EXECUTING start_memory %ld (%ld):\n", - (long int) *p, (long int) p[1]); - - /* Find out if this group can match the empty string. */ - p1 = p; /* To send to group_match_null_string_p. */ - - if (REG_MATCH_NULL_STRING_P (reg_info[*p]) == MATCH_NULL_UNSET_VALUE) - REG_MATCH_NULL_STRING_P (reg_info[*p]) - = PREFIX(group_match_null_string_p) (&p1, pend, reg_info); - - /* Save the position in the string where we were the last time - we were at this open-group operator in case the group is - operated upon by a repetition operator, e.g., with `(a*)*b' - against `ab'; then we want to ignore where we are now in - the string in case this attempt to match fails. */ - old_regstart[*p] = REG_MATCH_NULL_STRING_P (reg_info[*p]) - ? REG_UNSET (regstart[*p]) ? d : regstart[*p] - : regstart[*p]; - DEBUG_PRINT2 (" old_regstart: %d\n", - POINTER_TO_OFFSET (old_regstart[*p])); - - regstart[*p] = d; - DEBUG_PRINT2 (" regstart: %d\n", POINTER_TO_OFFSET (regstart[*p])); - - IS_ACTIVE (reg_info[*p]) = 1; - MATCHED_SOMETHING (reg_info[*p]) = 0; - - /* Clear this whenever we change the register activity status. */ - set_regs_matched_done = 0; - - /* This is the new highest active register. */ - highest_active_reg = *p; - - /* If nothing was active before, this is the new lowest active - register. */ - if (lowest_active_reg == NO_LOWEST_ACTIVE_REG) - lowest_active_reg = *p; - - /* Move past the register number and inner group count. */ - p += 2; - just_past_start_mem = p; - - NEXT; - - - /* The stop_memory opcode represents the end of a group. Its - arguments are the same as start_memory's: the register - number, and the number of inner groups. */ - CASE (stop_memory): - DEBUG_PRINT3 ("EXECUTING stop_memory %ld (%ld):\n", - (long int) *p, (long int) p[1]); - - /* We need to save the string position the last time we were at - this close-group operator in case the group is operated - upon by a repetition operator, e.g., with `((a*)*(b*)*)*' - against `aba'; then we want to ignore where we are now in - the string in case this attempt to match fails. */ - old_regend[*p] = REG_MATCH_NULL_STRING_P (reg_info[*p]) - ? REG_UNSET (regend[*p]) ? d : regend[*p] - : regend[*p]; - DEBUG_PRINT2 (" old_regend: %d\n", - POINTER_TO_OFFSET (old_regend[*p])); - - regend[*p] = d; - DEBUG_PRINT2 (" regend: %d\n", POINTER_TO_OFFSET (regend[*p])); - - /* This register isn't active anymore. */ - IS_ACTIVE (reg_info[*p]) = 0; - - /* Clear this whenever we change the register activity status. */ - set_regs_matched_done = 0; - - /* If this was the only register active, nothing is active - anymore. */ - if (lowest_active_reg == highest_active_reg) - { - lowest_active_reg = NO_LOWEST_ACTIVE_REG; - highest_active_reg = NO_HIGHEST_ACTIVE_REG; - } - else - { /* We must scan for the new highest active register, since - it isn't necessarily one less than now: consider - (a(b)c(d(e)f)g). When group 3 ends, after the f), the - new highest active register is 1. */ - UCHAR_T r = *p - 1; - while (r > 0 && !IS_ACTIVE (reg_info[r])) - r--; - - /* If we end up at register zero, that means that we saved - the registers as the result of an `on_failure_jump', not - a `start_memory', and we jumped to past the innermost - `stop_memory'. For example, in ((.)*) we save - registers 1 and 2 as a result of the *, but when we pop - back to the second ), we are at the stop_memory 1. - Thus, nothing is active. */ - if (r == 0) - { - lowest_active_reg = NO_LOWEST_ACTIVE_REG; - highest_active_reg = NO_HIGHEST_ACTIVE_REG; - } - else - highest_active_reg = r; - } - - /* If just failed to match something this time around with a - group that's operated on by a repetition operator, try to - force exit from the ``loop'', and restore the register - information for this group that we had before trying this - last match. */ - if ((!MATCHED_SOMETHING (reg_info[*p]) - || just_past_start_mem == p - 1) - && (p + 2) < pend) - { - boolean is_a_jump_n = false; - - p1 = p + 2; - mcnt = 0; - switch ((re_opcode_t) *p1++) - { - case jump_n: - is_a_jump_n = true; - case pop_failure_jump: - case maybe_pop_jump: - case jump: - case dummy_failure_jump: - EXTRACT_NUMBER_AND_INCR (mcnt, p1); - if (is_a_jump_n) - p1 += OFFSET_ADDRESS_SIZE; - break; - - default: - /* do nothing */ ; - } - p1 += mcnt; - - /* If the next operation is a jump backwards in the pattern - to an on_failure_jump right before the start_memory - corresponding to this stop_memory, exit from the loop - by forcing a failure after pushing on the stack the - on_failure_jump's jump in the pattern, and d. */ - if (mcnt < 0 && (re_opcode_t) *p1 == on_failure_jump - && (re_opcode_t) p1[1+OFFSET_ADDRESS_SIZE] == start_memory - && p1[2+OFFSET_ADDRESS_SIZE] == *p) - { - /* If this group ever matched anything, then restore - what its registers were before trying this last - failed match, e.g., with `(a*)*b' against `ab' for - regstart[1], and, e.g., with `((a*)*(b*)*)*' - against `aba' for regend[3]. - - Also restore the registers for inner groups for, - e.g., `((a*)(b*))*' against `aba' (register 3 would - otherwise get trashed). */ - - if (EVER_MATCHED_SOMETHING (reg_info[*p])) - { - unsigned r; - - EVER_MATCHED_SOMETHING (reg_info[*p]) = 0; - - /* Restore this and inner groups' (if any) registers. */ - for (r = *p; r < (unsigned) *p + (unsigned) *(p + 1); - r++) - { - regstart[r] = old_regstart[r]; - - /* xx why this test? */ - if (old_regend[r] >= regstart[r]) - regend[r] = old_regend[r]; - } - } - p1++; - EXTRACT_NUMBER_AND_INCR (mcnt, p1); - PUSH_FAILURE_POINT (p1 + mcnt, d, -2); - - goto fail; - } - } - - /* Move past the register number and the inner group count. */ - p += 2; - NEXT; - - - /* \ has been turned into a `duplicate' command which is - followed by the numeric value of as the register number. */ - CASE (duplicate): - { - register const CHAR_T *d2, *dend2; - int regno = *p++; /* Get which register to match against. */ - DEBUG_PRINT2 ("EXECUTING duplicate %d.\n", regno); - - /* Can't back reference a group which we've never matched. */ - if (REG_UNSET (regstart[regno]) || REG_UNSET (regend[regno])) - goto fail; - - /* Where in input to try to start matching. */ - d2 = regstart[regno]; - - /* Where to stop matching; if both the place to start and - the place to stop matching are in the same string, then - set to the place to stop, otherwise, for now have to use - the end of the first string. */ - - dend2 = ((FIRST_STRING_P (regstart[regno]) - == FIRST_STRING_P (regend[regno])) - ? regend[regno] : end_match_1); - for (;;) - { - /* If necessary, advance to next segment in register - contents. */ - while (d2 == dend2) - { - if (dend2 == end_match_2) break; - if (dend2 == regend[regno]) break; - - /* End of string1 => advance to string2. */ - d2 = string2; - dend2 = regend[regno]; - } - /* At end of register contents => success */ - if (d2 == dend2) break; - - /* If necessary, advance to next segment in data. */ - PREFETCH (); - - /* How many characters left in this segment to match. */ - mcnt = dend - d; - - /* Want how many consecutive characters we can match in - one shot, so, if necessary, adjust the count. */ - if (mcnt > dend2 - d2) - mcnt = dend2 - d2; - - /* Compare that many; failure if mismatch, else move - past them. */ - if (translate - ? PREFIX(bcmp_translate) (d, d2, mcnt, translate) - : memcmp (d, d2, mcnt*sizeof(UCHAR_T))) - goto fail; - d += mcnt, d2 += mcnt; - - /* Do this because we've match some characters. */ - SET_REGS_MATCHED (); - } - } - NEXT; - - - /* begline matches the empty string at the beginning of the string - (unless `not_bol' is set in `bufp'), and, if - `newline_anchor' is set, after newlines. */ - CASE (begline): - DEBUG_PRINT1 ("EXECUTING begline.\n"); - - if (AT_STRINGS_BEG (d)) - { - if (!bufp->not_bol) - { - NEXT; - } - } - else if (d[-1] == '\n' && bufp->newline_anchor) - { - NEXT; - } - /* In all other cases, we fail. */ - goto fail; - - - /* endline is the dual of begline. */ - CASE (endline): - DEBUG_PRINT1 ("EXECUTING endline.\n"); - - if (AT_STRINGS_END (d)) - { - if (!bufp->not_eol) - { - NEXT; - } - } - - /* We have to ``prefetch'' the next character. */ - else if ((d == end1 ? *string2 : *d) == '\n' - && bufp->newline_anchor) - { - NEXT; - } - goto fail; - - - /* Match at the very beginning of the data. */ - CASE (begbuf): - DEBUG_PRINT1 ("EXECUTING begbuf.\n"); - if (AT_STRINGS_BEG (d)) - { - NEXT; - } - goto fail; - - - /* Match at the very end of the data. */ - CASE (endbuf): - DEBUG_PRINT1 ("EXECUTING endbuf.\n"); - if (AT_STRINGS_END (d)) - { - NEXT; - } - goto fail; - - - /* on_failure_keep_string_jump is used to optimize `.*\n'. It - pushes NULL as the value for the string on the stack. Then - `pop_failure_point' will keep the current value for the - string, instead of restoring it. To see why, consider - matching `foo\nbar' against `.*\n'. The .* matches the foo; - then the . fails against the \n. But the next thing we want - to do is match the \n against the \n; if we restored the - string value, we would be back at the foo. - - Because this is used only in specific cases, we don't need to - check all the things that `on_failure_jump' does, to make - sure the right things get saved on the stack. Hence we don't - share its code. The only reason to push anything on the - stack at all is that otherwise we would have to change - `anychar's code to do something besides goto fail in this - case; that seems worse than this. */ - CASE (on_failure_keep_string_jump): - DEBUG_PRINT1 ("EXECUTING on_failure_keep_string_jump"); - - EXTRACT_NUMBER_AND_INCR (mcnt, p); -#ifdef _LIBC - DEBUG_PRINT3 (" %d (to %p):\n", mcnt, p + mcnt); -#else - DEBUG_PRINT3 (" %d (to 0x%x):\n", mcnt, p + mcnt); -#endif - - PUSH_FAILURE_POINT (p + mcnt, NULL, -2); - NEXT; - - - /* Uses of on_failure_jump: - - Each alternative starts with an on_failure_jump that points - to the beginning of the next alternative. Each alternative - except the last ends with a jump that in effect jumps past - the rest of the alternatives. (They really jump to the - ending jump of the following alternative, because tensioning - these jumps is a hassle.) - - Repeats start with an on_failure_jump that points past both - the repetition text and either the following jump or - pop_failure_jump back to this on_failure_jump. */ - CASE (on_failure_jump): - on_failure: - DEBUG_PRINT1 ("EXECUTING on_failure_jump"); - - EXTRACT_NUMBER_AND_INCR (mcnt, p); -#ifdef _LIBC - DEBUG_PRINT3 (" %d (to %p)", mcnt, p + mcnt); -#else - DEBUG_PRINT3 (" %d (to 0x%x)", mcnt, p + mcnt); -#endif - - /* If this on_failure_jump comes right before a group (i.e., - the original * applied to a group), save the information - for that group and all inner ones, so that if we fail back - to this point, the group's information will be correct. - For example, in \(a*\)*\1, we need the preceding group, - and in \(zz\(a*\)b*\)\2, we need the inner group. */ - - /* We can't use `p' to check ahead because we push - a failure point to `p + mcnt' after we do this. */ - p1 = p; - - /* We need to skip no_op's before we look for the - start_memory in case this on_failure_jump is happening as - the result of a completed succeed_n, as in \(a\)\{1,3\}b\1 - against aba. */ - while (p1 < pend && (re_opcode_t) *p1 == no_op) - p1++; - - if (p1 < pend && (re_opcode_t) *p1 == start_memory) - { - /* We have a new highest active register now. This will - get reset at the start_memory we are about to get to, - but we will have saved all the registers relevant to - this repetition op, as described above. */ - highest_active_reg = *(p1 + 1) + *(p1 + 2); - if (lowest_active_reg == NO_LOWEST_ACTIVE_REG) - lowest_active_reg = *(p1 + 1); - } - - DEBUG_PRINT1 (":\n"); - PUSH_FAILURE_POINT (p + mcnt, d, -2); - NEXT; - - - /* A smart repeat ends with `maybe_pop_jump'. - We change it to either `pop_failure_jump' or `jump'. */ - CASE (maybe_pop_jump): - EXTRACT_NUMBER_AND_INCR (mcnt, p); - DEBUG_PRINT2 ("EXECUTING maybe_pop_jump %d.\n", mcnt); - { - register UCHAR_T *p2 = p; - - /* Compare the beginning of the repeat with what in the - pattern follows its end. If we can establish that there - is nothing that they would both match, i.e., that we - would have to backtrack because of (as in, e.g., `a*a') - then we can change to pop_failure_jump, because we'll - never have to backtrack. - - This is not true in the case of alternatives: in - `(a|ab)*' we do need to backtrack to the `ab' alternative - (e.g., if the string was `ab'). But instead of trying to - detect that here, the alternative has put on a dummy - failure point which is what we will end up popping. */ - - /* Skip over open/close-group commands. - If what follows this loop is a ...+ construct, - look at what begins its body, since we will have to - match at least one of that. */ - while (1) - { - if (p2 + 2 < pend - && ((re_opcode_t) *p2 == stop_memory - || (re_opcode_t) *p2 == start_memory)) - p2 += 3; - else if (p2 + 2 + 2 * OFFSET_ADDRESS_SIZE < pend - && (re_opcode_t) *p2 == dummy_failure_jump) - p2 += 2 + 2 * OFFSET_ADDRESS_SIZE; - else - break; - } - - p1 = p + mcnt; - /* p1[0] ... p1[2] are the `on_failure_jump' corresponding - to the `maybe_finalize_jump' of this case. Examine what - follows. */ - - /* If we're at the end of the pattern, we can change. */ - if (p2 == pend) - { - /* Consider what happens when matching ":\(.*\)" - against ":/". I don't really understand this code - yet. */ - p[-(1+OFFSET_ADDRESS_SIZE)] = (UCHAR_T) - pop_failure_jump; - DEBUG_PRINT1 - (" End of pattern: change to `pop_failure_jump'.\n"); - } - - else if ((re_opcode_t) *p2 == exactn -#ifdef MBS_SUPPORT - || (re_opcode_t) *p2 == exactn_bin -#endif - || (bufp->newline_anchor && (re_opcode_t) *p2 == endline)) - { - register UCHAR_T c - = *p2 == (UCHAR_T) endline ? '\n' : p2[2]; - - if (((re_opcode_t) p1[1+OFFSET_ADDRESS_SIZE] == exactn -#ifdef MBS_SUPPORT - || (re_opcode_t) p1[1+OFFSET_ADDRESS_SIZE] == exactn_bin -#endif - ) && p1[3+OFFSET_ADDRESS_SIZE] != c) - { - p[-(1+OFFSET_ADDRESS_SIZE)] = (UCHAR_T) - pop_failure_jump; -#ifdef WCHAR - DEBUG_PRINT3 (" %C != %C => pop_failure_jump.\n", - (wint_t) c, - (wint_t) p1[3+OFFSET_ADDRESS_SIZE]); -#else - DEBUG_PRINT3 (" %c != %c => pop_failure_jump.\n", - (char) c, - (char) p1[3+OFFSET_ADDRESS_SIZE]); -#endif - } - -#ifndef WCHAR - else if ((re_opcode_t) p1[3] == charset - || (re_opcode_t) p1[3] == charset_not) - { - int not = (re_opcode_t) p1[3] == charset_not; - - if (c < (unsigned) (p1[4] * BYTEWIDTH) - && p1[5 + c / BYTEWIDTH] & (1 << (c % BYTEWIDTH))) - not = !not; - - /* `not' is equal to 1 if c would match, which means - that we can't change to pop_failure_jump. */ - if (!not) - { - p[-3] = (unsigned char) pop_failure_jump; - DEBUG_PRINT1 (" No match => pop_failure_jump.\n"); - } - } -#endif /* not WCHAR */ - } -#ifndef WCHAR - else if ((re_opcode_t) *p2 == charset) - { - /* We win if the first character of the loop is not part - of the charset. */ - if ((re_opcode_t) p1[3] == exactn - && ! ((int) p2[1] * BYTEWIDTH > (int) p1[5] - && (p2[2 + p1[5] / BYTEWIDTH] - & (1 << (p1[5] % BYTEWIDTH))))) - { - p[-3] = (unsigned char) pop_failure_jump; - DEBUG_PRINT1 (" No match => pop_failure_jump.\n"); - } - - else if ((re_opcode_t) p1[3] == charset_not) - { - int idx; - /* We win if the charset_not inside the loop - lists every character listed in the charset after. */ - for (idx = 0; idx < (int) p2[1]; idx++) - if (! (p2[2 + idx] == 0 - || (idx < (int) p1[4] - && ((p2[2 + idx] & ~ p1[5 + idx]) == 0)))) - break; - - if (idx == p2[1]) - { - p[-3] = (unsigned char) pop_failure_jump; - DEBUG_PRINT1 (" No match => pop_failure_jump.\n"); - } - } - else if ((re_opcode_t) p1[3] == charset) - { - int idx; - /* We win if the charset inside the loop - has no overlap with the one after the loop. */ - for (idx = 0; - idx < (int) p2[1] && idx < (int) p1[4]; - idx++) - if ((p2[2 + idx] & p1[5 + idx]) != 0) - break; - - if (idx == p2[1] || idx == p1[4]) - { - p[-3] = (unsigned char) pop_failure_jump; - DEBUG_PRINT1 (" No match => pop_failure_jump.\n"); - } - } - } -#endif /* not WCHAR */ - } - p -= OFFSET_ADDRESS_SIZE; /* Point at relative address again. */ - if ((re_opcode_t) p[-1] != pop_failure_jump) - { - p[-1] = (UCHAR_T) jump; - DEBUG_PRINT1 (" Match => jump.\n"); - goto unconditional_jump; - } - /* Note fall through. */ - - - /* The end of a simple repeat has a pop_failure_jump back to - its matching on_failure_jump, where the latter will push a - failure point. The pop_failure_jump takes off failure - points put on by this pop_failure_jump's matching - on_failure_jump; we got through the pattern to here from the - matching on_failure_jump, so didn't fail. */ - CASE (pop_failure_jump): - { - /* We need to pass separate storage for the lowest and - highest registers, even though we don't care about the - actual values. Otherwise, we will restore only one - register from the stack, since lowest will == highest in - `pop_failure_point'. */ - active_reg_t dummy_low_reg, dummy_high_reg; - UCHAR_T *pdummy = NULL; - const CHAR_T *sdummy = NULL; - - DEBUG_PRINT1 ("EXECUTING pop_failure_jump.\n"); - POP_FAILURE_POINT (sdummy, pdummy, - dummy_low_reg, dummy_high_reg, - reg_dummy, reg_dummy, reg_info_dummy); - } - /* Note fall through. */ - - unconditional_jump: -#ifdef _LIBC - DEBUG_PRINT2 ("\n%p: ", p); -#else - DEBUG_PRINT2 ("\n0x%x: ", p); -#endif - /* Note fall through. */ - - /* Unconditionally jump (without popping any failure points). */ - CASE (jump): - EXTRACT_NUMBER_AND_INCR (mcnt, p); /* Get the amount to jump. */ - DEBUG_PRINT2 ("EXECUTING jump %d ", mcnt); - p += mcnt; /* Do the jump. */ -#ifdef _LIBC - DEBUG_PRINT2 ("(to %p).\n", p); -#else - DEBUG_PRINT2 ("(to 0x%x).\n", p); -#endif - NEXT; - - - /* We need this opcode so we can detect where alternatives end - in `group_match_null_string_p' et al. */ - CASE (jump_past_alt): - DEBUG_PRINT1 ("EXECUTING jump_past_alt.\n"); - goto unconditional_jump; - - - /* Normally, the on_failure_jump pushes a failure point, which - then gets popped at pop_failure_jump. We will end up at - pop_failure_jump, also, and with a pattern of, say, `a+', we - are skipping over the on_failure_jump, so we have to push - something meaningless for pop_failure_jump to pop. */ - CASE (dummy_failure_jump): - DEBUG_PRINT1 ("EXECUTING dummy_failure_jump.\n"); - /* It doesn't matter what we push for the string here. What - the code at `fail' tests is the value for the pattern. */ - PUSH_FAILURE_POINT (NULL, NULL, -2); - goto unconditional_jump; - - - /* At the end of an alternative, we need to push a dummy failure - point in case we are followed by a `pop_failure_jump', because - we don't want the failure point for the alternative to be - popped. For example, matching `(a|ab)*' against `aab' - requires that we match the `ab' alternative. */ - CASE (push_dummy_failure): - DEBUG_PRINT1 ("EXECUTING push_dummy_failure.\n"); - /* See comments just above at `dummy_failure_jump' about the - two zeroes. */ - PUSH_FAILURE_POINT (NULL, NULL, -2); - NEXT; - - /* Have to succeed matching what follows at least n times. - After that, handle like `on_failure_jump'. */ - CASE (succeed_n): - EXTRACT_NUMBER (mcnt, p + OFFSET_ADDRESS_SIZE); - DEBUG_PRINT2 ("EXECUTING succeed_n %d.\n", mcnt); - - assert (mcnt >= 0); - /* Originally, this is how many times we HAVE to succeed. */ - if (mcnt > 0) - { - mcnt--; - p += OFFSET_ADDRESS_SIZE; - STORE_NUMBER_AND_INCR (p, mcnt); -#ifdef _LIBC - DEBUG_PRINT3 (" Setting %p to %d.\n", p - OFFSET_ADDRESS_SIZE - , mcnt); -#else - DEBUG_PRINT3 (" Setting 0x%x to %d.\n", p - OFFSET_ADDRESS_SIZE - , mcnt); -#endif - } - else if (mcnt == 0) - { -#ifdef _LIBC - DEBUG_PRINT2 (" Setting two bytes from %p to no_op.\n", - p + OFFSET_ADDRESS_SIZE); -#else - DEBUG_PRINT2 (" Setting two bytes from 0x%x to no_op.\n", - p + OFFSET_ADDRESS_SIZE); -#endif /* _LIBC */ - -#ifdef WCHAR - p[1] = (UCHAR_T) no_op; -#else - p[2] = (UCHAR_T) no_op; - p[3] = (UCHAR_T) no_op; -#endif /* WCHAR */ - goto on_failure; - } - NEXT; - - CASE (jump_n): - EXTRACT_NUMBER (mcnt, p + OFFSET_ADDRESS_SIZE); - DEBUG_PRINT2 ("EXECUTING jump_n %d.\n", mcnt); - - /* Originally, this is how many times we CAN jump. */ - if (mcnt) - { - mcnt--; - STORE_NUMBER (p + OFFSET_ADDRESS_SIZE, mcnt); - -#ifdef _LIBC - DEBUG_PRINT3 (" Setting %p to %d.\n", p + OFFSET_ADDRESS_SIZE, - mcnt); -#else - DEBUG_PRINT3 (" Setting 0x%x to %d.\n", p + OFFSET_ADDRESS_SIZE, - mcnt); -#endif /* _LIBC */ - goto unconditional_jump; - } - /* If don't have to jump any more, skip over the rest of command. */ - else - p += 2 * OFFSET_ADDRESS_SIZE; - NEXT; - - CASE (set_number_at): - { - DEBUG_PRINT1 ("EXECUTING set_number_at.\n"); - - EXTRACT_NUMBER_AND_INCR (mcnt, p); - p1 = p + mcnt; - EXTRACT_NUMBER_AND_INCR (mcnt, p); -#ifdef _LIBC - DEBUG_PRINT3 (" Setting %p to %d.\n", p1, mcnt); -#else - DEBUG_PRINT3 (" Setting 0x%x to %d.\n", p1, mcnt); -#endif - STORE_NUMBER (p1, mcnt); - NEXT; - } - -#if 0 - /* The DEC Alpha C compiler 3.x generates incorrect code for the - test WORDCHAR_P (d - 1) != WORDCHAR_P (d) in the expansion of - AT_WORD_BOUNDARY, so this code is disabled. Expanding the - macro and introducing temporary variables works around the bug. */ - - CASE (wordbound): - DEBUG_PRINT1 ("EXECUTING wordbound.\n"); - if (AT_WORD_BOUNDARY (d)) - { - NEXT; - } - goto fail; - - CASE (notwordbound): - DEBUG_PRINT1 ("EXECUTING notwordbound.\n"); - if (AT_WORD_BOUNDARY (d)) - goto fail; - NEXT; -#else - CASE (wordbound): - { - boolean prevchar, thischar; - - DEBUG_PRINT1 ("EXECUTING wordbound.\n"); - if (AT_STRINGS_BEG (d) || AT_STRINGS_END (d)) - { - NEXT; - } - - prevchar = WORDCHAR_P (d - 1); - thischar = WORDCHAR_P (d); - if (prevchar != thischar) - { - NEXT; - } - goto fail; - } - - CASE (notwordbound): - { - boolean prevchar, thischar; - - DEBUG_PRINT1 ("EXECUTING notwordbound.\n"); - if (AT_STRINGS_BEG (d) || AT_STRINGS_END (d)) - goto fail; - - prevchar = WORDCHAR_P (d - 1); - thischar = WORDCHAR_P (d); - if (prevchar != thischar) - goto fail; - NEXT; - } -#endif - - CASE (wordbeg): - DEBUG_PRINT1 ("EXECUTING wordbeg.\n"); - if (!AT_STRINGS_END (d) && WORDCHAR_P (d) - && (AT_STRINGS_BEG (d) || !WORDCHAR_P (d - 1))) - { - NEXT; - } - goto fail; - - CASE (wordend): - DEBUG_PRINT1 ("EXECUTING wordend.\n"); - if (!AT_STRINGS_BEG (d) && WORDCHAR_P (d - 1) - && (AT_STRINGS_END (d) || !WORDCHAR_P (d))) - { - NEXT; - } - goto fail; - -#ifdef emacs - CASE (before_dot): - DEBUG_PRINT1 ("EXECUTING before_dot.\n"); - if (PTR_CHAR_POS ((unsigned char *) d) >= point) - goto fail; - NEXT; - - CASE (at_dot): - DEBUG_PRINT1 ("EXECUTING at_dot.\n"); - if (PTR_CHAR_POS ((unsigned char *) d) != point) - goto fail; - NEXT; - - CASE (after_dot): - DEBUG_PRINT1 ("EXECUTING after_dot.\n"); - if (PTR_CHAR_POS ((unsigned char *) d) <= point) - goto fail; - NEXT; - - CASE (syntaxspec): - DEBUG_PRINT2 ("EXECUTING syntaxspec %d.\n", mcnt); - mcnt = *p++; - goto matchsyntax; - - CASE (wordchar): - DEBUG_PRINT1 ("EXECUTING Emacs wordchar.\n"); - mcnt = (int) Sword; - matchsyntax: - PREFETCH (); - /* Can't use *d++ here; SYNTAX may be an unsafe macro. */ - d++; - if (SYNTAX (d[-1]) != (enum syntaxcode) mcnt) - goto fail; - SET_REGS_MATCHED (); - NEXT; - - CASE (notsyntaxspec): - DEBUG_PRINT2 ("EXECUTING notsyntaxspec %d.\n", mcnt); - mcnt = *p++; - goto matchnotsyntax; - - CASE (notwordchar): - DEBUG_PRINT1 ("EXECUTING Emacs notwordchar.\n"); - mcnt = (int) Sword; - matchnotsyntax: - PREFETCH (); - /* Can't use *d++ here; SYNTAX may be an unsafe macro. */ - d++; - if (SYNTAX (d[-1]) == (enum syntaxcode) mcnt) - goto fail; - SET_REGS_MATCHED (); - NEXT; - -#else /* not emacs */ - CASE (wordchar): - DEBUG_PRINT1 ("EXECUTING non-Emacs wordchar.\n"); - PREFETCH (); - if (!WORDCHAR_P (d)) - goto fail; - SET_REGS_MATCHED (); - d++; - NEXT; - - CASE (notwordchar): - DEBUG_PRINT1 ("EXECUTING non-Emacs notwordchar.\n"); - PREFETCH (); - if (WORDCHAR_P (d)) - goto fail; - SET_REGS_MATCHED (); - d++; - NEXT; -#endif /* not emacs */ - -#ifndef __GNUC__ - default: - abort (); - } - continue; /* Successfully executed one pattern command; keep going. */ -#endif - - - /* We goto here if a matching operation fails. */ - fail: - if (!FAIL_STACK_EMPTY ()) - { /* A restart point is known. Restore to that state. */ - DEBUG_PRINT1 ("\nFAIL:\n"); - POP_FAILURE_POINT (d, p, - lowest_active_reg, highest_active_reg, - regstart, regend, reg_info); - - /* If this failure point is a dummy, try the next one. */ - if (!p) - goto fail; - - /* If we failed to the end of the pattern, don't examine *p. */ - assert (p <= pend); - if (p < pend) - { - boolean is_a_jump_n = false; - - /* If failed to a backwards jump that's part of a repetition - loop, need to pop this failure point and use the next one. */ - switch ((re_opcode_t) *p) - { - case jump_n: - is_a_jump_n = true; - case maybe_pop_jump: - case pop_failure_jump: - case jump: - p1 = p + 1; - EXTRACT_NUMBER_AND_INCR (mcnt, p1); - p1 += mcnt; - - if ((is_a_jump_n && (re_opcode_t) *p1 == succeed_n) - || (!is_a_jump_n - && (re_opcode_t) *p1 == on_failure_jump)) - goto fail; - break; - default: - /* do nothing */ ; - } - } - - if (d >= string1 && d <= end1) - dend = end_match_1; - } - else - break; /* Matching at this starting point really fails. */ - } /* for (;;) */ - - if (best_regs_set) - goto restore_best_regs; - - FREE_VARIABLES (); - - return -1; /* Failure to match. */ -} /* re_match_2 */ - -/* Subroutine definitions for re_match_2. */ - - -/* We are passed P pointing to a register number after a start_memory. - - Return true if the pattern up to the corresponding stop_memory can - match the empty string, and false otherwise. - - If we find the matching stop_memory, sets P to point to one past its number. - Otherwise, sets P to an undefined byte less than or equal to END. - - We don't handle duplicates properly (yet). */ - -static boolean -PREFIX(group_match_null_string_p) (p, end, reg_info) - UCHAR_T **p, *end; - PREFIX(register_info_type) *reg_info; -{ - int mcnt; - /* Point to after the args to the start_memory. */ - UCHAR_T *p1 = *p + 2; - - while (p1 < end) - { - /* Skip over opcodes that can match nothing, and return true or - false, as appropriate, when we get to one that can't, or to the - matching stop_memory. */ - - switch ((re_opcode_t) *p1) - { - /* Could be either a loop or a series of alternatives. */ - case on_failure_jump: - p1++; - EXTRACT_NUMBER_AND_INCR (mcnt, p1); - - /* If the next operation is not a jump backwards in the - pattern. */ - - if (mcnt >= 0) - { - /* Go through the on_failure_jumps of the alternatives, - seeing if any of the alternatives cannot match nothing. - The last alternative starts with only a jump, - whereas the rest start with on_failure_jump and end - with a jump, e.g., here is the pattern for `a|b|c': - - /on_failure_jump/0/6/exactn/1/a/jump_past_alt/0/6 - /on_failure_jump/0/6/exactn/1/b/jump_past_alt/0/3 - /exactn/1/c - - So, we have to first go through the first (n-1) - alternatives and then deal with the last one separately. */ - - - /* Deal with the first (n-1) alternatives, which start - with an on_failure_jump (see above) that jumps to right - past a jump_past_alt. */ - - while ((re_opcode_t) p1[mcnt-(1+OFFSET_ADDRESS_SIZE)] == - jump_past_alt) - { - /* `mcnt' holds how many bytes long the alternative - is, including the ending `jump_past_alt' and - its number. */ - - if (!PREFIX(alt_match_null_string_p) (p1, p1 + mcnt - - (1 + OFFSET_ADDRESS_SIZE), - reg_info)) - return false; - - /* Move to right after this alternative, including the - jump_past_alt. */ - p1 += mcnt; - - /* Break if it's the beginning of an n-th alternative - that doesn't begin with an on_failure_jump. */ - if ((re_opcode_t) *p1 != on_failure_jump) - break; - - /* Still have to check that it's not an n-th - alternative that starts with an on_failure_jump. */ - p1++; - EXTRACT_NUMBER_AND_INCR (mcnt, p1); - if ((re_opcode_t) p1[mcnt-(1+OFFSET_ADDRESS_SIZE)] != - jump_past_alt) - { - /* Get to the beginning of the n-th alternative. */ - p1 -= 1 + OFFSET_ADDRESS_SIZE; - break; - } - } - - /* Deal with the last alternative: go back and get number - of the `jump_past_alt' just before it. `mcnt' contains - the length of the alternative. */ - EXTRACT_NUMBER (mcnt, p1 - OFFSET_ADDRESS_SIZE); - - if (!PREFIX(alt_match_null_string_p) (p1, p1 + mcnt, reg_info)) - return false; - - p1 += mcnt; /* Get past the n-th alternative. */ - } /* if mcnt > 0 */ - break; - - - case stop_memory: - assert (p1[1] == **p); - *p = p1 + 2; - return true; - - - default: - if (!PREFIX(common_op_match_null_string_p) (&p1, end, reg_info)) - return false; - } - } /* while p1 < end */ - - return false; -} /* group_match_null_string_p */ - - -/* Similar to group_match_null_string_p, but doesn't deal with alternatives: - It expects P to be the first byte of a single alternative and END one - byte past the last. The alternative can contain groups. */ - -static boolean -PREFIX(alt_match_null_string_p) (p, end, reg_info) - UCHAR_T *p, *end; - PREFIX(register_info_type) *reg_info; -{ - int mcnt; - UCHAR_T *p1 = p; - - while (p1 < end) - { - /* Skip over opcodes that can match nothing, and break when we get - to one that can't. */ - - switch ((re_opcode_t) *p1) - { - /* It's a loop. */ - case on_failure_jump: - p1++; - EXTRACT_NUMBER_AND_INCR (mcnt, p1); - p1 += mcnt; - break; - - default: - if (!PREFIX(common_op_match_null_string_p) (&p1, end, reg_info)) - return false; - } - } /* while p1 < end */ - - return true; -} /* alt_match_null_string_p */ - - -/* Deals with the ops common to group_match_null_string_p and - alt_match_null_string_p. - - Sets P to one after the op and its arguments, if any. */ - -static boolean -PREFIX(common_op_match_null_string_p) (p, end, reg_info) - UCHAR_T **p, *end; - PREFIX(register_info_type) *reg_info; -{ - int mcnt; - boolean ret; - int reg_no; - UCHAR_T *p1 = *p; - - switch ((re_opcode_t) *p1++) - { - case no_op: - case begline: - case endline: - case begbuf: - case endbuf: - case wordbeg: - case wordend: - case wordbound: - case notwordbound: -#ifdef emacs - case before_dot: - case at_dot: - case after_dot: -#endif - break; - - case start_memory: - reg_no = *p1; - assert (reg_no > 0 && reg_no <= MAX_REGNUM); - ret = PREFIX(group_match_null_string_p) (&p1, end, reg_info); - - /* Have to set this here in case we're checking a group which - contains a group and a back reference to it. */ - - if (REG_MATCH_NULL_STRING_P (reg_info[reg_no]) == MATCH_NULL_UNSET_VALUE) - REG_MATCH_NULL_STRING_P (reg_info[reg_no]) = ret; - - if (!ret) - return false; - break; - - /* If this is an optimized succeed_n for zero times, make the jump. */ - case jump: - EXTRACT_NUMBER_AND_INCR (mcnt, p1); - if (mcnt >= 0) - p1 += mcnt; - else - return false; - break; - - case succeed_n: - /* Get to the number of times to succeed. */ - p1 += OFFSET_ADDRESS_SIZE; - EXTRACT_NUMBER_AND_INCR (mcnt, p1); - - if (mcnt == 0) - { - p1 -= 2 * OFFSET_ADDRESS_SIZE; - EXTRACT_NUMBER_AND_INCR (mcnt, p1); - p1 += mcnt; - } - else - return false; - break; - - case duplicate: - if (!REG_MATCH_NULL_STRING_P (reg_info[*p1])) - return false; - break; - - case set_number_at: - p1 += 2 * OFFSET_ADDRESS_SIZE; - - default: - /* All other opcodes mean we cannot match the empty string. */ - return false; - } - - *p = p1; - return true; -} /* common_op_match_null_string_p */ - - -/* Return zero if TRANSLATE[S1] and TRANSLATE[S2] are identical for LEN - bytes; nonzero otherwise. */ - -static int -PREFIX(bcmp_translate) (s1, s2, len, translate) - const CHAR_T *s1, *s2; - register int len; - RE_TRANSLATE_TYPE translate; -{ - register const UCHAR_T *p1 = (const UCHAR_T *) s1; - register const UCHAR_T *p2 = (const UCHAR_T *) s2; - while (len) - { -#ifdef WCHAR - if (((*p1<=0xff)?translate[*p1++]:*p1++) - != ((*p2<=0xff)?translate[*p2++]:*p2++)) - return 1; -#else /* BYTE */ - if (translate[*p1++] != translate[*p2++]) return 1; -#endif /* WCHAR */ - len--; - } - return 0; -} - - -#else /* not INSIDE_RECURSION */ - -/* Entry points for GNU code. */ - -/* re_compile_pattern is the GNU regular expression compiler: it - compiles PATTERN (of length SIZE) and puts the result in BUFP. - Returns 0 if the pattern was valid, otherwise an error string. - - Assumes the `allocated' (and perhaps `buffer') and `translate' fields - are set in BUFP on entry. - - We call regex_compile to do the actual compilation. */ - -const char * -re_compile_pattern (pattern, length, bufp) - const char *pattern; - size_t length; - struct re_pattern_buffer *bufp; -{ - reg_errcode_t ret; - - /* GNU code is written to assume at least RE_NREGS registers will be set - (and at least one extra will be -1). */ - bufp->regs_allocated = REGS_UNALLOCATED; - - /* And GNU code determines whether or not to get register information - by passing null for the REGS argument to re_match, etc., not by - setting no_sub. */ - bufp->no_sub = 0; - - /* Match anchors at newline. */ - bufp->newline_anchor = 1; - -# ifdef MBS_SUPPORT - if (MB_CUR_MAX != 1) - ret = wcs_regex_compile (pattern, length, re_syntax_options, bufp); - else -# endif - ret = byte_regex_compile (pattern, length, re_syntax_options, bufp); - - if (!ret) - return NULL; - return gettext (re_error_msgid + re_error_msgid_idx[(int) ret]); -} -#ifdef _LIBC -weak_alias (__re_compile_pattern, re_compile_pattern) -#endif - -/* Entry points compatible with 4.2 BSD regex library. We don't define - them unless specifically requested. */ - -#if defined _REGEX_RE_COMP || defined _LIBC - -/* BSD has one and only one pattern buffer. */ -static struct re_pattern_buffer re_comp_buf; - -char * -#ifdef _LIBC -/* Make these definitions weak in libc, so POSIX programs can redefine - these names if they don't use our functions, and still use - regcomp/regexec below without link errors. */ -weak_function -#endif -re_comp (s) - const char *s; -{ - reg_errcode_t ret; - - if (!s) - { - if (!re_comp_buf.buffer) - return gettext ("No previous regular expression"); - return 0; - } - - if (!re_comp_buf.buffer) - { - re_comp_buf.buffer = (unsigned char *) malloc (200); - if (re_comp_buf.buffer == NULL) - return (char *) gettext (re_error_msgid - + re_error_msgid_idx[(int) REG_ESPACE]); - re_comp_buf.allocated = 200; - - re_comp_buf.fastmap = (char *) malloc (1 << BYTEWIDTH); - if (re_comp_buf.fastmap == NULL) - return (char *) gettext (re_error_msgid - + re_error_msgid_idx[(int) REG_ESPACE]); - } - - /* Since `re_exec' always passes NULL for the `regs' argument, we - don't need to initialize the pattern buffer fields which affect it. */ - - /* Match anchors at newlines. */ - re_comp_buf.newline_anchor = 1; - -# ifdef MBS_SUPPORT - if (MB_CUR_MAX != 1) - ret = wcs_regex_compile (s, strlen (s), re_syntax_options, &re_comp_buf); - else -# endif - ret = byte_regex_compile (s, strlen (s), re_syntax_options, &re_comp_buf); - - if (!ret) - return NULL; - - /* Yes, we're discarding `const' here if !HAVE_LIBINTL. */ - return (char *) gettext (re_error_msgid + re_error_msgid_idx[(int) ret]); -} - - -int -#ifdef _LIBC -weak_function -#endif -re_exec (s) - const char *s; -{ - const int len = strlen (s); - return - 0 <= re_search (&re_comp_buf, s, len, 0, len, (struct re_registers *) 0); -} - -#endif /* _REGEX_RE_COMP */ - -/* POSIX.2 functions. Don't define these for Emacs. */ - -#ifndef emacs - -/* regcomp takes a regular expression as a string and compiles it. - - PREG is a regex_t *. We do not expect any fields to be initialized, - since POSIX says we shouldn't. Thus, we set - - `buffer' to the compiled pattern; - `used' to the length of the compiled pattern; - `syntax' to RE_SYNTAX_POSIX_EXTENDED if the - REG_EXTENDED bit in CFLAGS is set; otherwise, to - RE_SYNTAX_POSIX_BASIC; - `newline_anchor' to REG_NEWLINE being set in CFLAGS; - `fastmap' to an allocated space for the fastmap; - `fastmap_accurate' to zero; - `re_nsub' to the number of subexpressions in PATTERN. - - PATTERN is the address of the pattern string. - - CFLAGS is a series of bits which affect compilation. - - If REG_EXTENDED is set, we use POSIX extended syntax; otherwise, we - use POSIX basic syntax. - - If REG_NEWLINE is set, then . and [^...] don't match newline. - Also, regexec will try a match beginning after every newline. - - If REG_ICASE is set, then we considers upper- and lowercase - versions of letters to be equivalent when matching. - - If REG_NOSUB is set, then when PREG is passed to regexec, that - routine will report only success or failure, and nothing about the - registers. - - It returns 0 if it succeeds, nonzero if it doesn't. (See regex.h for - the return codes and their meanings.) */ - -int -regcomp (preg, pattern, cflags) - regex_t *preg; - const char *pattern; - int cflags; -{ - reg_errcode_t ret; - reg_syntax_t syntax - = (cflags & REG_EXTENDED) ? - RE_SYNTAX_POSIX_EXTENDED : RE_SYNTAX_POSIX_BASIC; - - /* regex_compile will allocate the space for the compiled pattern. */ - preg->buffer = 0; - preg->allocated = 0; - preg->used = 0; - - /* Try to allocate space for the fastmap. */ - preg->fastmap = (char *) malloc (1 << BYTEWIDTH); - - if (cflags & REG_ICASE) - { - unsigned i; - - preg->translate - = (RE_TRANSLATE_TYPE) malloc (CHAR_SET_SIZE - * sizeof (*(RE_TRANSLATE_TYPE)0)); - if (preg->translate == NULL) - return (int) REG_ESPACE; - - /* Map uppercase characters to corresponding lowercase ones. */ - for (i = 0; i < CHAR_SET_SIZE; i++) - preg->translate[i] = ISUPPER (i) ? TOLOWER (i) : i; - } - else - preg->translate = NULL; - - /* If REG_NEWLINE is set, newlines are treated differently. */ - if (cflags & REG_NEWLINE) - { /* REG_NEWLINE implies neither . nor [^...] match newline. */ - syntax &= ~RE_DOT_NEWLINE; - syntax |= RE_HAT_LISTS_NOT_NEWLINE; - /* It also changes the matching behavior. */ - preg->newline_anchor = 1; - } - else - preg->newline_anchor = 0; - - preg->no_sub = !!(cflags & REG_NOSUB); - - /* POSIX says a null character in the pattern terminates it, so we - can use strlen here in compiling the pattern. */ -# ifdef MBS_SUPPORT - if (MB_CUR_MAX != 1) - ret = wcs_regex_compile (pattern, strlen (pattern), syntax, preg); - else -# endif - ret = byte_regex_compile (pattern, strlen (pattern), syntax, preg); - - /* POSIX doesn't distinguish between an unmatched open-group and an - unmatched close-group: both are REG_EPAREN. */ - if (ret == REG_ERPAREN) ret = REG_EPAREN; - - if (ret == REG_NOERROR && preg->fastmap) - { - /* Compute the fastmap now, since regexec cannot modify the pattern - buffer. */ - if (re_compile_fastmap (preg) == -2) - { - /* Some error occurred while computing the fastmap, just forget - about it. */ - free (preg->fastmap); - preg->fastmap = NULL; - } - } - - return (int) ret; -} -#ifdef _LIBC -weak_alias (__regcomp, regcomp) -#endif - - -/* regexec searches for a given pattern, specified by PREG, in the - string STRING. - - If NMATCH is zero or REG_NOSUB was set in the cflags argument to - `regcomp', we ignore PMATCH. Otherwise, we assume PMATCH has at - least NMATCH elements, and we set them to the offsets of the - corresponding matched substrings. - - EFLAGS specifies `execution flags' which affect matching: if - REG_NOTBOL is set, then ^ does not match at the beginning of the - string; if REG_NOTEOL is set, then $ does not match at the end. - - We return 0 if we find a match and REG_NOMATCH if not. */ - -int -regexec (preg, string, nmatch, pmatch, eflags) - const regex_t *preg; - const char *string; - size_t nmatch; - regmatch_t pmatch[]; - int eflags; -{ - int ret; - struct re_registers regs; - regex_t private_preg; - int len = strlen (string); - boolean want_reg_info = !preg->no_sub && nmatch > 0; - - private_preg = *preg; - - private_preg.not_bol = !!(eflags & REG_NOTBOL); - private_preg.not_eol = !!(eflags & REG_NOTEOL); - - /* The user has told us exactly how many registers to return - information about, via `nmatch'. We have to pass that on to the - matching routines. */ - private_preg.regs_allocated = REGS_FIXED; - - if (want_reg_info) - { - regs.num_regs = nmatch; - regs.start = TALLOC (nmatch * 2, regoff_t); - if (regs.start == NULL) - return (int) REG_NOMATCH; - regs.end = regs.start + nmatch; - } - - /* Perform the searching operation. */ - ret = re_search (&private_preg, string, len, - /* start: */ 0, /* range: */ len, - want_reg_info ? ®s : (struct re_registers *) 0); - - /* Copy the register information to the POSIX structure. */ - if (want_reg_info) - { - if (ret >= 0) - { - unsigned r; - - for (r = 0; r < nmatch; r++) - { - pmatch[r].rm_so = regs.start[r]; - pmatch[r].rm_eo = regs.end[r]; - } - } - - /* If we needed the temporary register info, free the space now. */ - free (regs.start); - } - - /* We want zero return to mean success, unlike `re_search'. */ - return ret >= 0 ? (int) REG_NOERROR : (int) REG_NOMATCH; -} -#ifdef _LIBC -weak_alias (__regexec, regexec) -#endif - - -/* Returns a message corresponding to an error code, ERRCODE, returned - from either regcomp or regexec. We don't use PREG here. */ - -size_t -regerror (errcode, preg, errbuf, errbuf_size) - int errcode; - const regex_t *preg; - char *errbuf; - size_t errbuf_size; -{ - const char *msg; - size_t msg_size; - - if (errcode < 0 - || errcode >= (int) (sizeof (re_error_msgid_idx) - / sizeof (re_error_msgid_idx[0]))) - /* Only error codes returned by the rest of the code should be passed - to this routine. If we are given anything else, or if other regex - code generates an invalid error code, then the program has a bug. - Dump core so we can fix it. */ - abort (); - - msg = gettext (re_error_msgid + re_error_msgid_idx[errcode]); - - msg_size = strlen (msg) + 1; /* Includes the null. */ - - if (errbuf_size != 0) - { - if (msg_size > errbuf_size) - { -#if defined HAVE_MEMPCPY || defined _LIBC - *((char *) __mempcpy (errbuf, msg, errbuf_size - 1)) = '\0'; -#else - memcpy (errbuf, msg, errbuf_size - 1); - errbuf[errbuf_size - 1] = 0; -#endif - } - else - memcpy (errbuf, msg, msg_size); - } - - return msg_size; -} -#ifdef _LIBC -weak_alias (__regerror, regerror) -#endif - - -/* Free dynamically allocated space used by PREG. */ - -void -regfree (preg) - regex_t *preg; -{ - if (preg->buffer != NULL) - free (preg->buffer); - preg->buffer = NULL; - - preg->allocated = 0; - preg->used = 0; - - if (preg->fastmap != NULL) - free (preg->fastmap); - preg->fastmap = NULL; - preg->fastmap_accurate = 0; - - if (preg->translate != NULL) - free (preg->translate); - preg->translate = NULL; -} -#ifdef _LIBC -weak_alias (__regfree, regfree) -#endif - -#endif /* not emacs */ - -#endif /* not INSIDE_RECURSION */ - - -#undef STORE_NUMBER -#undef STORE_NUMBER_AND_INCR -#undef EXTRACT_NUMBER -#undef EXTRACT_NUMBER_AND_INCR - -#undef DEBUG_PRINT_COMPILED_PATTERN -#undef DEBUG_PRINT_DOUBLE_STRING - -#undef INIT_FAIL_STACK -#undef RESET_FAIL_STACK -#undef DOUBLE_FAIL_STACK -#undef PUSH_PATTERN_OP -#undef PUSH_FAILURE_POINTER -#undef PUSH_FAILURE_INT -#undef PUSH_FAILURE_ELT -#undef POP_FAILURE_POINTER -#undef POP_FAILURE_INT -#undef POP_FAILURE_ELT -#undef DEBUG_PUSH -#undef DEBUG_POP -#undef PUSH_FAILURE_POINT -#undef POP_FAILURE_POINT - -#undef REG_UNSET_VALUE -#undef REG_UNSET - -#undef PATFETCH -#undef PATFETCH_RAW -#undef PATUNFETCH -#undef TRANSLATE - -#undef INIT_BUF_SIZE -#undef GET_BUFFER_SPACE -#undef BUF_PUSH -#undef BUF_PUSH_2 -#undef BUF_PUSH_3 -#undef STORE_JUMP -#undef STORE_JUMP2 -#undef INSERT_JUMP -#undef INSERT_JUMP2 -#undef EXTEND_BUFFER -#undef GET_UNSIGNED_NUMBER -#undef FREE_STACK_RETURN - -# undef POINTER_TO_OFFSET -# undef MATCHING_IN_FRST_STRING -# undef PREFETCH -# undef AT_STRINGS_BEG -# undef AT_STRINGS_END -# undef WORDCHAR_P -# undef FREE_VAR -# undef FREE_VARIABLES -# undef NO_HIGHEST_ACTIVE_REG -# undef NO_LOWEST_ACTIVE_REG - -# undef CHAR_T -# undef UCHAR_T -# undef COMPILED_BUFFER_VAR -# undef OFFSET_ADDRESS_SIZE -# undef CHAR_CLASS_SIZE -# undef PREFIX -# undef ARG_PREFIX -# undef PUT_CHAR -# undef BYTE -# undef WCHAR - -# define DEFINED_ONCE diff --git a/src/bin/diffutils/lib/regex.hin b/src/bin/diffutils/lib/regex.hin deleted file mode 100644 index 81789be897..0000000000 --- a/src/bin/diffutils/lib/regex.hin +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef _REGEX_H -#include - -/* Document internal interfaces. */ -extern reg_syntax_t __re_set_syntax _RE_ARGS ((reg_syntax_t syntax)); - -extern const char *__re_compile_pattern - _RE_ARGS ((const char *pattern, size_t length, - struct re_pattern_buffer *buffer)); - -extern int __re_compile_fastmap _RE_ARGS ((struct re_pattern_buffer *buffer)); - -extern int __re_search - _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string, - int length, int start, int range, struct re_registers *regs)); - -extern int __re_search_2 - _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1, - int length1, const char *string2, int length2, - int start, int range, struct re_registers *regs, int stop)); - -extern int __re_match - _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string, - int length, int start, struct re_registers *regs)); - -extern int __re_match_2 - _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1, - int length1, const char *string2, int length2, - int start, struct re_registers *regs, int stop)); - -extern void __re_set_registers - _RE_ARGS ((struct re_pattern_buffer *buffer, struct re_registers *regs, - unsigned num_regs, regoff_t *starts, regoff_t *ends)); - -extern int __regcomp _RE_ARGS ((regex_t *__preg, const char *__pattern, - int __cflags)); - -extern int __regexec _RE_ARGS ((const regex_t *__preg, - const char *__string, size_t __nmatch, - regmatch_t __pmatch[], int __eflags)); - -extern size_t __regerror _RE_ARGS ((int __errcode, const regex_t *__preg, - char *__errbuf, size_t __errbuf_size)); - -extern void __regfree _RE_ARGS ((regex_t *__preg)); -#endif diff --git a/src/bin/diffutils/lib/setmode.c b/src/bin/diffutils/lib/setmode.c deleted file mode 100644 index dbcf44e8f3..0000000000 --- a/src/bin/diffutils/lib/setmode.c +++ /dev/null @@ -1,62 +0,0 @@ -/* Set a file descriptor's mode to binary or to text. - - Copyright (C) 2001 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by Paul Eggert */ - -#if HAVE_CONFIG_H -# include -#endif - -#if HAVE_STDBOOL_H -# include -#else -typedef enum {false = 0, true = 1} bool; -#endif - -#if HAVE_SETMODE_DOS -# include -# if HAVE_FCNTL_H -# include -# endif -# if HAVE_UNISTD_H -# include -# endif -#endif - -#include "setmode.h" -#undef set_binary_mode - - -/* Set the binary mode of FD to MODE, returning its previous mode. - MODE is 1 for binary and 0 for text. If setting the mode might - cause problems, ignore the request and return MODE. Always return - 1 on POSIX platforms, which do not distinguish between text and - binary. */ - -bool -set_binary_mode (int fd, bool mode) -{ -#if HAVE_SETMODE_DOS - if (isatty (fd)) - return mode; - return setmode (fd, mode ? O_BINARY : O_TEXT) != O_TEXT; -#else - return 1; -#endif -} diff --git a/src/bin/diffutils/lib/setmode.h b/src/bin/diffutils/lib/setmode.h deleted file mode 100644 index a5bb959f5d..0000000000 --- a/src/bin/diffutils/lib/setmode.h +++ /dev/null @@ -1,27 +0,0 @@ -/* Set a file descriptor's mode to binary or to text. - - Copyright (C) 2001 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by Paul Eggert */ - -#ifndef set_binary_mode -bool set_binary_mode (int, bool); -# if ! HAVE_SETMODE_DOS -# define set_binary_mode(fd, mode) 1 -# endif -#endif diff --git a/src/bin/diffutils/lib/strcasecmp.c b/src/bin/diffutils/lib/strcasecmp.c deleted file mode 100644 index ae7601de0f..0000000000 --- a/src/bin/diffutils/lib/strcasecmp.c +++ /dev/null @@ -1,66 +0,0 @@ -/* strcasecmp.c -- case insensitive string comparator - Copyright (C) 1998, 1999 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#if HAVE_CONFIG_H -# include -#endif - -#ifdef LENGTH_LIMIT -# define STRXCASECMP_FUNCTION strncasecmp -# define STRXCASECMP_DECLARE_N , size_t n -# define LENGTH_LIMIT_EXPR(Expr) Expr -#else -# define STRXCASECMP_FUNCTION strcasecmp -# define STRXCASECMP_DECLARE_N /* empty */ -# define LENGTH_LIMIT_EXPR(Expr) 0 -#endif - -#include -#include - -#define TOLOWER(Ch) (isupper (Ch) ? tolower (Ch) : (Ch)) - -/* Compare {{no more than N characters of }}strings S1 and S2, - ignoring case, returning less than, equal to or - greater than zero if S1 is lexicographically less - than, equal to or greater than S2. */ - -int -STRXCASECMP_FUNCTION (const char *s1, const char *s2 STRXCASECMP_DECLARE_N) -{ - register const unsigned char *p1 = (const unsigned char *) s1; - register const unsigned char *p2 = (const unsigned char *) s2; - unsigned char c1, c2; - - if (p1 == p2 || LENGTH_LIMIT_EXPR (n == 0)) - return 0; - - do - { - c1 = TOLOWER (*p1); - c2 = TOLOWER (*p2); - - if (LENGTH_LIMIT_EXPR (--n == 0) || c1 == '\0') - break; - - ++p1; - ++p2; - } - while (c1 == c2); - - return c1 - c2; -} diff --git a/src/bin/diffutils/lib/strftime.c b/src/bin/diffutils/lib/strftime.c deleted file mode 100644 index cc3a2d5686..0000000000 --- a/src/bin/diffutils/lib/strftime.c +++ /dev/null @@ -1,1406 +0,0 @@ -/* Copyright (C) 1991-1999, 2000, 2001 Free Software Foundation, Inc. - - NOTE: The canonical source of this file is maintained with the GNU C Library. - Bugs can be reported to bug-glibc@prep.ai.mit.edu. - - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, - USA. */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#ifdef _LIBC -# define HAVE_LIMITS_H 1 -# define HAVE_MBLEN 1 -# define HAVE_MBRLEN 1 -# define HAVE_STRUCT_ERA_ENTRY 1 -# define HAVE_TM_GMTOFF 1 -# define HAVE_TM_ZONE 1 -# define HAVE_TZNAME 1 -# define HAVE_TZSET 1 -# define MULTIBYTE_IS_FORMAT_SAFE 1 -# define STDC_HEADERS 1 -# include "../locale/localeinfo.h" -#endif - -#if defined emacs && !defined HAVE_BCOPY -# define HAVE_MEMCPY 1 -#endif - -#include -#include /* Some systems define `time_t' here. */ - -#ifdef TIME_WITH_SYS_TIME -# include -# include -#else -# ifdef HAVE_SYS_TIME_H -# include -# else -# include -# endif -#endif -#if HAVE_TZNAME -extern char *tzname[]; -#endif - -/* Do multibyte processing if multibytes are supported, unless - multibyte sequences are safe in formats. Multibyte sequences are - safe if they cannot contain byte sequences that look like format - conversion specifications. The GNU C Library uses UTF8 multibyte - encoding, which is safe for formats, but strftime.c can be used - with other C libraries that use unsafe encodings. */ -#define DO_MULTIBYTE (HAVE_MBLEN && ! MULTIBYTE_IS_FORMAT_SAFE) - -#if DO_MULTIBYTE -# if HAVE_MBRLEN -# include -# else - /* Simulate mbrlen with mblen as best we can. */ -# define mbstate_t int -# define mbrlen(s, n, ps) mblen (s, n) -# define mbsinit(ps) (*(ps) == 0) -# endif - static const mbstate_t mbstate_zero; -#endif - -#if HAVE_LIMITS_H -# include -#endif - -#if STDC_HEADERS -# include -# include -# include -#else -# ifndef HAVE_MEMCPY -# define memcpy(d, s, n) bcopy ((s), (d), (n)) -# endif -#endif - -#ifdef COMPILE_WIDE -# include -# define CHAR_T wchar_t -# define UCHAR_T unsigned int -# define L_(Str) L##Str -# define NLW(Sym) _NL_W##Sym - -# define MEMCPY(d, s, n) __wmemcpy (d, s, n) -# define STRLEN(s) __wcslen (s) - -#else -# define CHAR_T char -# define UCHAR_T unsigned char -# define L_(Str) Str -# define NLW(Sym) Sym - -# if !defined STDC_HEADERS && !defined HAVE_MEMCPY -# define MEMCPY(d, s, n) bcopy ((s), (d), (n)) -# else -# define MEMCPY(d, s, n) memcpy ((d), (s), (n)) -# endif -# define STRLEN(s) strlen (s) - -# ifdef _LIBC -# define MEMPCPY(d, s, n) __mempcpy (d, s, n) -# else -# ifndef HAVE_MEMPCPY -# define MEMPCPY(d, s, n) ((void *) ((char *) memcpy (d, s, n) + (n))) -# endif -# endif -#endif - -#ifndef __P -# if defined __GNUC__ || (defined __STDC__ && __STDC__) -# define __P(args) args -# else -# define __P(args) () -# endif /* GCC. */ -#endif /* Not __P. */ - -#ifndef PTR -# ifdef __STDC__ -# define PTR void * -# else -# define PTR char * -# endif -#endif - -#ifndef CHAR_BIT -# define CHAR_BIT 8 -#endif - -#ifndef NULL -# define NULL 0 -#endif - -#define TYPE_SIGNED(t) ((t) -1 < 0) - -/* Bound on length of the string representing an integer value of type t. - Subtract one for the sign bit if t is signed; - 302 / 1000 is log10 (2) rounded up; - add one for integer division truncation; - add one more for a minus sign if t is signed. */ -#define INT_STRLEN_BOUND(t) \ - ((sizeof (t) * CHAR_BIT - TYPE_SIGNED (t)) * 302 / 1000 + 1 + TYPE_SIGNED (t)) - -#define TM_YEAR_BASE 1900 - -#ifndef __isleap -/* Nonzero if YEAR is a leap year (every 4 years, - except every 100th isn't, and every 400th is). */ -# define __isleap(year) \ - ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0)) -#endif - - -#ifdef _LIBC -# define my_strftime_gmtime_r __gmtime_r -# define my_strftime_localtime_r __localtime_r -# define tzname __tzname -# define tzset __tzset -#else - -/* If we're a strftime substitute in a GNU program, then prefer gmtime - to gmtime_r, since many gmtime_r implementations are buggy. - Similarly for localtime_r. */ - -# if ! HAVE_TM_GMTOFF -static struct tm *my_strftime_gmtime_r __P ((const time_t *, struct tm *)); -static struct tm * -my_strftime_gmtime_r (t, tp) - const time_t *t; - struct tm *tp; -{ - struct tm *l = gmtime (t); - if (! l) - return 0; - *tp = *l; - return tp; -} - -static struct tm *my_strftime_localtime_r __P ((const time_t *, struct tm *)); -static struct tm * -my_strftime_localtime_r (t, tp) - const time_t *t; - struct tm *tp; -{ - struct tm *l = localtime (t); - if (! l) - return 0; - *tp = *l; - return tp; -} -# endif /* ! HAVE_TM_GMTOFF */ -#endif /* ! defined _LIBC */ - - -#if !defined memset && !defined HAVE_MEMSET && !defined _LIBC -/* Some systems lack the `memset' function and we don't want to - introduce additional dependencies. */ -/* The SGI compiler reportedly barfs on the trailing null - if we use a string constant as the initializer. 28 June 1997, rms. */ -static const CHAR_T spaces[16] = /* " " */ -{ - L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' '), - L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' ') -}; -static const CHAR_T zeroes[16] = /* "0000000000000000" */ -{ - L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0'), - L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0') -}; - -# define memset_space(P, Len) \ - do { \ - int _len = (Len); \ - \ - do \ - { \ - int _this = _len > 16 ? 16 : _len; \ - (P) = MEMPCPY ((P), spaces, _this * sizeof (CHAR_T)); \ - _len -= _this; \ - } \ - while (_len > 0); \ - } while (0) - -# define memset_zero(P, Len) \ - do { \ - int _len = (Len); \ - \ - do \ - { \ - int _this = _len > 16 ? 16 : _len; \ - (P) = MEMPCPY ((P), zeroes, _this * sizeof (CHAR_T)); \ - _len -= _this; \ - } \ - while (_len > 0); \ - } while (0) -#else -# ifdef COMPILE_WIDE -# define memset_space(P, Len) (wmemset ((P), L' ', (Len)), (P) += (Len)) -# define memset_zero(P, Len) (wmemset ((P), L'0', (Len)), (P) += (Len)) -# else -# define memset_space(P, Len) (memset ((P), ' ', (Len)), (P) += (Len)) -# define memset_zero(P, Len) (memset ((P), '0', (Len)), (P) += (Len)) -# endif -#endif - -#define add(n, f) \ - do \ - { \ - int _n = (n); \ - int _delta = width - _n; \ - int _incr = _n + (_delta > 0 ? _delta : 0); \ - if (i + _incr >= maxsize) \ - return 0; \ - if (p) \ - { \ - if (_delta > 0) \ - { \ - if (pad == L_('0')) \ - memset_zero (p, _delta); \ - else \ - memset_space (p, _delta); \ - } \ - f; \ - p += _n; \ - } \ - i += _incr; \ - } while (0) - -#define cpy(n, s) \ - add ((n), \ - if (to_lowcase) \ - memcpy_lowcase (p, (s), _n); \ - else if (to_uppcase) \ - memcpy_uppcase (p, (s), _n); \ - else \ - MEMCPY ((PTR) p, (const PTR) (s), _n)) - -#ifdef COMPILE_WIDE -# define widen(os, ws, l) \ - { \ - mbstate_t __st; \ - const char *__s = os; \ - memset (&__st, '\0', sizeof (__st)); \ - l = __mbsrtowcs (NULL, &__s, 0, &__st); \ - ws = alloca ((l + 1) * sizeof (wchar_t)); \ - (void) __mbsrtowcs (ws, &__s, l, &__st); \ - } -#endif - - -#ifdef COMPILE_WIDE -# define TOUPPER(Ch) towupper (Ch) -# define TOLOWER(Ch) towlower (Ch) -#else -# ifdef _LIBC -# define TOUPPER(Ch) toupper (Ch) -# define TOLOWER(Ch) tolower (Ch) -# else -# define TOUPPER(Ch) (islower (Ch) ? toupper (Ch) : (Ch)) -# define TOLOWER(Ch) (isupper (Ch) ? tolower (Ch) : (Ch)) -# endif -#endif -/* We don't use `isdigit' here since the locale dependent - interpretation is not what we want here. We only need to accept - the arabic digits in the ASCII range. One day there is perhaps a - more reliable way to accept other sets of digits. */ -#define ISDIGIT(Ch) ((unsigned int) (Ch) - L_('0') <= 9) - -static CHAR_T *memcpy_lowcase __P ((CHAR_T *dest, const CHAR_T *src, - size_t len)); - -static CHAR_T * -memcpy_lowcase (dest, src, len) - CHAR_T *dest; - const CHAR_T *src; - size_t len; -{ - while (len-- > 0) - dest[len] = TOLOWER ((UCHAR_T) src[len]); - return dest; -} - -static CHAR_T *memcpy_uppcase __P ((CHAR_T *dest, const CHAR_T *src, - size_t len)); - -static CHAR_T * -memcpy_uppcase (dest, src, len) - CHAR_T *dest; - const CHAR_T *src; - size_t len; -{ - while (len-- > 0) - dest[len] = TOUPPER ((UCHAR_T) src[len]); - return dest; -} - - -#if ! HAVE_TM_GMTOFF -/* Yield the difference between *A and *B, - measured in seconds, ignoring leap seconds. */ -# define tm_diff ftime_tm_diff -static int tm_diff __P ((const struct tm *, const struct tm *)); -static int -tm_diff (a, b) - const struct tm *a; - const struct tm *b; -{ - /* Compute intervening leap days correctly even if year is negative. - Take care to avoid int overflow in leap day calculations, - but it's OK to assume that A and B are close to each other. */ - int a4 = (a->tm_year >> 2) + (TM_YEAR_BASE >> 2) - ! (a->tm_year & 3); - int b4 = (b->tm_year >> 2) + (TM_YEAR_BASE >> 2) - ! (b->tm_year & 3); - int a100 = a4 / 25 - (a4 % 25 < 0); - int b100 = b4 / 25 - (b4 % 25 < 0); - int a400 = a100 >> 2; - int b400 = b100 >> 2; - int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400); - int years = a->tm_year - b->tm_year; - int days = (365 * years + intervening_leap_days - + (a->tm_yday - b->tm_yday)); - return (60 * (60 * (24 * days + (a->tm_hour - b->tm_hour)) - + (a->tm_min - b->tm_min)) - + (a->tm_sec - b->tm_sec)); -} -#endif /* ! HAVE_TM_GMTOFF */ - - - -/* The number of days from the first day of the first ISO week of this - year to the year day YDAY with week day WDAY. ISO weeks start on - Monday; the first ISO week has the year's first Thursday. YDAY may - be as small as YDAY_MINIMUM. */ -#define ISO_WEEK_START_WDAY 1 /* Monday */ -#define ISO_WEEK1_WDAY 4 /* Thursday */ -#define YDAY_MINIMUM (-366) -static int iso_week_days __P ((int, int)); -#ifdef __GNUC__ -__inline__ -#endif -static int -iso_week_days (yday, wday) - int yday; - int wday; -{ - /* Add enough to the first operand of % to make it nonnegative. */ - int big_enough_multiple_of_7 = (-YDAY_MINIMUM / 7 + 2) * 7; - return (yday - - (yday - wday + ISO_WEEK1_WDAY + big_enough_multiple_of_7) % 7 - + ISO_WEEK1_WDAY - ISO_WEEK_START_WDAY); -} - - -#if !(defined _NL_CURRENT || HAVE_STRFTIME) -static CHAR_T const weekday_name[][10] = - { - L_("Sunday"), L_("Monday"), L_("Tuesday"), L_("Wednesday"), - L_("Thursday"), L_("Friday"), L_("Saturday") - }; -static CHAR_T const month_name[][10] = - { - L_("January"), L_("February"), L_("March"), L_("April"), L_("May"), - L_("June"), L_("July"), L_("August"), L_("September"), L_("October"), - L_("November"), L_("December") - }; -#endif - - -/* When compiling this file, GNU applications can #define my_strftime - to a symbol (typically nstrftime) to get an extended strftime with - extra arguments UT and NS. Emacs is a special case for now, but - this Emacs-specific code can be removed once Emacs's config.h - defines my_strftime. */ -#if defined emacs && !defined my_strftime -# define my_strftime nstrftime -#endif - -#ifdef my_strftime -# define extra_args , ut, ns -# define extra_args_spec int ut; int ns; -# define extra_args_spec_iso , int ut, int ns -#else -# ifdef COMPILE_WIDE -# define my_strftime wcsftime -# else -# define my_strftime strftime -# endif -# define extra_args -# define extra_args_spec -# define extra_args_spec_iso -/* We don't have this information in general. */ -# define ut 0 -# define ns 0 -#endif - -#if !defined _LIBC && HAVE_TZNAME && HAVE_TZSET - /* Solaris 2.5 tzset sometimes modifies the storage returned by localtime. - Work around this bug by copying *tp before it might be munged. */ - size_t _strftime_copytm __P ((char *, size_t, const char *, - const struct tm * extra_args_spec_iso)); - size_t - my_strftime (s, maxsize, format, tp extra_args) - CHAR_T *s; - size_t maxsize; - const CHAR_T *format; - const struct tm *tp; - extra_args_spec - { - struct tm tmcopy; - tmcopy = *tp; - return _strftime_copytm (s, maxsize, format, &tmcopy extra_args); - } -# undef my_strftime -# define my_strftime _strftime_copytm -#endif - - -/* Write information from TP into S according to the format - string FORMAT, writing no more that MAXSIZE characters - (including the terminating '\0') and returning number of - characters written. If S is NULL, nothing will be written - anywhere, so to determine how many characters would be - written, use NULL for S and (size_t) UINT_MAX for MAXSIZE. */ -size_t -my_strftime (s, maxsize, format, tp extra_args) - CHAR_T *s; - size_t maxsize; - const CHAR_T *format; - const struct tm *tp; - extra_args_spec -{ - int hour12 = tp->tm_hour; -#ifdef _NL_CURRENT - /* We cannot make the following values variables since we must delay - the evaluation of these values until really needed since some - expressions might not be valid in every situation. The `struct tm' - might be generated by a strptime() call that initialized - only a few elements. Dereference the pointers only if the format - requires this. Then it is ok to fail if the pointers are invalid. */ -# define a_wkday \ - ((const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(ABDAY_1) + tp->tm_wday)) -# define f_wkday \ - ((const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(DAY_1) + tp->tm_wday)) -# define a_month \ - ((const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(ABMON_1) + tp->tm_mon)) -# define f_month \ - ((const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(MON_1) + tp->tm_mon)) -# define ampm \ - ((const CHAR_T *) _NL_CURRENT (LC_TIME, tp->tm_hour > 11 \ - ? NLW(PM_STR) : NLW(AM_STR))) - -# define aw_len STRLEN (a_wkday) -# define am_len STRLEN (a_month) -# define ap_len STRLEN (ampm) -#else -# if !HAVE_STRFTIME -# define f_wkday (weekday_name[tp->tm_wday]) -# define f_month (month_name[tp->tm_mon]) -# define a_wkday f_wkday -# define a_month f_month -# define ampm (L_("AMPM") + 2 * (tp->tm_hour > 11)) - - size_t aw_len = 3; - size_t am_len = 3; - size_t ap_len = 2; -# endif -#endif - const char *zone; - size_t i = 0; - CHAR_T *p = s; - const CHAR_T *f; -#if DO_MULTIBYTE && !defined COMPILE_WIDE - const char *format_end = NULL; -#endif - - zone = NULL; -#if HAVE_TM_ZONE - /* The POSIX test suite assumes that setting - the environment variable TZ to a new value before calling strftime() - will influence the result (the %Z format) even if the information in - TP is computed with a totally different time zone. - This is bogus: though POSIX allows bad behavior like this, - POSIX does not require it. Do the right thing instead. */ - zone = (const char *) tp->tm_zone; -#endif -#if HAVE_TZNAME - if (ut) - { - if (! (zone && *zone)) - zone = "GMT"; - } - else - { - /* POSIX.1 8.1.1 requires that whenever strftime() is called, the - time zone names contained in the external variable `tzname' shall - be set as if the tzset() function had been called. */ -# if HAVE_TZSET - tzset (); -# endif - } -#endif - - if (hour12 > 12) - hour12 -= 12; - else - if (hour12 == 0) - hour12 = 12; - - for (f = format; *f != '\0'; ++f) - { - int pad = 0; /* Padding for number ('-', '_', or 0). */ - int modifier; /* Field modifier ('E', 'O', or 0). */ - int digits; /* Max digits for numeric format. */ - int number_value; /* Numeric value to be printed. */ - int negative_number; /* 1 if the number is negative. */ - const CHAR_T *subfmt; - CHAR_T *bufp; - CHAR_T buf[1 + (sizeof (int) < sizeof (time_t) - ? INT_STRLEN_BOUND (time_t) - : INT_STRLEN_BOUND (int))]; - int width = -1; - int to_lowcase = 0; - int to_uppcase = 0; - int change_case = 0; - int format_char; - -#if DO_MULTIBYTE && !defined COMPILE_WIDE - switch (*f) - { - case L_('%'): - break; - - case L_('\b'): case L_('\t'): case L_('\n'): - case L_('\v'): case L_('\f'): case L_('\r'): - case L_(' '): case L_('!'): case L_('"'): case L_('#'): case L_('&'): - case L_('\''): case L_('('): case L_(')'): case L_('*'): case L_('+'): - case L_(','): case L_('-'): case L_('.'): case L_('/'): case L_('0'): - case L_('1'): case L_('2'): case L_('3'): case L_('4'): case L_('5'): - case L_('6'): case L_('7'): case L_('8'): case L_('9'): case L_(':'): - case L_(';'): case L_('<'): case L_('='): case L_('>'): case L_('?'): - case L_('A'): case L_('B'): case L_('C'): case L_('D'): case L_('E'): - case L_('F'): case L_('G'): case L_('H'): case L_('I'): case L_('J'): - case L_('K'): case L_('L'): case L_('M'): case L_('N'): case L_('O'): - case L_('P'): case L_('Q'): case L_('R'): case L_('S'): case L_('T'): - case L_('U'): case L_('V'): case L_('W'): case L_('X'): case L_('Y'): - case L_('Z'): case L_('['): case L_('\\'): case L_(']'): case L_('^'): - case L_('_'): case L_('a'): case L_('b'): case L_('c'): case L_('d'): - case L_('e'): case L_('f'): case L_('g'): case L_('h'): case L_('i'): - case L_('j'): case L_('k'): case L_('l'): case L_('m'): case L_('n'): - case L_('o'): case L_('p'): case L_('q'): case L_('r'): case L_('s'): - case L_('t'): case L_('u'): case L_('v'): case L_('w'): case L_('x'): - case L_('y'): case L_('z'): case L_('{'): case L_('|'): case L_('}'): - case L_('~'): - /* The C Standard requires these 98 characters (plus '%') to - be in the basic execution character set. None of these - characters can start a multibyte sequence, so they need - not be analyzed further. */ - add (1, *p = *f); - continue; - - default: - /* Copy this multibyte sequence until we reach its end, find - an error, or come back to the initial shift state. */ - { - mbstate_t mbstate = mbstate_zero; - size_t len = 0; - size_t fsize; - - if (! format_end) - format_end = f + strlen (f) + 1; - fsize = format_end - f; - - do - { - size_t bytes = mbrlen (f + len, fsize - len, &mbstate); - - if (bytes == 0) - break; - - if (bytes == (size_t) -2) - { - len += strlen (f + len); - break; - } - - if (bytes == (size_t) -1) - { - len++; - break; - } - - len += bytes; - } - while (! mbsinit (&mbstate)); - - cpy (len, f); - f += len - 1; - continue; - } - } - -#else /* ! DO_MULTIBYTE */ - - /* Either multibyte encodings are not supported, they are - safe for formats, so any non-'%' byte can be copied through, - or this is the wide character version. */ - if (*f != L_('%')) - { - add (1, *p = *f); - continue; - } - -#endif /* ! DO_MULTIBYTE */ - - /* Check for flags that can modify a format. */ - while (1) - { - switch (*++f) - { - /* This influences the number formats. */ - case L_('_'): - case L_('-'): - case L_('0'): - pad = *f; - continue; - - /* This changes textual output. */ - case L_('^'): - to_uppcase = 1; - continue; - case L_('#'): - change_case = 1; - continue; - - default: - break; - } - break; - } - - /* As a GNU extension we allow to specify the field width. */ - if (ISDIGIT (*f)) - { - width = 0; - do - { - width *= 10; - width += *f - L_('0'); - ++f; - } - while (ISDIGIT (*f)); - } - - /* Check for modifiers. */ - switch (*f) - { - case L_('E'): - case L_('O'): - modifier = *f++; - break; - - default: - modifier = 0; - break; - } - - /* Now do the specified format. */ - format_char = *f; - switch (format_char) - { -#define DO_NUMBER(d, v) \ - digits = width == -1 ? d : width; \ - number_value = v; goto do_number -#define DO_NUMBER_SPACEPAD(d, v) \ - digits = width == -1 ? d : width; \ - number_value = v; goto do_number_spacepad - - case L_('%'): - if (modifier != 0) - goto bad_format; - add (1, *p = *f); - break; - - case L_('a'): - if (modifier != 0) - goto bad_format; - if (change_case) - { - to_uppcase = 1; - to_lowcase = 0; - } -#if defined _NL_CURRENT || !HAVE_STRFTIME - cpy (aw_len, a_wkday); - break; -#else - goto underlying_strftime; -#endif - - case 'A': - if (modifier != 0) - goto bad_format; - if (change_case) - { - to_uppcase = 1; - to_lowcase = 0; - } -#if defined _NL_CURRENT || !HAVE_STRFTIME - cpy (STRLEN (f_wkday), f_wkday); - break; -#else - goto underlying_strftime; -#endif - - case L_('b'): - case L_('h'): /* POSIX.2 extension. */ - if (change_case) - { - to_uppcase = 1; - to_lowcase = 0; - } - if (modifier != 0) - goto bad_format; -#if defined _NL_CURRENT || !HAVE_STRFTIME - cpy (am_len, a_month); - break; -#else - goto underlying_strftime; -#endif - - case L_('B'): - if (modifier != 0) - goto bad_format; - if (change_case) - { - to_uppcase = 1; - to_lowcase = 0; - } -#if defined _NL_CURRENT || !HAVE_STRFTIME - cpy (STRLEN (f_month), f_month); - break; -#else - goto underlying_strftime; -#endif - - case L_('c'): - if (modifier == L_('O')) - goto bad_format; -#ifdef _NL_CURRENT - if (! (modifier == 'E' - && (*(subfmt = - (const CHAR_T *) _NL_CURRENT (LC_TIME, - NLW(ERA_D_T_FMT))) - != '\0'))) - subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(D_T_FMT)); -#else -# if HAVE_STRFTIME - goto underlying_strftime; -# else - subfmt = L_("%a %b %e %H:%M:%S %Y"); -# endif -#endif - - subformat: - { - CHAR_T *old_start = p; - size_t len = my_strftime (NULL, (size_t) -1, subfmt, - tp extra_args); - add (len, my_strftime (p, maxsize - i, subfmt, - tp extra_args)); - - if (to_uppcase) - while (old_start < p) - { - *old_start = TOUPPER ((UCHAR_T) *old_start); - ++old_start; - } - } - break; - -#if HAVE_STRFTIME && ! (defined _NL_CURRENT && HAVE_STRUCT_ERA_ENTRY) - underlying_strftime: - { - /* The relevant information is available only via the - underlying strftime implementation, so use that. */ - char ufmt[4]; - char *u = ufmt; - char ubuf[1024]; /* enough for any single format in practice */ - size_t len; - /* Make sure we're calling the actual underlying strftime. - In some cases, config.h contains something like - "#define strftime rpl_strftime". */ -# ifdef strftime -# undef strftime - size_t strftime (); -# endif - - *u++ = '%'; - if (modifier != 0) - *u++ = modifier; - *u++ = format_char; - *u = '\0'; - len = strftime (ubuf, sizeof ubuf, ufmt, tp); - if (len == 0 && ubuf[0] != '\0') - return 0; - cpy (len, ubuf); - } - break; -#endif - - case L_('C'): /* POSIX.2 extension. */ - if (modifier == L_('O')) - goto bad_format; - if (modifier == L_('E')) - { -#if HAVE_STRUCT_ERA_ENTRY - struct era_entry *era = _nl_get_era_entry (tp); - if (era) - { -# ifdef COMPILE_WIDE - size_t len = __wcslen (era->era_wname); - cpy (len, era->era_wname); -# else - size_t len = strlen (era->era_name); - cpy (len, era->era_name); -# endif - break; - } -#else -# if HAVE_STRFTIME - goto underlying_strftime; -# endif -#endif - } - - { - int year = tp->tm_year + TM_YEAR_BASE; - DO_NUMBER (1, year / 100 - (year % 100 < 0)); - } - - case L_('x'): - if (modifier == L_('O')) - goto bad_format; -#ifdef _NL_CURRENT - if (! (modifier == L_('E') - && (*(subfmt = - (const CHAR_T *)_NL_CURRENT (LC_TIME, NLW(ERA_D_FMT))) - != L_('\0')))) - subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(D_FMT)); - goto subformat; -#else -# if HAVE_STRFTIME - goto underlying_strftime; -# else - /* Fall through. */ -# endif -#endif - case L_('D'): /* POSIX.2 extension. */ - if (modifier != 0) - goto bad_format; - subfmt = L_("%m/%d/%y"); - goto subformat; - - case L_('d'): - if (modifier == L_('E')) - goto bad_format; - - DO_NUMBER (2, tp->tm_mday); - - case L_('e'): /* POSIX.2 extension. */ - if (modifier == L_('E')) - goto bad_format; - - DO_NUMBER_SPACEPAD (2, tp->tm_mday); - - /* All numeric formats set DIGITS and NUMBER_VALUE and then - jump to one of these two labels. */ - - do_number_spacepad: - /* Force `_' flag unless overwritten by `0' flag. */ - if (pad != L_('0')) - pad = L_('_'); - - do_number: - /* Format the number according to the MODIFIER flag. */ - - if (modifier == L_('O') && 0 <= number_value) - { -#ifdef _NL_CURRENT - /* Get the locale specific alternate representation of - the number NUMBER_VALUE. If none exist NULL is returned. */ -# ifdef COMPILE_WIDE - const wchar_t *cp = _nl_get_walt_digit (number_value); -# else - const char *cp = _nl_get_alt_digit (number_value); -# endif - - if (cp != NULL) - { - size_t digitlen = STRLEN (cp); - if (digitlen != 0) - { - cpy (digitlen, cp); - break; - } - } -#else -# if HAVE_STRFTIME - goto underlying_strftime; -# endif -#endif - } - { - unsigned int u = number_value; - - bufp = buf + sizeof (buf) / sizeof (buf[0]); - negative_number = number_value < 0; - - if (negative_number) - u = -u; - - do - *--bufp = u % 10 + L_('0'); - while ((u /= 10) != 0); - } - - do_number_sign_and_padding: - if (negative_number) - *--bufp = L_('-'); - - if (pad != L_('-')) - { - int padding = digits - (buf + (sizeof (buf) / sizeof (buf[0])) - - bufp); - - if (pad == L_('_')) - { - while (0 < padding--) - *--bufp = L_(' '); - } - else - { - bufp += negative_number; - while (0 < padding--) - *--bufp = L_('0'); - if (negative_number) - *--bufp = L_('-'); - } - } - - cpy (buf + sizeof (buf) / sizeof (buf[0]) - bufp, bufp); - break; - - case L_('F'): - if (modifier != 0) - goto bad_format; - subfmt = L_("%Y-%m-%d"); - goto subformat; - - case L_('H'): - if (modifier == L_('E')) - goto bad_format; - - DO_NUMBER (2, tp->tm_hour); - - case L_('I'): - if (modifier == L_('E')) - goto bad_format; - - DO_NUMBER (2, hour12); - - case L_('k'): /* GNU extension. */ - if (modifier == L_('E')) - goto bad_format; - - DO_NUMBER_SPACEPAD (2, tp->tm_hour); - - case L_('l'): /* GNU extension. */ - if (modifier == L_('E')) - goto bad_format; - - DO_NUMBER_SPACEPAD (2, hour12); - - case L_('j'): - if (modifier == L_('E')) - goto bad_format; - - DO_NUMBER (3, 1 + tp->tm_yday); - - case L_('M'): - if (modifier == L_('E')) - goto bad_format; - - DO_NUMBER (2, tp->tm_min); - - case L_('m'): - if (modifier == L_('E')) - goto bad_format; - - DO_NUMBER (2, tp->tm_mon + 1); - - case L_('N'): /* GNU extension. */ - if (modifier == L_('E')) - goto bad_format; - - number_value = ns; - if (width != -1) - { - /* Take an explicit width less than 9 as a precision. */ - int j; - for (j = width; j < 9; j++) - number_value /= 10; - } - - DO_NUMBER (9, number_value); - - case L_('n'): /* POSIX.2 extension. */ - add (1, *p = L_('\n')); - break; - - case L_('P'): - to_lowcase = 1; -#if !defined _NL_CURRENT && HAVE_STRFTIME - format_char = L_('p'); -#endif - /* FALLTHROUGH */ - - case L_('p'): - if (change_case) - { - to_uppcase = 0; - to_lowcase = 1; - } -#if defined _NL_CURRENT || !HAVE_STRFTIME - cpy (ap_len, ampm); - break; -#else - goto underlying_strftime; -#endif - - case L_('R'): /* ISO C99 extension. */ - subfmt = L_("%H:%M"); - goto subformat; - - case L_('r'): /* POSIX.2 extension. */ -#ifdef _NL_CURRENT - if (*(subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME, - NLW(T_FMT_AMPM))) - == L_('\0')) -#endif - subfmt = L_("%I:%M:%S %p"); - goto subformat; - - case L_('S'): - if (modifier == L_('E')) - goto bad_format; - - DO_NUMBER (2, tp->tm_sec); - - case L_('s'): /* GNU extension. */ - { - struct tm ltm; - time_t t; - - ltm = *tp; - t = mktime (<m); - - /* Generate string value for T using time_t arithmetic; - this works even if sizeof (long) < sizeof (time_t). */ - - bufp = buf + sizeof (buf) / sizeof (buf[0]); - negative_number = t < 0; - - do - { - int d = t % 10; - t /= 10; - - if (negative_number) - { - d = -d; - - /* Adjust if division truncates to minus infinity. */ - if (0 < -1 % 10 && d < 0) - { - t++; - d += 10; - } - } - - *--bufp = d + L_('0'); - } - while (t != 0); - - digits = 1; - goto do_number_sign_and_padding; - } - - case L_('X'): - if (modifier == L_('O')) - goto bad_format; -#ifdef _NL_CURRENT - if (! (modifier == L_('E') - && (*(subfmt = - (const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(ERA_T_FMT))) - != L_('\0')))) - subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(T_FMT)); - goto subformat; -#else -# if HAVE_STRFTIME - goto underlying_strftime; -# else - /* Fall through. */ -# endif -#endif - case L_('T'): /* POSIX.2 extension. */ - subfmt = L_("%H:%M:%S"); - goto subformat; - - case L_('t'): /* POSIX.2 extension. */ - add (1, *p = L_('\t')); - break; - - case L_('u'): /* POSIX.2 extension. */ - DO_NUMBER (1, (tp->tm_wday - 1 + 7) % 7 + 1); - - case L_('U'): - if (modifier == L_('E')) - goto bad_format; - - DO_NUMBER (2, (tp->tm_yday - tp->tm_wday + 7) / 7); - - case L_('V'): - case L_('g'): /* ISO C99 extension. */ - case L_('G'): /* ISO C99 extension. */ - if (modifier == L_('E')) - goto bad_format; - { - int year = tp->tm_year + TM_YEAR_BASE; - int days = iso_week_days (tp->tm_yday, tp->tm_wday); - - if (days < 0) - { - /* This ISO week belongs to the previous year. */ - year--; - days = iso_week_days (tp->tm_yday + (365 + __isleap (year)), - tp->tm_wday); - } - else - { - int d = iso_week_days (tp->tm_yday - (365 + __isleap (year)), - tp->tm_wday); - if (0 <= d) - { - /* This ISO week belongs to the next year. */ - year++; - days = d; - } - } - - switch (*f) - { - case L_('g'): - DO_NUMBER (2, (year % 100 + 100) % 100); - - case L_('G'): - DO_NUMBER (1, year); - - default: - DO_NUMBER (2, days / 7 + 1); - } - } - - case L_('W'): - if (modifier == L_('E')) - goto bad_format; - - DO_NUMBER (2, (tp->tm_yday - (tp->tm_wday - 1 + 7) % 7 + 7) / 7); - - case L_('w'): - if (modifier == L_('E')) - goto bad_format; - - DO_NUMBER (1, tp->tm_wday); - - case L_('Y'): - if (modifier == 'E') - { -#if HAVE_STRUCT_ERA_ENTRY - struct era_entry *era = _nl_get_era_entry (tp); - if (era) - { -# ifdef COMPILE_WIDE - subfmt = era->era_wformat; -# else - subfmt = era->era_format; -# endif - goto subformat; - } -#else -# if HAVE_STRFTIME - goto underlying_strftime; -# endif -#endif - } - if (modifier == L_('O')) - goto bad_format; - else - DO_NUMBER (1, tp->tm_year + TM_YEAR_BASE); - - case L_('y'): - if (modifier == L_('E')) - { -#if HAVE_STRUCT_ERA_ENTRY - struct era_entry *era = _nl_get_era_entry (tp); - if (era) - { - int delta = tp->tm_year - era->start_date[0]; - DO_NUMBER (1, (era->offset - + delta * era->absolute_direction)); - } -#else -# if HAVE_STRFTIME - goto underlying_strftime; -# endif -#endif - } - DO_NUMBER (2, (tp->tm_year % 100 + 100) % 100); - - case L_('Z'): - if (change_case) - { - to_uppcase = 0; - to_lowcase = 1; - } - -#if HAVE_TZNAME - /* The tzset() call might have changed the value. */ - if (!(zone && *zone) && tp->tm_isdst >= 0) - zone = tzname[tp->tm_isdst]; -#endif - if (! zone) - zone = ""; /* POSIX.2 requires the empty string here. */ - -#ifdef COMPILE_WIDE - { - /* The zone string is always given in multibyte form. We have - to transform it first. */ - wchar_t *wczone; - size_t len; - widen (zone, wczone, len); - cpy (len, wczone); - } -#else - cpy (strlen (zone), zone); -#endif - break; - - case L_('z'): /* ISO C99 extension. */ - if (tp->tm_isdst < 0) - break; - - { - int diff; -#if HAVE_TM_GMTOFF - diff = tp->tm_gmtoff; -#else - if (ut) - diff = 0; - else - { - struct tm gtm; - struct tm ltm; - time_t lt; - - ltm = *tp; - lt = mktime (<m); - - if (lt == (time_t) -1) - { - /* mktime returns -1 for errors, but -1 is also a - valid time_t value. Check whether an error really - occurred. */ - struct tm tm; - - if (! my_strftime_localtime_r (<, &tm) - || ((ltm.tm_sec ^ tm.tm_sec) - | (ltm.tm_min ^ tm.tm_min) - | (ltm.tm_hour ^ tm.tm_hour) - | (ltm.tm_mday ^ tm.tm_mday) - | (ltm.tm_mon ^ tm.tm_mon) - | (ltm.tm_year ^ tm.tm_year))) - break; - } - - if (! my_strftime_gmtime_r (<, >m)) - break; - - diff = tm_diff (<m, >m); - } -#endif - - if (diff < 0) - { - add (1, *p = L_('-')); - diff = -diff; - } - else - add (1, *p = L_('+')); - - diff /= 60; - DO_NUMBER (4, (diff / 60) * 100 + diff % 60); - } - - case L_('\0'): /* GNU extension: % at end of format. */ - --f; - /* Fall through. */ - default: - /* Unknown format; output the format, including the '%', - since this is most likely the right thing to do if a - multibyte string has been misparsed. */ - bad_format: - { - int flen; - for (flen = 1; f[1 - flen] != L_('%'); flen++) - continue; - cpy (flen, &f[1 - flen]); - } - break; - } - } - - if (p && maxsize != 0) - *p = L_('\0'); - return i; -} - - -#ifdef emacs -/* For Emacs we have a separate interface which corresponds to the normal - strftime function plus the ut argument, but without the ns argument. */ -size_t -emacs_strftimeu (s, maxsize, format, tp, ut) - char *s; - size_t maxsize; - const char *format; - const struct tm *tp; - int ut; -{ - return my_strftime (s, maxsize, format, tp, ut, 0); -} -#endif diff --git a/src/bin/diffutils/lib/strtoimax.c b/src/bin/diffutils/lib/strtoimax.c deleted file mode 100644 index 465abc5412..0000000000 --- a/src/bin/diffutils/lib/strtoimax.c +++ /dev/null @@ -1,101 +0,0 @@ -/* Convert string representation of a number into an intmax_t value. - - Copyright (C) 1999, 2001 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by Paul Eggert. */ - -#if HAVE_CONFIG_H -# include -#endif - -#if HAVE_INTTYPES_H -# include -#endif - -#if HAVE_STDLIB_H -# include -#endif - -#ifndef PARAMS -# if defined PROTOTYPES || defined __STDC__ -# define PARAMS(Args) Args -# else -# define PARAMS(Args) () -# endif -#endif - -/* Verify a requirement at compile-time (unlike assert, which is runtime). */ -#define verify(name, assertion) struct name { char a[(assertion) ? 1 : -1]; } - -#ifdef UNSIGNED -# ifndef HAVE_DECL_STRTOUL -"this configure-time declaration test was not run" -# endif -# if !HAVE_DECL_STRTOUL -unsigned long strtoul PARAMS ((char const *, char **, int)); -# endif -# ifndef HAVE_DECL_STRTOULL -"this configure-time declaration test was not run" -# endif -# if !HAVE_DECL_STRTOULL && HAVE_UNSIGNED_LONG_LONG -unsigned long long strtoull PARAMS ((char const *, char **, int)); -# endif - -#else - -# ifndef HAVE_DECL_STRTOL -"this configure-time declaration test was not run" -# endif -# if !HAVE_DECL_STRTOL -long strtol PARAMS ((char const *, char **, int)); -# endif -# ifndef HAVE_DECL_STRTOLL -"this configure-time declaration test was not run" -# endif -# if !HAVE_DECL_STRTOLL && HAVE_UNSIGNED_LONG_LONG -long long strtoll PARAMS ((char const *, char **, int)); -# endif -#endif - -#ifdef UNSIGNED -# undef HAVE_LONG_LONG -# define HAVE_LONG_LONG HAVE_UNSIGNED_LONG_LONG -# define INT uintmax_t -# define strtoimax strtoumax -# define strtol strtoul -# define strtoll strtoull -#else -# define INT intmax_t -#endif - -INT -strtoimax (char const *ptr, char **endptr, int base) -{ -#if HAVE_LONG_LONG - verify (size_is_that_of_long_or_long_long, - (sizeof (INT) == sizeof (long) - || sizeof (INT) == sizeof (long long))); - - if (sizeof (INT) != sizeof (long)) - return strtoll (ptr, endptr, base); -#else - verify (size_is_that_of_long, - sizeof (INT) == sizeof (long)); -#endif - - return strtol (ptr, endptr, base); -} diff --git a/src/bin/diffutils/lib/strtol.c b/src/bin/diffutils/lib/strtol.c deleted file mode 100644 index 0c9c2767ea..0000000000 --- a/src/bin/diffutils/lib/strtol.c +++ /dev/null @@ -1,472 +0,0 @@ -/* Convert string representation of a number into an integer value. - Copyright (C) 1991, 92, 94, 95, 96, 97, 98, 99 Free Software Foundation, Inc. - NOTE: The canonical source of this file is maintained with the GNU C - Library. Bugs can be reported to bug-glibc@gnu.org. - - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#if HAVE_CONFIG_H -# include -#endif - -#ifdef _LIBC -# define USE_NUMBER_GROUPING -# define STDC_HEADERS -# define HAVE_LIMITS_H -#endif - -#include -#include -#ifndef errno -extern int errno; -#endif -#ifndef __set_errno -# define __set_errno(Val) errno = (Val) -#endif - -#ifdef HAVE_LIMITS_H -# include -#endif - -#ifdef STDC_HEADERS -# include -# include -# include -#else -# ifndef NULL -# define NULL 0 -# endif -#endif - -#ifdef USE_NUMBER_GROUPING -# include "../locale/localeinfo.h" -#endif - -/* Nonzero if we are defining `strtoul' or `strtoull', operating on - unsigned integers. */ -#ifndef UNSIGNED -# define UNSIGNED 0 -# define INT LONG int -#else -# define INT unsigned LONG int -#endif - -/* Determine the name. */ -#ifdef USE_IN_EXTENDED_LOCALE_MODEL -# if UNSIGNED -# ifdef USE_WIDE_CHAR -# ifdef QUAD -# define strtol __wcstoull_l -# else -# define strtol __wcstoul_l -# endif -# else -# ifdef QUAD -# define strtol __strtoull_l -# else -# define strtol __strtoul_l -# endif -# endif -# else -# ifdef USE_WIDE_CHAR -# ifdef QUAD -# define strtol __wcstoll_l -# else -# define strtol __wcstol_l -# endif -# else -# ifdef QUAD -# define strtol __strtoll_l -# else -# define strtol __strtol_l -# endif -# endif -# endif -#else -# if UNSIGNED -# ifdef USE_WIDE_CHAR -# ifdef QUAD -# define strtol wcstoull -# else -# define strtol wcstoul -# endif -# else -# ifdef QUAD -# define strtol strtoull -# else -# define strtol strtoul -# endif -# endif -# else -# ifdef USE_WIDE_CHAR -# ifdef QUAD -# define strtol wcstoll -# else -# define strtol wcstol -# endif -# else -# ifdef QUAD -# define strtol strtoll -# endif -# endif -# endif -#endif - -/* If QUAD is defined, we are defining `strtoll' or `strtoull', - operating on `long long int's. */ -#ifdef QUAD -# define LONG long long -# define STRTOL_LONG_MIN LONG_LONG_MIN -# define STRTOL_LONG_MAX LONG_LONG_MAX -# define STRTOL_ULONG_MAX ULONG_LONG_MAX - -/* The extra casts work around common compiler bugs, - e.g. Cray C 5.0.3.0 when t == time_t. */ -# ifndef TYPE_SIGNED -# define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) -# endif -# ifndef TYPE_MINIMUM -# define TYPE_MINIMUM(t) ((t) (TYPE_SIGNED (t) \ - ? ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1) \ - : (t) 0)) -# endif -# ifndef TYPE_MAXIMUM -# define TYPE_MAXIMUM(t) ((t) (~ (t) 0 - TYPE_MINIMUM (t))) -# endif - -# ifndef ULONG_LONG_MAX -# define ULONG_LONG_MAX TYPE_MAXIMUM (unsigned long long) -# endif -# ifndef LONG_LONG_MAX -# define LONG_LONG_MAX TYPE_MAXIMUM (long long int) -# endif -# ifndef LONG_LONG_MIN -# define LONG_LONG_MIN TYPE_MINIMUM (long long int) -# endif - -# if __GNUC__ == 2 && __GNUC_MINOR__ < 7 - /* Work around gcc bug with using this constant. */ - static const unsigned long long int maxquad = ULONG_LONG_MAX; -# undef STRTOL_ULONG_MAX -# define STRTOL_ULONG_MAX maxquad -# endif -#else -# define LONG long - -# ifndef ULONG_MAX -# define ULONG_MAX ((unsigned long) ~(unsigned long) 0) -# endif -# ifndef LONG_MAX -# define LONG_MAX ((long int) (ULONG_MAX >> 1)) -# endif -# define STRTOL_LONG_MIN LONG_MIN -# define STRTOL_LONG_MAX LONG_MAX -# define STRTOL_ULONG_MAX ULONG_MAX -#endif - - -/* We use this code also for the extended locale handling where the - function gets as an additional argument the locale which has to be - used. To access the values we have to redefine the _NL_CURRENT - macro. */ -#ifdef USE_IN_EXTENDED_LOCALE_MODEL -# undef _NL_CURRENT -# define _NL_CURRENT(category, item) \ - (current->values[_NL_ITEM_INDEX (item)].string) -# define LOCALE_PARAM , loc -# define LOCALE_PARAM_DECL __locale_t loc; -#else -# define LOCALE_PARAM -# define LOCALE_PARAM_DECL -#endif - -#if defined _LIBC || defined HAVE_WCHAR_H -# include -#endif - -#ifdef USE_WIDE_CHAR -# include -# define L_(Ch) L##Ch -# define UCHAR_TYPE wint_t -# define STRING_TYPE wchar_t -# ifdef USE_IN_EXTENDED_LOCALE_MODEL -# define ISSPACE(Ch) __iswspace_l ((Ch), loc) -# define ISALPHA(Ch) __iswalpha_l ((Ch), loc) -# define TOUPPER(Ch) __towupper_l ((Ch), loc) -# else -# define ISSPACE(Ch) iswspace (Ch) -# define ISALPHA(Ch) iswalpha (Ch) -# define TOUPPER(Ch) towupper (Ch) -# endif -#else -# if defined STDC_HEADERS || (!defined isascii && !defined HAVE_ISASCII) -# define IN_CTYPE_DOMAIN(c) 1 -# else -# define IN_CTYPE_DOMAIN(c) isascii(c) -# endif -# define L_(Ch) Ch -# define UCHAR_TYPE unsigned char -# define STRING_TYPE char -# ifdef USE_IN_EXTENDED_LOCALE_MODEL -# define ISSPACE(Ch) __isspace_l ((Ch), loc) -# define ISALPHA(Ch) __isalpha_l ((Ch), loc) -# define TOUPPER(Ch) __toupper_l ((Ch), loc) -# else -# define ISSPACE(Ch) (IN_CTYPE_DOMAIN (Ch) && isspace (Ch)) -# define ISALPHA(Ch) (IN_CTYPE_DOMAIN (Ch) && isalpha (Ch)) -# define TOUPPER(Ch) (IN_CTYPE_DOMAIN (Ch) ? toupper (Ch) : (Ch)) -# endif -#endif - -/* For compilers which are ansi but don't define __STDC__, like SGI - Irix-4.0.5 cc, also check whether PROTOTYPES is defined. */ -#if defined (__STDC__) || defined (PROTOTYPES) -# define INTERNAL(X) INTERNAL1(X) -# define INTERNAL1(X) __##X##_internal -# define WEAKNAME(X) WEAKNAME1(X) -#else -# define INTERNAL(X) __/**/X/**/_internal -#endif - -#ifdef USE_NUMBER_GROUPING -/* This file defines a function to check for correct grouping. */ -# include "grouping.h" -#endif - - - -/* Convert NPTR to an `unsigned long int' or `long int' in base BASE. - If BASE is 0 the base is determined by the presence of a leading - zero, indicating octal or a leading "0x" or "0X", indicating hexadecimal. - If BASE is < 2 or > 36, it is reset to 10. - If ENDPTR is not NULL, a pointer to the character after the last - one converted is stored in *ENDPTR. */ - -INT -INTERNAL (strtol) (nptr, endptr, base, group LOCALE_PARAM) - const STRING_TYPE *nptr; - STRING_TYPE **endptr; - int base; - int group; - LOCALE_PARAM_DECL -{ - int negative; - register unsigned LONG int cutoff; - register unsigned int cutlim; - register unsigned LONG int i; - register const STRING_TYPE *s; - register UCHAR_TYPE c; - const STRING_TYPE *save, *end; - int overflow; - -#ifdef USE_NUMBER_GROUPING -# ifdef USE_IN_EXTENDED_LOCALE_MODEL - struct locale_data *current = loc->__locales[LC_NUMERIC]; -# endif - /* The thousands character of the current locale. */ - wchar_t thousands = L'\0'; - /* The numeric grouping specification of the current locale, - in the format described in . */ - const char *grouping; - - if (group) - { - grouping = _NL_CURRENT (LC_NUMERIC, GROUPING); - if (*grouping <= 0 || *grouping == CHAR_MAX) - grouping = NULL; - else - { - /* Figure out the thousands separator character. */ -# if defined _LIBC || defined _HAVE_BTOWC - thousands = __btowc (*_NL_CURRENT (LC_NUMERIC, THOUSANDS_SEP)); - if (thousands == WEOF) - thousands = L'\0'; -# endif - if (thousands == L'\0') - grouping = NULL; - } - } - else - grouping = NULL; -#endif - - if (base < 0 || base == 1 || base > 36) - { - __set_errno (EINVAL); - return 0; - } - - save = s = nptr; - - /* Skip white space. */ - while (ISSPACE (*s)) - ++s; - if (*s == L_('\0')) - goto noconv; - - /* Check for a sign. */ - if (*s == L_('-')) - { - negative = 1; - ++s; - } - else if (*s == L_('+')) - { - negative = 0; - ++s; - } - else - negative = 0; - - /* Recognize number prefix and if BASE is zero, figure it out ourselves. */ - if (*s == L_('0')) - { - if ((base == 0 || base == 16) && TOUPPER (s[1]) == L_('X')) - { - s += 2; - base = 16; - } - else if (base == 0) - base = 8; - } - else if (base == 0) - base = 10; - - /* Save the pointer so we can check later if anything happened. */ - save = s; - -#ifdef USE_NUMBER_GROUPING - if (group) - { - /* Find the end of the digit string and check its grouping. */ - end = s; - for (c = *end; c != L_('\0'); c = *++end) - if ((wchar_t) c != thousands - && ((wchar_t) c < L_('0') || (wchar_t) c > L_('9')) - && (!ISALPHA (c) || (int) (TOUPPER (c) - L_('A') + 10) >= base)) - break; - if (*s == thousands) - end = s; - else - end = correctly_grouped_prefix (s, end, thousands, grouping); - } - else -#endif - end = NULL; - - cutoff = STRTOL_ULONG_MAX / (unsigned LONG int) base; - cutlim = STRTOL_ULONG_MAX % (unsigned LONG int) base; - - overflow = 0; - i = 0; - for (c = *s; c != L_('\0'); c = *++s) - { - if (s == end) - break; - if (c >= L_('0') && c <= L_('9')) - c -= L_('0'); - else if (ISALPHA (c)) - c = TOUPPER (c) - L_('A') + 10; - else - break; - if ((int) c >= base) - break; - /* Check for overflow. */ - if (i > cutoff || (i == cutoff && c > cutlim)) - overflow = 1; - else - { - i *= (unsigned LONG int) base; - i += c; - } - } - - /* Check if anything actually happened. */ - if (s == save) - goto noconv; - - /* Store in ENDPTR the address of one character - past the last character we converted. */ - if (endptr != NULL) - *endptr = (STRING_TYPE *) s; - -#if !UNSIGNED - /* Check for a value that is within the range of - `unsigned LONG int', but outside the range of `LONG int'. */ - if (overflow == 0 - && i > (negative - ? -((unsigned LONG int) (STRTOL_LONG_MIN + 1)) + 1 - : (unsigned LONG int) STRTOL_LONG_MAX)) - overflow = 1; -#endif - - if (overflow) - { - __set_errno (ERANGE); -#if UNSIGNED - return STRTOL_ULONG_MAX; -#else - return negative ? STRTOL_LONG_MIN : STRTOL_LONG_MAX; -#endif - } - - /* Return the result of the appropriate sign. */ - return negative ? -i : i; - -noconv: - /* We must handle a special case here: the base is 0 or 16 and the - first two characters are '0' and 'x', but the rest are no - hexadecimal digits. This is no error case. We return 0 and - ENDPTR points to the `x`. */ - if (endptr != NULL) - { - if (save - nptr >= 2 && TOUPPER (save[-1]) == L_('X') - && save[-2] == L_('0')) - *endptr = (STRING_TYPE *) &save[-1]; - else - /* There was no number to convert. */ - *endptr = (STRING_TYPE *) nptr; - } - - return 0L; -} - -/* External user entry point. */ - -#if _LIBC - 0 == 0 -# undef PARAMS -# if defined (__STDC__) && __STDC__ -# define PARAMS(Args) Args -# else -# define PARAMS(Args) () -# endif - -/* Prototype. */ -INT strtol PARAMS ((const STRING_TYPE *nptr, STRING_TYPE **endptr, int base)); -#endif - - -INT -#ifdef weak_function -weak_function -#endif -strtol (nptr, endptr, base LOCALE_PARAM) - const STRING_TYPE *nptr; - STRING_TYPE **endptr; - int base; - LOCALE_PARAM_DECL -{ - return INTERNAL (strtol) (nptr, endptr, base, 0 LOCALE_PARAM); -} diff --git a/src/bin/diffutils/lib/strtoul.c b/src/bin/diffutils/lib/strtoul.c deleted file mode 100644 index cfe239cdf2..0000000000 --- a/src/bin/diffutils/lib/strtoul.c +++ /dev/null @@ -1,22 +0,0 @@ -/* Copyright (C) 1991, 1999, 2001 Free Software Foundation, Inc. - -NOTE: The canonical source of this file is maintained with the GNU C Library. -Bugs can be reported to bug-glibc@prep.ai.mit.edu. - -This program is free software; you can redistribute it and/or modify it -under the terms of the GNU General Public License as published by the -Free Software Foundation; either version 2, or (at your option) any -later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software Foundation, -Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#define UNSIGNED 1 - -#include "strtol.c" diff --git a/src/bin/diffutils/lib/strtoull.c b/src/bin/diffutils/lib/strtoull.c deleted file mode 100644 index d6aa1f8059..0000000000 --- a/src/bin/diffutils/lib/strtoull.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Function to parse an `unsigned long long int' from text. - Copyright (C) 1995, 1996, 1997, 1999 Free Software Foundation, Inc. - NOTE: The canonical source of this file is maintained with the GNU C - Library. Bugs can be reported to bug-glibc@gnu.org. - - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#define QUAD 1 - -#include "strtoul.c" - -#ifdef _LIBC -strong_alias (__strtoull_internal, __strtouq_internal) -weak_alias (strtoull, strtouq) -#endif diff --git a/src/bin/diffutils/lib/strtoumax.c b/src/bin/diffutils/lib/strtoumax.c deleted file mode 100644 index dc395d626a..0000000000 --- a/src/bin/diffutils/lib/strtoumax.c +++ /dev/null @@ -1,2 +0,0 @@ -#define UNSIGNED 1 -#include "strtoimax.c" diff --git a/src/bin/diffutils/lib/tempname.c b/src/bin/diffutils/lib/tempname.c deleted file mode 100644 index 39982054fe..0000000000 --- a/src/bin/diffutils/lib/tempname.c +++ /dev/null @@ -1,342 +0,0 @@ -/* Copyright (C) 1991-1999, 2000, 2001 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#if HAVE_CONFIG_H -# include -#endif - -#include -#include - -#include -#ifndef __set_errno -# define __set_errno(Val) errno = (Val) -#endif - -#include -#ifndef P_tmpdir -# define P_tmpdir "/tmp" -#endif -#ifndef TMP_MAX -# define TMP_MAX 238328 -#endif -#ifndef __GT_FILE -# define __GT_FILE 0 -# define __GT_BIGFILE 1 -# define __GT_DIR 2 -# define __GT_NOCREATE 3 -#endif - -#if STDC_HEADERS || _LIBC -# include -# include -#endif - -#include - -#if HAVE_FCNTL_H || _LIBC -# include -#endif - -#if HAVE_SYS_TIME_H || _LIBC -# include -#endif - -#if HAVE_STDINT_H || _LIBC -# include -#endif - -#if HAVE_UNISTD_H || _LIBC -# include -#endif - -#include -#if STAT_MACROS_BROKEN -# undef S_ISDIR -#endif -#if !defined S_ISDIR && defined S_IFDIR -# define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) -#endif -#if !S_IRUSR && S_IREAD -# define S_IRUSR S_IREAD -#endif -#if !S_IRUSR -# define S_IRUSR 00400 -#endif -#if !S_IWUSR && S_IWRITE -# define S_IWUSR S_IWRITE -#endif -#if !S_IWUSR -# define S_IWUSR 00200 -#endif -#if !S_IXUSR && S_IEXEC -# define S_IXUSR S_IEXEC -#endif -#if !S_IXUSR -# define S_IXUSR 00100 -#endif - -#if _LIBC -# define struct_stat64 struct stat64 -#else -# define struct_stat64 struct stat -# define __getpid getpid -# define __gettimeofday gettimeofday -# define __mkdir mkdir -# define __open open -# define __open64 open -# define __lxstat64(version, path, buf) lstat (path, buf) -# define __xstat64(version, path, buf) stat (path, buf) -#endif - -#if ! (HAVE___SECURE_GETENV || _LIBC) -# define __secure_getenv getenv -#endif - -#ifdef _LIBC -# include -# if HP_TIMING_AVAIL -# define RANDOM_BITS(Var) \ - if (__builtin_expect (value == UINT64_C (0), 0)) \ - { \ - /* If this is the first time this function is used initialize \ - the variable we accumulate the value in to some somewhat \ - random value. If we'd not do this programs at startup time \ - might have a reduced set of possible names, at least on slow \ - machines. */ \ - struct timeval tv; \ - __gettimeofday (&tv, NULL); \ - value = ((uint64_t) tv.tv_usec << 16) ^ tv.tv_sec; \ - } \ - HP_TIMING_NOW (Var) -# endif -#endif - -/* Use the widest available unsigned type if uint64_t is not - available. The algorithm below extracts a number less than 62**6 - (approximately 2**35.725) from uint64_t, so ancient hosts where - uintmax_t is only 32 bits lose about 3.725 bits of randomness, - which is better than not having mkstemp at all. */ -#if !defined UINT64_MAX && !defined uint64_t -# define uint64_t uintmax_t -#endif - -/* Return nonzero if DIR is an existent directory. */ -static int -direxists (const char *dir) -{ - struct_stat64 buf; - return __xstat64 (_STAT_VER, dir, &buf) == 0 && S_ISDIR (buf.st_mode); -} - -/* Path search algorithm, for tmpnam, tmpfile, etc. If DIR is - non-null and exists, uses it; otherwise uses the first of $TMPDIR, - P_tmpdir, /tmp that exists. Copies into TMPL a template suitable - for use with mk[s]temp. Will fail (-1) if DIR is non-null and - doesn't exist, none of the searched dirs exists, or there's not - enough space in TMPL. */ -int -__path_search (char *tmpl, size_t tmpl_len, const char *dir, const char *pfx, - int try_tmpdir) -{ - const char *d; - size_t dlen, plen; - - if (!pfx || !pfx[0]) - { - pfx = "file"; - plen = 4; - } - else - { - plen = strlen (pfx); - if (plen > 5) - plen = 5; - } - - if (try_tmpdir) - { - d = __secure_getenv ("TMPDIR"); - if (d != NULL && direxists (d)) - dir = d; - else if (dir != NULL && direxists (dir)) - /* nothing */ ; - else - dir = NULL; - } - if (dir == NULL) - { - if (direxists (P_tmpdir)) - dir = P_tmpdir; - else if (strcmp (P_tmpdir, "/tmp") != 0 && direxists ("/tmp")) - dir = "/tmp"; - else - { - __set_errno (ENOENT); - return -1; - } - } - - dlen = strlen (dir); - while (dlen > 1 && dir[dlen - 1] == '/') - dlen--; /* remove trailing slashes */ - - /* check we have room for "${dir}/${pfx}XXXXXX\0" */ - if (tmpl_len < dlen + 1 + plen + 6 + 1) - { - __set_errno (EINVAL); - return -1; - } - - sprintf (tmpl, "%.*s/%.*sXXXXXX", (int) dlen, dir, (int) plen, pfx); - return 0; -} - -/* These are the characters used in temporary filenames. */ -static const char letters[] = -"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; - -/* Generate a temporary file name based on TMPL. TMPL must match the - rules for mk[s]temp (i.e. end in "XXXXXX"). The name constructed - does not exist at the time of the call to __gen_tempname. TMPL is - overwritten with the result. - - KIND may be one of: - __GT_NOCREATE: simply verify that the name does not exist - at the time of the call. - __GT_FILE: create the file using open(O_CREAT|O_EXCL) - and return a read-write fd. The file is mode 0600. - __GT_BIGFILE: same as __GT_FILE but use open64(). - __GT_DIR: create a directory, which will be mode 0700. - - We use a clever algorithm to get hard-to-predict names. */ -int -__gen_tempname (char *tmpl, int kind) -{ - int len; - char *XXXXXX; - static uint64_t value; - uint64_t random_time_bits; - unsigned int count; - int fd = -1; - int save_errno = errno; - struct_stat64 st; - - /* A lower bound on the number of temporary files to attempt to - generate. The maximum total number of temporary file names that - can exist for a given template is 62**6. It should never be - necessary to try all these combinations. Instead if a reasonable - number of names is tried (we define reasonable as 62**3) fail to - give the system administrator the chance to remove the problems. */ - unsigned int attempts_min = 62 * 62 * 62; - - /* The number of times to attempt to generate a temporary file. To - conform to POSIX, this must be no smaller than TMP_MAX. */ - unsigned int attempts = attempts_min < TMP_MAX ? TMP_MAX : attempts_min; - - len = strlen (tmpl); - if (len < 6 || strcmp (&tmpl[len - 6], "XXXXXX")) - { - __set_errno (EINVAL); - return -1; - } - - /* This is where the Xs start. */ - XXXXXX = &tmpl[len - 6]; - - /* Get some more or less random data. */ -#ifdef RANDOM_BITS - RANDOM_BITS (random_time_bits); -#else -# if HAVE_GETTIMEOFDAY || _LIBC - { - struct timeval tv; - __gettimeofday (&tv, NULL); - random_time_bits = ((uint64_t) tv.tv_usec << 16) ^ tv.tv_sec; - } -# else - random_time_bits = time (NULL); -# endif -#endif - value += random_time_bits ^ __getpid (); - - for (count = 0; count < attempts; value += 7777, ++count) - { - uint64_t v = value; - - /* Fill in the random bits. */ - XXXXXX[0] = letters[v % 62]; - v /= 62; - XXXXXX[1] = letters[v % 62]; - v /= 62; - XXXXXX[2] = letters[v % 62]; - v /= 62; - XXXXXX[3] = letters[v % 62]; - v /= 62; - XXXXXX[4] = letters[v % 62]; - v /= 62; - XXXXXX[5] = letters[v % 62]; - - switch (kind) - { - case __GT_FILE: - fd = __open (tmpl, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR); - break; - - case __GT_BIGFILE: - fd = __open64 (tmpl, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR); - break; - - case __GT_DIR: - fd = __mkdir (tmpl, S_IRUSR | S_IWUSR | S_IXUSR); - break; - - case __GT_NOCREATE: - /* This case is backward from the other three. __gen_tempname - succeeds if __xstat fails because the name does not exist. - Note the continue to bypass the common logic at the bottom - of the loop. */ - if (__lxstat64 (_STAT_VER, tmpl, &st) < 0) - { - if (errno == ENOENT) - { - __set_errno (save_errno); - return 0; - } - else - /* Give up now. */ - return -1; - } - continue; - - default: - assert (! "invalid KIND in __gen_tempname"); - } - - if (fd >= 0) - { - __set_errno (save_errno); - return fd; - } - else if (errno != EEXIST) - return -1; - } - - /* We got out of the loop because we ran out of combinations to try. */ - __set_errno (EEXIST); - return -1; -} diff --git a/src/bin/diffutils/lib/umaxtostr.c b/src/bin/diffutils/lib/umaxtostr.c deleted file mode 100644 index 4f49a7f8dd..0000000000 --- a/src/bin/diffutils/lib/umaxtostr.c +++ /dev/null @@ -1,3 +0,0 @@ -#define inttostr umaxtostr -#define inttype uintmax_t -#include "inttostr.c" diff --git a/src/bin/diffutils/lib/unlocked-io.h b/src/bin/diffutils/lib/unlocked-io.h deleted file mode 100644 index 19fdcb3a76..0000000000 --- a/src/bin/diffutils/lib/unlocked-io.h +++ /dev/null @@ -1,69 +0,0 @@ -#ifndef UNLOCKED_IO_H -# define UNLOCKED_IO_H 1 - -# ifndef USE_UNLOCKED_IO -# define USE_UNLOCKED_IO 1 -# endif - -# if USE_UNLOCKED_IO - -/* These are wrappers for functions/macros from GNU libc. - The standard I/O functions are thread-safe. These *_unlocked ones are - more efficient but not thread-safe. That they're not thread-safe is - fine since all of the applications in this package are single threaded. */ - -# if HAVE_DECL_CLEARERR_UNLOCKED -# undef clearerr -# define clearerr(x) clearerr_unlocked (x) -# endif -# if HAVE_DECL_FEOF_UNLOCKED -# undef feof -# define feof(x) feof_unlocked (x) -# endif -# if HAVE_DECL_FERROR_UNLOCKED -# undef ferror -# define ferror(x) ferror_unlocked (x) -# endif -# if HAVE_DECL_FFLUSH_UNLOCKED -# undef fflush -# define fflush(x) fflush_unlocked (x) -# endif -# if HAVE_DECL_FGETS_UNLOCKED -# undef fgets -# define fgets(x,y,z) fgets_unlocked (x,y,z) -# endif -# if HAVE_DECL_FPUTC_UNLOCKED -# undef fputc -# define fputc(x,y) fputc_unlocked (x,y) -# endif -# if HAVE_DECL_FPUTS_UNLOCKED -# undef fputs -# define fputs(x,y) fputs_unlocked (x,y) -# endif -# if HAVE_DECL_FREAD_UNLOCKED -# undef fread -# define fread(w,x,y,z) fread_unlocked (w,x,y,z) -# endif -# if HAVE_DECL_FWRITE_UNLOCKED -# undef fwrite -# define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z) -# endif -# if HAVE_DECL_GETC_UNLOCKED -# undef getc -# define getc(x) getc_unlocked (x) -# endif -# if HAVE_DECL_GETCHAR_UNLOCKED -# undef getchar -# define getchar() getchar_unlocked () -# endif -# if HAVE_DECL_PUTC_UNLOCKED -# undef putc -# define putc(x,y) putc_unlocked (x,y) -# endif -# if HAVE_DECL_PUTCHAR_UNLOCKED -# undef putchar -# define putchar(x) putchar_unlocked (x) -# endif - -# endif /* USE_UNLOCKED_IO */ -#endif /* UNLOCKED_IO_H */ diff --git a/src/bin/diffutils/lib/waitpid.c b/src/bin/diffutils/lib/waitpid.c deleted file mode 100644 index 883c0662f9..0000000000 --- a/src/bin/diffutils/lib/waitpid.c +++ /dev/null @@ -1,73 +0,0 @@ -/* Emulate waitpid on systems that just have wait. - Copyright (C) 1994, 1995, 1998, 1999 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#if HAVE_CONFIG_H -# include -#endif - -#include -#include -#ifndef errno -extern int errno; -#endif - -#define WAITPID_CHILDREN 8 -static pid_t waited_pid[WAITPID_CHILDREN]; -static int waited_status[WAITPID_CHILDREN]; - -pid_t -waitpid (pid_t pid, int *stat_loc, int options) -{ - int i; - pid_t p; - - if (!options && (pid == -1 || 0 < pid)) - { - /* If we have already waited for this child, return it immediately. */ - for (i = 0; i < WAITPID_CHILDREN; i++) - { - p = waited_pid[i]; - if (p && (p == pid || pid == -1)) - { - waited_pid[i] = 0; - goto success; - } - } - - /* The child has not returned yet; wait for it, accumulating status. */ - for (i = 0; i < WAITPID_CHILDREN; i++) - if (! waited_pid[i]) - { - p = wait (&waited_status[i]); - if (p < 0) - return p; - if (p == pid || pid == -1) - goto success; - waited_pid[i] = p; - } - } - - /* We cannot emulate this wait call, e.g. because of too many children. */ - errno = EINVAL; - return -1; - -success: - if (stat_loc) - *stat_loc = waited_status[i]; - return p; -} diff --git a/src/bin/diffutils/lib/xalloc.h b/src/bin/diffutils/lib/xalloc.h deleted file mode 100644 index aabfea4add..0000000000 --- a/src/bin/diffutils/lib/xalloc.h +++ /dev/null @@ -1,82 +0,0 @@ -/* xalloc.h -- malloc with out-of-memory checking - Copyright (C) 1990-1998, 1999, 2000, 2002 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifndef XALLOC_H_ -# define XALLOC_H_ - -# ifndef PARAMS -# if defined PROTOTYPES || (defined __STDC__ && __STDC__) -# define PARAMS(Args) Args -# else -# define PARAMS(Args) () -# endif -# endif - -# ifndef __attribute__ -# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__ -# define __attribute__(x) -# endif -# endif - -# ifndef ATTRIBUTE_NORETURN -# define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__)) -# endif - -/* If this pointer is non-zero, run the specified function upon each - allocation failure. It is initialized to zero. */ -extern void (*xalloc_fail_func) PARAMS ((void)); - -/* If XALLOC_FAIL_FUNC is undefined or a function that returns, this - message is output. It is translated via gettext. - Its value is "memory exhausted". */ -extern char const xalloc_msg_memory_exhausted[]; - -/* This function is always triggered when memory is exhausted. It is - in charge of honoring the three previous items. This is the - function to call when one wants the program to die because of a - memory allocation failure. */ -extern void xalloc_die PARAMS ((void)) ATTRIBUTE_NORETURN; - -void *xmalloc PARAMS ((size_t n)); -void *xcalloc PARAMS ((size_t n, size_t s)); -void *xrealloc PARAMS ((void *p, size_t n)); -char *xstrdup PARAMS ((const char *str)); - -# define XMALLOC(Type, N_items) ((Type *) xmalloc (sizeof (Type) * (N_items))) -# define XCALLOC(Type, N_items) ((Type *) xcalloc (sizeof (Type), (N_items))) -# define XREALLOC(Ptr, Type, N_items) \ - ((Type *) xrealloc ((void *) (Ptr), sizeof (Type) * (N_items))) - -/* Declare and alloc memory for VAR of type TYPE. */ -# define NEW(Type, Var) Type *(Var) = XMALLOC (Type, 1) - -/* Free VAR only if non NULL. */ -# define XFREE(Var) \ - do { \ - if (Var) \ - free (Var); \ - } while (0) - -/* Return a pointer to a malloc'ed copy of the array SRC of NUM elements. */ -# define CCLONE(Src, Num) \ - (memcpy (xmalloc (sizeof (*Src) * (Num)), (Src), sizeof (*Src) * (Num))) - -/* Return a malloc'ed copy of SRC. */ -# define CLONE(Src) CCLONE (Src, 1) - - -#endif /* !XALLOC_H_ */ diff --git a/src/bin/diffutils/lib/xmalloc.c b/src/bin/diffutils/lib/xmalloc.c deleted file mode 100644 index 49351bbefe..0000000000 --- a/src/bin/diffutils/lib/xmalloc.c +++ /dev/null @@ -1,113 +0,0 @@ -/* xmalloc.c -- malloc with out of memory checking - Copyright (C) 1990-1999, 2000, 2002 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#if HAVE_CONFIG_H -# include -#endif - -#include - -#if STDC_HEADERS -# include -#else -void *calloc (); -void *malloc (); -void *realloc (); -void free (); -#endif - -#if ENABLE_NLS -# include -# define _(Text) gettext (Text) -#else -# define textdomain(Domain) -# define _(Text) Text -#endif -#define N_(Text) Text - -#include "error.h" -#include "exitfail.h" -#include "xalloc.h" - -#ifndef EXIT_FAILURE -# define EXIT_FAILURE 1 -#endif - -#ifndef HAVE_DONE_WORKING_MALLOC_CHECK -"you must run the autoconf test for a properly working malloc -- see malloc.m4" -#endif - -#ifndef HAVE_DONE_WORKING_REALLOC_CHECK -"you must run the autoconf test for a properly working realloc --see realloc.m4" -#endif - -/* If non NULL, call this function when memory is exhausted. */ -void (*xalloc_fail_func) PARAMS ((void)) = 0; - -/* If XALLOC_FAIL_FUNC is NULL, or does return, display this message - before exiting when memory is exhausted. Goes through gettext. */ -char const xalloc_msg_memory_exhausted[] = N_("memory exhausted"); - -void -xalloc_die (void) -{ - if (xalloc_fail_func) - (*xalloc_fail_func) (); - error (exit_failure, 0, "%s", _(xalloc_msg_memory_exhausted)); - /* The `noreturn' cannot be given to error, since it may return if - its first argument is 0. To help compilers understand the - xalloc_die does terminate, call exit. */ - exit (EXIT_FAILURE); -} - -/* Allocate N bytes of memory dynamically, with error checking. */ - -void * -xmalloc (size_t n) -{ - void *p; - - p = malloc (n); - if (p == 0) - xalloc_die (); - return p; -} - -/* Change the size of an allocated block of memory P to N bytes, - with error checking. */ - -void * -xrealloc (void *p, size_t n) -{ - p = realloc (p, n); - if (p == 0) - xalloc_die (); - return p; -} - -/* Allocate memory for N elements of S bytes, with error checking. */ - -void * -xcalloc (size_t n, size_t s) -{ - void *p; - - p = calloc (n, s); - if (p == 0) - xalloc_die (); - return p; -} diff --git a/src/bin/diffutils/lib/xstrtol.c b/src/bin/diffutils/lib/xstrtol.c deleted file mode 100644 index 446d62ec1f..0000000000 --- a/src/bin/diffutils/lib/xstrtol.c +++ /dev/null @@ -1,302 +0,0 @@ -/* A more useful interface to strtol. - Copyright (C) 1995, 1996, 1998-2001 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by Jim Meyering. */ - -#if HAVE_CONFIG_H -# include -#endif - -#ifndef __strtol -# define __strtol strtol -# define __strtol_t long int -# define __xstrtol xstrtol -#endif - -/* Some pre-ANSI implementations (e.g. SunOS 4) - need stderr defined if assertion checking is enabled. */ -#include - -#if STDC_HEADERS -# include -#endif - -#if HAVE_STRING_H -# include -#else -# include -# ifndef strchr -# define strchr index -# endif -#endif - -#include -#include - -#include -#ifndef errno -extern int errno; -#endif - -#if HAVE_LIMITS_H -# include -#endif - -#ifndef CHAR_BIT -# define CHAR_BIT 8 -#endif - -/* The extra casts work around common compiler bugs. */ -#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) -/* The outer cast is needed to work around a bug in Cray C 5.0.3.0. - It is necessary at least when t == time_t. */ -#define TYPE_MINIMUM(t) ((t) (TYPE_SIGNED (t) \ - ? ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1) : (t) 0)) -#define TYPE_MAXIMUM(t) (~ (t) 0 - TYPE_MINIMUM (t)) - -#if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII)) -# define IN_CTYPE_DOMAIN(c) 1 -#else -# define IN_CTYPE_DOMAIN(c) isascii(c) -#endif - -#define ISSPACE(c) (IN_CTYPE_DOMAIN (c) && isspace (c)) - -#include "xstrtol.h" - -#if !HAVE_DECL_STRTOL && !defined strtol -long int strtol (); -#endif - -#if !HAVE_DECL_STRTOUL && !defined strtoul -unsigned long int strtoul (); -#endif - -#if !HAVE_DECL_STRTOIMAX && !defined strtoimax -intmax_t strtoimax (); -#endif - -#if !HAVE_DECL_STRTOUMAX && !defined strtoumax -uintmax_t strtoumax (); -#endif - -static int -bkm_scale (__strtol_t *x, int scale_factor) -{ - __strtol_t product = *x * scale_factor; - if (*x != product / scale_factor) - return 1; - *x = product; - return 0; -} - -static int -bkm_scale_by_power (__strtol_t *x, int base, int power) -{ - while (power--) - if (bkm_scale (x, base)) - return 1; - - return 0; -} - -/* FIXME: comment. */ - -strtol_error -__xstrtol (const char *s, char **ptr, int strtol_base, - __strtol_t *val, const char *valid_suffixes) -{ - char *t_ptr; - char **p; - __strtol_t tmp; - - assert (0 <= strtol_base && strtol_base <= 36); - - p = (ptr ? ptr : &t_ptr); - - if (! TYPE_SIGNED (__strtol_t)) - { - const char *q = s; - while (ISSPACE ((unsigned char) *q)) - ++q; - if (*q == '-') - return LONGINT_INVALID; - } - - errno = 0; - tmp = __strtol (s, p, strtol_base); - if (errno != 0) - return LONGINT_OVERFLOW; - - if (*p == s) - { - /* If there is no number but there is a valid suffix, assume the - number is 1. The string is invalid otherwise. */ - if (valid_suffixes && **p && strchr (valid_suffixes, **p)) - tmp = 1; - else - return LONGINT_INVALID; - } - - /* Let valid_suffixes == NULL mean `allow any suffix'. */ - /* FIXME: update all callers except the ones that allow suffixes - after the number, changing last parameter NULL to `""'. */ - if (!valid_suffixes) - { - *val = tmp; - return LONGINT_OK; - } - - if (**p != '\0') - { - int base = 1024; - int suffixes = 1; - int overflow; - - if (!strchr (valid_suffixes, **p)) - { - *val = tmp; - return LONGINT_INVALID_SUFFIX_CHAR; - } - - if (strchr (valid_suffixes, '0')) - { - /* The ``valid suffix'' '0' is a special flag meaning that - an optional second suffix is allowed, which can change - the base. A suffix "B" (e.g. "100MB") stands for a power - of 1000, whereas a suffix "iB" (e.g. "100MiB") stands for - a power of 1024. If no suffix (e.g. "100M"), assume - power-of-1024. */ - - switch (p[0][1]) - { - case 'i': - if (p[0][2] == 'B') - suffixes += 2; - break; - - case 'B': - case 'D': /* 'D' is obsolescent */ - base = 1000; - suffixes++; - break; - } - } - - switch (**p) - { - case 'b': - overflow = bkm_scale (&tmp, 512); - break; - - case 'B': - overflow = bkm_scale (&tmp, 1024); - break; - - case 'c': - overflow = 0; - break; - - case 'E': /* exa or exbi */ - overflow = bkm_scale_by_power (&tmp, base, 6); - break; - - case 'G': /* giga or gibi */ - case 'g': /* 'g' is undocumented; for compatibility only */ - overflow = bkm_scale_by_power (&tmp, base, 3); - break; - - case 'k': /* kilo */ - case 'K': /* kibi */ - overflow = bkm_scale_by_power (&tmp, base, 1); - break; - - case 'M': /* mega or mebi */ - case 'm': /* 'm' is undocumented; for compatibility only */ - overflow = bkm_scale_by_power (&tmp, base, 2); - break; - - case 'P': /* peta or pebi */ - overflow = bkm_scale_by_power (&tmp, base, 5); - break; - - case 'T': /* tera or tebi */ - case 't': /* 't' is undocumented; for compatibility only */ - overflow = bkm_scale_by_power (&tmp, base, 4); - break; - - case 'w': - overflow = bkm_scale (&tmp, 2); - break; - - case 'Y': /* yotta or 2**80 */ - overflow = bkm_scale_by_power (&tmp, base, 8); - break; - - case 'Z': /* zetta or 2**70 */ - overflow = bkm_scale_by_power (&tmp, base, 7); - break; - - default: - *val = tmp; - return LONGINT_INVALID_SUFFIX_CHAR; - break; - } - - if (overflow) - return LONGINT_OVERFLOW; - - (*p) += suffixes; - } - - *val = tmp; - return LONGINT_OK; -} - -#ifdef TESTING_XSTRTO - -# include -# include "error.h" - -char *program_name; - -int -main (int argc, char** argv) -{ - strtol_error s_err; - int i; - - program_name = argv[0]; - for (i=1; i%lu (%s)\n", argv[i], val, p); - } - else - { - STRTOL_FATAL_ERROR (argv[i], "arg", s_err); - } - } - exit (0); -} - -#endif /* TESTING_XSTRTO */ diff --git a/src/bin/diffutils/lib/xstrtol.h b/src/bin/diffutils/lib/xstrtol.h deleted file mode 100644 index 513855f14e..0000000000 --- a/src/bin/diffutils/lib/xstrtol.h +++ /dev/null @@ -1,82 +0,0 @@ -/* A more useful interface to strtol. - Copyright 1995, 1996, 1998, 1999, 2001 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifndef XSTRTOL_H_ -# define XSTRTOL_H_ 1 - -# if HAVE_INTTYPES_H -# include /* for uintmax_t */ -# endif - -# ifndef PARAMS -# if defined PROTOTYPES || (defined __STDC__ && __STDC__) -# define PARAMS(Args) Args -# else -# define PARAMS(Args) () -# endif -# endif - -# ifndef _STRTOL_ERROR -enum strtol_error - { - LONGINT_OK, LONGINT_INVALID, LONGINT_INVALID_SUFFIX_CHAR, LONGINT_OVERFLOW - }; -typedef enum strtol_error strtol_error; -# endif - -# define _DECLARE_XSTRTOL(name, type) \ - strtol_error \ - name PARAMS ((const char *s, char **ptr, int base, \ - type *val, const char *valid_suffixes)); -_DECLARE_XSTRTOL (xstrtol, long int) -_DECLARE_XSTRTOL (xstrtoul, unsigned long int) -_DECLARE_XSTRTOL (xstrtoimax, intmax_t) -_DECLARE_XSTRTOL (xstrtoumax, uintmax_t) - -# define _STRTOL_ERROR(Exit_code, Str, Argument_type_string, Err) \ - do \ - { \ - switch ((Err)) \ - { \ - case LONGINT_OK: \ - abort (); \ - \ - case LONGINT_INVALID: \ - error ((Exit_code), 0, "invalid %s `%s'", \ - (Argument_type_string), (Str)); \ - break; \ - \ - case LONGINT_INVALID_SUFFIX_CHAR: \ - error ((Exit_code), 0, "invalid character following %s in `%s'", \ - (Argument_type_string), (Str)); \ - break; \ - \ - case LONGINT_OVERFLOW: \ - error ((Exit_code), 0, "%s `%s' too large", \ - (Argument_type_string), (Str)); \ - break; \ - } \ - } \ - while (0) - -# define STRTOL_FATAL_ERROR(Str, Argument_type_string, Err) \ - _STRTOL_ERROR (2, Str, Argument_type_string, Err) - -# define STRTOL_FAIL_WARN(Str, Argument_type_string, Err) \ - _STRTOL_ERROR (0, Str, Argument_type_string, Err) - -#endif /* not XSTRTOL_H_ */ diff --git a/src/bin/diffutils/lib/xstrtoumax.c b/src/bin/diffutils/lib/xstrtoumax.c deleted file mode 100644 index 04d7cf98ae..0000000000 --- a/src/bin/diffutils/lib/xstrtoumax.c +++ /dev/null @@ -1,31 +0,0 @@ -/* xstrtoumax.c -- A more useful interface to strtoumax. - Copyright 1999 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by Paul Eggert. */ - -#if HAVE_CONFIG_H -# include -#endif - -#if HAVE_INTTYPES_H -# include -#endif - -#define __strtol strtoumax -#define __strtol_t uintmax_t -#define __xstrtol xstrtoumax -#include "xstrtol.c" diff --git a/src/bin/diffutils/m4/Makefile b/src/bin/diffutils/m4/Makefile deleted file mode 100644 index 39f0d780b2..0000000000 --- a/src/bin/diffutils/m4/Makefile +++ /dev/null @@ -1,272 +0,0 @@ -# Makefile.in generated by automake 1.6 from Makefile.am. -# m4/Makefile. Generated from Makefile.in by configure. - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - -SHELL = /bin/sh - -srcdir = . -top_srcdir = .. - -prefix = /usr/local -exec_prefix = ${prefix} - -bindir = ${exec_prefix}/bin -sbindir = ${exec_prefix}/sbin -libexecdir = ${exec_prefix}/libexec -datadir = ${prefix}/share -sysconfdir = ${prefix}/etc -sharedstatedir = ${prefix}/com -localstatedir = ${prefix}/var -libdir = ${exec_prefix}/lib -infodir = ${prefix}/info -mandir = ${prefix}/man -includedir = ${prefix}/include -oldincludedir = /usr/include -pkgdatadir = $(datadir)/diffutils -pkglibdir = $(libdir)/diffutils -pkgincludedir = $(includedir)/diffutils -top_builddir = .. - -ACLOCAL = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run aclocal-1.6 -AUTOCONF = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoconf -AUTOMAKE = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run automake-1.6 -AUTOHEADER = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoheader - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = /bin/install -c -INSTALL_PROGRAM = ${INSTALL} -INSTALL_DATA = ${INSTALL} -m 644 -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -INSTALL_SCRIPT = ${INSTALL} -INSTALL_HEADER = $(INSTALL_DATA) -transform = s,x,x, -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = -host_triplet = i586-pc-beos - -EXEEXT = -OBJEXT = o -PATH_SEPARATOR = : -AMTAR = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run tar -AWK = gawk -BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ -CATOBJEXT = @CATOBJEXT@ -CC = gcc -CPP = gcc -E -DATADIRNAME = @DATADIRNAME@ -DEPDIR = .deps -GENCAT = @GENCAT@ -GLIBC21 = @GLIBC21@ -GMSGFMT = : -HAVE_LIB = @HAVE_LIB@ -HELP2MAN = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run help2man -INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s -INSTOBJEXT = @INSTOBJEXT@ -INTLBISON = @INTLBISON@ -INTLLIBS = -INTLOBJS = @INTLOBJS@ -INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -LIB = @LIB@ -LIBICONV = -LIBINTL = -LIB_CLOCK_GETTIME = -LTLIB = @LTLIB@ -LTLIBICONV = -LTLIBINTL = -MKINSTALLDIRS = config/mkinstalldirs -PACKAGE = diffutils -POSUB = -PR_PROGRAM = /bin/pr -RANLIB = ranlib -STRIP = -U = -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = no -VERSION = 2.8.1 -am__include = include -am__quote = -install_sh = /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/install-sh - -EXTRA_DIST = \ - README jm-glibc-io.m4 Makefile.am.in \ -c-bs-a.m4 \ -c-stack.m4 \ -check-decl.m4 \ -codeset.m4 \ -dos.m4 \ -error.m4 \ -fnmatch.m4 \ -gettext.m4 \ -glibc21.m4 \ -gnu-source.m4 \ -iconv.m4 \ -inttypes.m4 \ -jm-glibc-io.m4 \ -lcmessage.m4 \ -lib-ld.m4 \ -lib-link.m4 \ -lib-prefix.m4 \ -longlong.m4 \ -malloc.m4 \ -mbrtowc.m4 \ -mbstate_t.m4 \ -prereq.m4 \ -progtest.m4 \ -realloc.m4 \ -regex.m4 \ -setmode.m4 \ -st_mtim.m4 \ -stdbool.m4 \ -strftime.m4 \ -vararrays.m4 \ -xstrtoumax.m4 - -subdir = m4 -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -DIST_SOURCES = -DIST_COMMON = README Makefile.am Makefile.in -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits m4/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) -uninstall-info-am: -tags: TAGS -TAGS: - -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir)$$dir \ - || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile - -installdirs: - -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic mostlyclean-am - -distclean: distclean-am - -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic - -uninstall-am: uninstall-info-am - -.PHONY: all all-am check check-am clean clean-generic distclean \ - distclean-generic distdir dvi dvi-am info info-am install \ - install-am install-data install-data-am install-exec \ - install-exec-am install-info install-info-am install-man \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic uninstall uninstall-am uninstall-info-am - - -Makefile.am: Makefile.am.in - rm -f $@ $@t - sed -n '1,/^##m4-files-begin/p' $< > $@t - (((echo EXTRA_DIST =; \ - echo " README jm-glibc-io.m4 Makefile.am.in" \ - ) | tr '\012' @); \ - (echo *.m4|tr ' ' @) ) \ - |sed 's/@$$/%/;s/@/ \\@/g' |tr @% '\012\012' \ - >> $@t - sed -n '/^##m4-files-end/,$$p' $< >> $@t - chmod a-w $@t - mv $@t $@ -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/bin/diffutils/m4/Makefile.am b/src/bin/diffutils/m4/Makefile.am deleted file mode 100644 index ddf5373bbf..0000000000 --- a/src/bin/diffutils/m4/Makefile.am +++ /dev/null @@ -1,50 +0,0 @@ -## Process this file with automake to produce Makefile.in -*-Makefile-*- - -##m4-files-begin -EXTRA_DIST = \ - README jm-glibc-io.m4 Makefile.am.in \ -c-bs-a.m4 \ -c-stack.m4 \ -check-decl.m4 \ -codeset.m4 \ -dos.m4 \ -error.m4 \ -fnmatch.m4 \ -gettext.m4 \ -glibc21.m4 \ -gnu-source.m4 \ -iconv.m4 \ -inttypes.m4 \ -jm-glibc-io.m4 \ -lcmessage.m4 \ -lib-ld.m4 \ -lib-link.m4 \ -lib-prefix.m4 \ -longlong.m4 \ -malloc.m4 \ -mbrtowc.m4 \ -mbstate_t.m4 \ -prereq.m4 \ -progtest.m4 \ -realloc.m4 \ -regex.m4 \ -setmode.m4 \ -st_mtim.m4 \ -stdbool.m4 \ -strftime.m4 \ -vararrays.m4 \ -xstrtoumax.m4 -##m4-files-end - -Makefile.am: Makefile.am.in - rm -f $@ $@t - sed -n '1,/^##m4-files-begin/p' $< > $@t - (((echo EXTRA_DIST =; \ - echo " README jm-glibc-io.m4 Makefile.am.in" \ - ) | tr '\012' @); \ - (echo *.m4|tr ' ' @) ) \ - |sed 's/@$$/%/;s/@/ \\@/g' |tr @% '\012\012' \ - >> $@t - sed -n '/^##m4-files-end/,$$p' $< >> $@t - chmod a-w $@t - mv $@t $@ diff --git a/src/bin/diffutils/m4/Makefile.am.in b/src/bin/diffutils/m4/Makefile.am.in deleted file mode 100644 index de3ffff22a..0000000000 --- a/src/bin/diffutils/m4/Makefile.am.in +++ /dev/null @@ -1,17 +0,0 @@ -## Process this file with automake to produce Makefile.in -*-Makefile-*- - -##m4-files-begin -##m4-files-end - -Makefile.am: Makefile.am.in - rm -f $@ $@t - sed -n '1,/^##m4-files-begin/p' $< > $@t - (((echo EXTRA_DIST =; \ - echo " README jm-glibc-io.m4 Makefile.am.in" \ - ) | tr '\012' @); \ - (echo *.m4|tr ' ' @) ) \ - |sed 's/@$$/%/;s/@/ \\@/g' |tr @% '\012\012' \ - >> $@t - sed -n '/^##m4-files-end/,$$p' $< >> $@t - chmod a-w $@t - mv $@t $@ diff --git a/src/bin/diffutils/m4/Makefile.in b/src/bin/diffutils/m4/Makefile.in deleted file mode 100644 index d481ae7292..0000000000 --- a/src/bin/diffutils/m4/Makefile.in +++ /dev/null @@ -1,272 +0,0 @@ -# Makefile.in generated by automake 1.6 from Makefile.am. -# @configure_input@ - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_HEADER = $(INSTALL_DATA) -transform = @program_transform_name@ -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ - -EXEEXT = @EXEEXT@ -OBJEXT = @OBJEXT@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -AMTAR = @AMTAR@ -AWK = @AWK@ -BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -CPP = @CPP@ -DATADIRNAME = @DATADIRNAME@ -DEPDIR = @DEPDIR@ -GENCAT = @GENCAT@ -GLIBC21 = @GLIBC21@ -GMSGFMT = @GMSGFMT@ -HAVE_LIB = @HAVE_LIB@ -HELP2MAN = @HELP2MAN@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTOBJEXT = @INSTOBJEXT@ -INTLBISON = @INTLBISON@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ -INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -LIB = @LIB@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ -LTLIB = @LTLIB@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -PACKAGE = @PACKAGE@ -POSUB = @POSUB@ -PR_PROGRAM = @PR_PROGRAM@ -RANLIB = @RANLIB@ -STRIP = @STRIP@ -U = @U@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -am__include = @am__include@ -am__quote = @am__quote@ -install_sh = @install_sh@ - -EXTRA_DIST = \ - README jm-glibc-io.m4 Makefile.am.in \ -c-bs-a.m4 \ -c-stack.m4 \ -check-decl.m4 \ -codeset.m4 \ -dos.m4 \ -error.m4 \ -fnmatch.m4 \ -gettext.m4 \ -glibc21.m4 \ -gnu-source.m4 \ -iconv.m4 \ -inttypes.m4 \ -jm-glibc-io.m4 \ -lcmessage.m4 \ -lib-ld.m4 \ -lib-link.m4 \ -lib-prefix.m4 \ -longlong.m4 \ -malloc.m4 \ -mbrtowc.m4 \ -mbstate_t.m4 \ -prereq.m4 \ -progtest.m4 \ -realloc.m4 \ -regex.m4 \ -setmode.m4 \ -st_mtim.m4 \ -stdbool.m4 \ -strftime.m4 \ -vararrays.m4 \ -xstrtoumax.m4 - -subdir = m4 -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -DIST_SOURCES = -DIST_COMMON = README Makefile.am Makefile.in -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits m4/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) -uninstall-info-am: -tags: TAGS -TAGS: - -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir)$$dir \ - || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile - -installdirs: - -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic mostlyclean-am - -distclean: distclean-am - -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic - -uninstall-am: uninstall-info-am - -.PHONY: all all-am check check-am clean clean-generic distclean \ - distclean-generic distdir dvi dvi-am info info-am install \ - install-am install-data install-data-am install-exec \ - install-exec-am install-info install-info-am install-man \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic uninstall uninstall-am uninstall-info-am - - -Makefile.am: Makefile.am.in - rm -f $@ $@t - sed -n '1,/^##m4-files-begin/p' $< > $@t - (((echo EXTRA_DIST =; \ - echo " README jm-glibc-io.m4 Makefile.am.in" \ - ) | tr '\012' @); \ - (echo *.m4|tr ' ' @) ) \ - |sed 's/@$$/%/;s/@/ \\@/g' |tr @% '\012\012' \ - >> $@t - sed -n '/^##m4-files-end/,$$p' $< >> $@t - chmod a-w $@t - mv $@t $@ -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/bin/diffutils/m4/README b/src/bin/diffutils/m4/README deleted file mode 100644 index d2c7724eba..0000000000 --- a/src/bin/diffutils/m4/README +++ /dev/null @@ -1,10 +0,0 @@ -Many of the files in this directory are taken from the fileutils, -shellutils, and textutils packages. - -These files are used by a program called aclocal (part of the GNU automake -package). aclocal uses these files to create aclocal.m4 which is in turn -used by autoconf to create the configure script at the top level in -this distribution. - -The Makefile.am file in this directory is automatically generated -from the template file, Makefile.am.in. diff --git a/src/bin/diffutils/m4/c-bs-a.m4 b/src/bin/diffutils/m4/c-bs-a.m4 deleted file mode 100644 index 6e0863e4e0..0000000000 --- a/src/bin/diffutils/m4/c-bs-a.m4 +++ /dev/null @@ -1,23 +0,0 @@ -#serial 4 - -dnl From Paul Eggert. - -AC_DEFUN([AC_C_BACKSLASH_A], -[ - AC_CACHE_CHECK([whether backslash-a works in strings], ac_cv_c_backslash_a, - [AC_TRY_COMPILE([], - [ -#if '\a' == 'a' - syntax error; -#endif - char buf['\a' == 'a' ? -1 : 1]; - buf[0] = '\a'; - return buf[0] != "\a"[0]; - ], - ac_cv_c_backslash_a=yes, - ac_cv_c_backslash_a=no)]) - if test $ac_cv_c_backslash_a = yes; then - AC_DEFINE(HAVE_C_BACKSLASH_A, 1, - [Define if backslash-a works in C strings.]) - fi -]) diff --git a/src/bin/diffutils/m4/c-stack.m4 b/src/bin/diffutils/m4/c-stack.m4 deleted file mode 100644 index 0599d5023f..0000000000 --- a/src/bin/diffutils/m4/c-stack.m4 +++ /dev/null @@ -1,131 +0,0 @@ -# Check prerequisites for compiling lib/c-stack.c. - -# Copyright (C) 2002 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -AC_DEFUN([AC_SYS_XSI_STACK_OVERFLOW_HEURISTIC], - [# for STACK_DIRECTION - AC_REQUIRE([AC_FUNC_ALLOCA]) - - AC_CACHE_CHECK([for working C stack overflow detection], - ac_cv_sys_xsi_stack_overflow_heuristic, - [AC_TRY_RUN( - [ - #include - #include - - static union - { - char buffer[SIGSTKSZ]; - long double ld; - uintmax_t u; - void *p; - } alternate_signal_stack; - - #if STACK_DIRECTION - # define find_stack_direction(ptr) STACK_DIRECTION - #else - static int - find_stack_direction (char const *addr) - { - char dummy; - return (! addr ? find_stack_direction (&dummy) - : addr < &dummy ? 1 : -1); - } - #endif - - static void - segv_handler (int signo, siginfo_t *info, void *context) - { - if (0 < info->si_code) - { - ucontext_t const *user_context = context; - char const *stack_min = user_context->uc_stack.ss_sp; - size_t stack_size = user_context->uc_stack.ss_size; - char const *faulting_address = info->si_addr; - size_t s = faulting_address - stack_min; - size_t page_size = sysconf (_SC_PAGESIZE); - if (find_stack_direction (0) < 0) - s += page_size; - if (s < stack_size + page_size) - _exit (0); - } - - _exit (1); - } - - static int - c_stack_action (void) - { - stack_t st; - struct sigaction act; - int r; - - st.ss_flags = 0; - st.ss_sp = alternate_signal_stack.buffer; - st.ss_size = sizeof alternate_signal_stack.buffer; - r = sigaltstack (&st, 0); - if (r != 0) - return r; - - sigemptyset (&act.sa_mask); - act.sa_flags = SA_NODEFER | SA_ONSTACK | SA_RESETHAND | SA_SIGINFO; - act.sa_sigaction = segv_handler; - return sigaction (SIGSEGV, &act, 0); - } - - static int - recurse (char *p) - { - char array[500]; - array[0] = 1; - return *p + recurse (array); - } - - int - main (void) - { - c_stack_action (); - return recurse ("\1"); - } - ], - [ac_cv_sys_xsi_stack_overflow_heuristic=yes], - [ac_cv_sys_xsi_stack_overflow_heuristic=no], - [ac_cv_sys_xsi_stack_overflow_heuristic=cross-compiling])]) - - if test $ac_cv_sys_xsi_stack_overflow_heuristic = yes; then - AC_DEFINE(HAVE_XSI_STACK_OVERFLOW_HEURISTIC, 1, - [Define to 1 if extending the stack slightly past the limit causes - a SIGSEGV, and an alternate stack can be established with sigaltstack, - and the signal handler is passed a context that specifies the - run time stack. This behavior is defined by POSIX 1003.1-2001 - with the X/Open System Interface (XSI) option - and is a standardized way to implement a SEGV-based stack - overflow detection heuristic.]) - fi]) - - -AC_DEFUN([jm_PREREQ_C_STACK], - [AC_REQUIRE([jm_AC_TYPE_UINTMAX_T]) - AC_REQUIRE([AC_SYS_XSI_STACK_OVERFLOW_HEURISTIC]) - - # for STACK_DIRECTION - AC_REQUIRE([AC_FUNC_ALLOCA]) - - AC_CHECK_HEADERS(unistd.h) - - AC_CHECK_TYPES([siginfo_t, stack_t], , , [#include ])]) diff --git a/src/bin/diffutils/m4/check-decl.m4 b/src/bin/diffutils/m4/check-decl.m4 deleted file mode 100644 index b374705a02..0000000000 --- a/src/bin/diffutils/m4/check-decl.m4 +++ /dev/null @@ -1,85 +0,0 @@ -#serial 18 - -dnl This is just a wrapper function to encapsulate this kludge. -dnl Putting it in a separate file like this helps share it between -dnl different packages. -AC_DEFUN([jm_CHECK_DECLS], -[ - AC_REQUIRE([_jm_DECL_HEADERS]) - AC_REQUIRE([AC_HEADER_TIME]) - headers=' -#include -#if HAVE_STRING_H -# if !STDC_HEADERS && HAVE_MEMORY_H -# include -# endif -# include -#else -# if HAVE_STRINGS_H -# include -# endif -#endif -#if HAVE_STDLIB_H -# include -#endif -#if HAVE_UNISTD_H -# include -#endif - -#include -#if TIME_WITH_SYS_TIME -# include -# include -#else -# if HAVE_SYS_TIME_H -# include -# else -# include -# endif -#endif - -#if HAVE_UTMP_H -# include -#endif - -#if HAVE_GRP_H -# include -#endif - -#if HAVE_PWD_H -# include -#endif -' - - AC_CHECK_DECLS([ - free, - getenv, - geteuid, - getgrgid, - getlogin, - getpwuid, - getuid, - getutent, - lseek, - malloc, - memchr, - memrchr, - nanosleep, - realloc, - stpcpy, - strndup, - strnlen, - strstr, - strtoul, - strtoull, - ttyname], , , $headers) -]) - -dnl FIXME: when autoconf has support for it. -dnl This is a little helper so we can require these header checks. -AC_DEFUN([_jm_DECL_HEADERS], -[ - AC_REQUIRE([AC_HEADER_STDC]) - AC_CHECK_HEADERS(grp.h memory.h pwd.h string.h strings.h stdlib.h \ - unistd.h sys/time.h utmp.h utmpx.h) -]) diff --git a/src/bin/diffutils/m4/codeset.m4 b/src/bin/diffutils/m4/codeset.m4 deleted file mode 100644 index 59535ebcff..0000000000 --- a/src/bin/diffutils/m4/codeset.m4 +++ /dev/null @@ -1,23 +0,0 @@ -# codeset.m4 serial AM1 (gettext-0.10.40) -dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -AC_DEFUN([AM_LANGINFO_CODESET], -[ - AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, - [AC_TRY_LINK([#include ], - [char* cs = nl_langinfo(CODESET);], - am_cv_langinfo_codeset=yes, - am_cv_langinfo_codeset=no) - ]) - if test $am_cv_langinfo_codeset = yes; then - AC_DEFINE(HAVE_LANGINFO_CODESET, 1, - [Define if you have and nl_langinfo(CODESET).]) - fi -]) diff --git a/src/bin/diffutils/m4/dos.m4 b/src/bin/diffutils/m4/dos.m4 deleted file mode 100644 index 868626e7e5..0000000000 --- a/src/bin/diffutils/m4/dos.m4 +++ /dev/null @@ -1,53 +0,0 @@ -#serial 5 - -# Define some macros required for proper operation of code in lib/*.c -# on MSDOS/Windows systems. - -# From Jim Meyering. - -AC_DEFUN([jm_AC_DOS], - [ - AC_CACHE_CHECK([whether system is Windows or MSDOS], [ac_cv_win_or_dos], - [ - AC_TRY_COMPILE([], - [#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ -neither MSDOS nor Windows -#endif], - [ac_cv_win_or_dos=yes], - [ac_cv_win_or_dos=no]) - ]) - - if test x"$ac_cv_win_or_dos" = xyes; then - ac_fs_accepts_drive_letter_prefix=1 - ac_fs_backslash_is_file_name_separator=1 - else - ac_fs_accepts_drive_letter_prefix=0 - ac_fs_backslash_is_file_name_separator=0 - fi - - AH_VERBATIM(FILESYSTEM_PREFIX_LEN, - [#if FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX -# define FILESYSTEM_PREFIX_LEN(Filename) \ - ((Filename)[0] && (Filename)[1] == ':' ? 2 : 0) -#else -# define FILESYSTEM_PREFIX_LEN(Filename) 0 -#endif]) - - AC_DEFINE_UNQUOTED([FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX], - $ac_fs_accepts_drive_letter_prefix, - [Define on systems for which file names may have a so-called - `drive letter' prefix, define this to compute the length of that - prefix, including the colon.]) - - AH_VERBATIM(ISSLASH, - [#if FILESYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR -# define ISSLASH(C) ((C) == '/' || (C) == '\\') -#else -# define ISSLASH(C) ((C) == '/') -#endif]) - - AC_DEFINE_UNQUOTED([FILESYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR], - $ac_fs_backslash_is_file_name_separator, - [Define if the backslash character may also serve as a file name - component separator.]) - ]) diff --git a/src/bin/diffutils/m4/error.m4 b/src/bin/diffutils/m4/error.m4 deleted file mode 100644 index 3fddb5c111..0000000000 --- a/src/bin/diffutils/m4/error.m4 +++ /dev/null @@ -1,13 +0,0 @@ -#serial 4 - -dnl FIXME: put these prerequisite-only *.m4 files in a separate -dnl directory -- otherwise, they'll conflict with existing files. - -dnl These are the prerequisite macros for GNU's error.c file. -AC_DEFUN([jm_PREREQ_ERROR], -[ - AC_CHECK_FUNCS(strerror vprintf doprnt) - AC_CHECK_DECLS([strerror]) - AC_FUNC_STRERROR_R - AC_HEADER_STDC -]) diff --git a/src/bin/diffutils/m4/fnmatch.m4 b/src/bin/diffutils/m4/fnmatch.m4 deleted file mode 100644 index 8132456bb6..0000000000 --- a/src/bin/diffutils/m4/fnmatch.m4 +++ /dev/null @@ -1,47 +0,0 @@ -# Check for fnmatch. - -# This is a modified version of autoconf's AC_FUNC_FNMATCH; -# it also checks for FNM_CASEFOLD or FNM_IGNORECASE. - -# Copyright (C) 2000, 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# AC_FUNC_FNMATCH -# --------------- -# We look for fnmatch.h to avoid that the test fails in C++. -AC_DEFUN([AC_FUNC_FNMATCH], -[AC_CACHE_CHECK([for working GNU-style fnmatch], - [ac_cv_func_fnmatch_works], -# Some versions of Solaris, SCO, and the GNU C Library -# have a broken or incompatible fnmatch. -# So we run a test program. If we are cross-compiling, take no chance. -# Thanks to John Oleynick, Franc,ois Pinard, and Paul Eggert for this test. -[AC_RUN_IFELSE([AC_LANG_PROGRAM([@%:@include ], - [exit (fnmatch ("a*", "abc", 0) != 0 - || fnmatch ("xxXX", "xXxX", FNM_CASEFOLD) != 0 - || fnmatch ("d*/*1", "d/s/1", FNM_FILE_NAME) != FNM_NOMATCH - || fnmatch ("*", "x", FNM_FILE_NAME | FNM_LEADING_DIR) != 0 - || fnmatch ("x*", "x/y/z", FNM_FILE_NAME | FNM_LEADING_DIR) != 0 - || fnmatch ("*c*", "c/x", FNM_FILE_NAME | FNM_LEADING_DIR) != 0);])], - [ac_cv_func_fnmatch_works=yes], - [ac_cv_func_fnmatch_works=no], - [ac_cv_func_fnmatch_works=no])]) -if test $ac_cv_func_fnmatch_works = yes; then - AC_DEFINE(HAVE_FNMATCH, 1, - [Define to 1 if your system has a working `fnmatch' function.]) -fi -])# AC_FUNC_FNMATCH diff --git a/src/bin/diffutils/m4/gettext.m4 b/src/bin/diffutils/m4/gettext.m4 deleted file mode 100644 index 520f973d8d..0000000000 --- a/src/bin/diffutils/m4/gettext.m4 +++ /dev/null @@ -1,541 +0,0 @@ -# gettext.m4 serial 13 (gettext-0.11.1) -dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper , 1995-2000. -dnl Bruno Haible , 2000-2002. - -dnl Macro to add for using GNU gettext. - -dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). -dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The -dnl default (if it is not specified or empty) is 'no-libtool'. -dnl INTLSYMBOL should be 'external' for packages with no intl directory, -dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. -dnl If INTLSYMBOL is 'use-libtool', then a libtool library -dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, -dnl depending on --{enable,disable}-{shared,static} and on the presence of -dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library -dnl $(top_builddir)/intl/libintl.a will be created. -dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext -dnl implementations (in libc or libintl) without the ngettext() function -dnl will be ignored. -dnl INTLDIR is used to find the intl libraries. If empty, -dnl the value `$(top_builddir)/intl/' is used. -dnl -dnl The result of the configuration is one of three cases: -dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled -dnl and used. -dnl Catalog format: GNU --> install in $(datadir) -dnl Catalog extension: .mo after installation, .gmo in source tree -dnl 2) GNU gettext has been found in the system's C library. -dnl Catalog format: GNU --> install in $(datadir) -dnl Catalog extension: .mo after installation, .gmo in source tree -dnl 3) No internationalization, always use English msgid. -dnl Catalog format: none -dnl Catalog extension: none -dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. -dnl The use of .gmo is historical (it was needed to avoid overwriting the -dnl GNU format catalogs when building on a platform with an X/Open gettext), -dnl but we keep it in order not to force irrelevant filename changes on the -dnl maintainers. -dnl -AC_DEFUN([AM_GNU_GETTEXT], -[ - dnl Argument checking. - ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , - [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT -])])])])]) - ifelse([$2], [], , [ifelse([$2], [need-ngettext], , - [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT -])])]) - define(gt_included_intl, ifelse([$1], [external], [no], [yes])) - define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], [])) - - AC_REQUIRE([AM_PO_SUBDIRS])dnl - ifelse(gt_included_intl, yes, [ - AC_REQUIRE([AM_INTL_SUBDIR])dnl - ]) - - dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - - AC_MSG_CHECKING([whether NLS is requested]) - dnl Default is enabled NLS - AC_ARG_ENABLE(nls, - [ --disable-nls do not use Native Language Support], - USE_NLS=$enableval, USE_NLS=yes) - AC_MSG_RESULT($USE_NLS) - AC_SUBST(USE_NLS) - - ifelse(gt_included_intl, yes, [ - BUILD_INCLUDED_LIBINTL=no - USE_INCLUDED_LIBINTL=no - ]) - LIBINTL= - LTLIBINTL= - POSUB= - - dnl If we use NLS figure out what method - if test "$USE_NLS" = "yes"; then - gt_use_preinstalled_gnugettext=no - ifelse(gt_included_intl, yes, [ - AC_MSG_CHECKING([whether included gettext is requested]) - AC_ARG_WITH(included-gettext, - [ --with-included-gettext use the GNU gettext library included here], - nls_cv_force_use_gnu_gettext=$withval, - nls_cv_force_use_gnu_gettext=no) - AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) - - nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" - if test "$nls_cv_force_use_gnu_gettext" != "yes"; then - ]) - dnl User does not insist on using GNU NLS library. Figure out what - dnl to use. If GNU gettext is available we use this. Else we have - dnl to fall back to GNU NLS library. - - dnl Add a version number to the cache macros. - define([gt_api_version], ifelse([$2], [need-ngettext], 2, 1)) - define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) - define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) - - AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, - [AC_TRY_LINK([#include -extern int _nl_msg_cat_cntr; -extern int *_nl_domain_bindings;], - [bindtextdomain ("", ""); -return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], - gt_cv_func_gnugettext_libc=yes, - gt_cv_func_gnugettext_libc=no)]) - - if test "$gt_cv_func_gnugettext_libc" != "yes"; then - dnl Sometimes libintl requires libiconv, so first search for libiconv. - ifelse(gt_included_intl, yes, , [ - AM_ICONV_LINK - ]) - dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL - dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) - dnl because that would add "-liconv" to LIBINTL and LTLIBINTL - dnl even if libiconv doesn't exist. - AC_LIB_LINKFLAGS_BODY([intl]) - AC_CACHE_CHECK([for GNU gettext in libintl], - gt_cv_func_gnugettext_libintl, - [gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $INCINTL" - gt_save_LIBS="$LIBS" - LIBS="$LIBS $LIBINTL" - dnl Now see whether libintl exists and does not depend on libiconv. - AC_TRY_LINK([#include -extern int _nl_msg_cat_cntr; -extern int *_nl_domain_bindings; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias ();], - [bindtextdomain ("", ""); -return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings + *_nl_expand_alias (0)], - gt_cv_func_gnugettext_libintl=yes, - gt_cv_func_gnugettext_libintl=no) - dnl Now see whether libintl exists and depends on libiconv. - if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then - LIBS="$LIBS $LIBICONV" - AC_TRY_LINK([#include -extern int _nl_msg_cat_cntr; -extern int *_nl_domain_bindings; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias ();], - [bindtextdomain ("", ""); -return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings + *_nl_expand_alias (0)], - [LIBINTL="$LIBINTL $LIBICONV" - LTLIBINTL="$LTLIBINTL $LTLIBICONV" - gt_cv_func_gnugettext_libintl=yes - ]) - fi - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS"]) - fi - - dnl If an already present or preinstalled GNU gettext() is found, - dnl use it. But if this macro is used in GNU gettext, and GNU - dnl gettext is already preinstalled in libintl, we update this - dnl libintl. (Cf. the install rule in intl/Makefile.in.) - if test "$gt_cv_func_gnugettext_libc" = "yes" \ - || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ - && test "$PACKAGE" != gettext; }; then - gt_use_preinstalled_gnugettext=yes - else - dnl Reset the values set by searching for libintl. - LIBINTL= - LTLIBINTL= - INCINTL= - fi - - ifelse(gt_included_intl, yes, [ - if test "$gt_use_preinstalled_gnugettext" != "yes"; then - dnl GNU gettext is not found in the C library. - dnl Fall back on included GNU gettext library. - nls_cv_use_gnu_gettext=yes - fi - fi - - if test "$nls_cv_use_gnu_gettext" = "yes"; then - dnl Mark actions used to generate GNU NLS library. - INTLOBJS="\$(GETTOBJS)" - BUILD_INCLUDED_LIBINTL=yes - USE_INCLUDED_LIBINTL=yes - LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" - LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" - LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` - fi - - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - dnl Mark actions to use GNU gettext tools. - CATOBJEXT=.gmo - fi - ]) - - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - AC_DEFINE(ENABLE_NLS, 1, - [Define to 1 if translation of program messages to the user's native language - is requested.]) - else - USE_NLS=no - fi - fi - - if test "$USE_NLS" = "yes"; then - - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if test "$gt_cv_func_gnugettext_libintl" = "yes"; then - AC_MSG_CHECKING([how to link with libintl]) - AC_MSG_RESULT([$LIBINTL]) - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) - fi - - dnl For backward compatibility. Some packages may be using this. - AC_DEFINE(HAVE_GETTEXT, 1, - [Define if the GNU gettext() function is already present or preinstalled.]) - AC_DEFINE(HAVE_DCGETTEXT, 1, - [Define if the GNU dcgettext() function is already present or preinstalled.]) - fi - - dnl We need to process the po/ directory. - POSUB=po - fi - - ifelse(gt_included_intl, yes, [ - dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL - dnl to 'yes' because some of the testsuite requires it. - if test "$PACKAGE" = gettext; then - BUILD_INCLUDED_LIBINTL=yes - fi - - dnl Make all variables we use known to autoconf. - AC_SUBST(BUILD_INCLUDED_LIBINTL) - AC_SUBST(USE_INCLUDED_LIBINTL) - AC_SUBST(CATOBJEXT) - AC_SUBST(INTLOBJS) - - dnl For backward compatibility. Some configure.ins may be using this. - nls_cv_header_intl= - nls_cv_header_libgt= - - dnl For backward compatibility. Some Makefiles may be using this. - DATADIRNAME=share - AC_SUBST(DATADIRNAME) - - dnl For backward compatibility. Some Makefiles may be using this. - INSTOBJEXT=.mo - AC_SUBST(INSTOBJEXT) - - dnl For backward compatibility. Some Makefiles may be using this. - GENCAT=gencat - AC_SUBST(GENCAT) - - dnl Enable libtool support if the surrounding package wishes it. - INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix - AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) - ]) - - dnl For backward compatibility. Some Makefiles may be using this. - INTLLIBS="$LIBINTL" - AC_SUBST(INTLLIBS) - - dnl Make all documented variables known to autoconf. - AC_SUBST(LIBINTL) - AC_SUBST(LTLIBINTL) - AC_SUBST(POSUB) -]) - - -dnl Checks for all prerequisites of the po subdirectory, -dnl except for USE_NLS. -AC_DEFUN([AM_PO_SUBDIRS], -[ - AC_REQUIRE([AC_PROG_MAKE_SET])dnl - AC_REQUIRE([AC_PROG_INSTALL])dnl - AC_REQUIRE([AM_MKINSTALLDIRS])dnl - - dnl Perform the following tests also if --disable-nls has been given, - dnl because they are needed for "make dist" to work. - - dnl Search for GNU msgfmt in the PATH. - dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. - dnl The second test excludes FreeBSD msgfmt. - AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, - [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && - (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], - :) - AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) - - dnl Search for GNU xgettext 0.11 or newer in the PATH. - dnl The first test excludes Solaris xgettext and early GNU xgettext versions. - dnl The second test excludes FreeBSD xgettext. - AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, - [$ac_dir/$ac_word --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && - (if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], - :) - dnl Remove leftover from FreeBSD xgettext call. - rm -f messages.po - - dnl Search for GNU msgmerge 0.11 or newer in the PATH. - AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, - [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :) - - dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. - dnl Test whether we really found GNU msgfmt. - if test "$GMSGFMT" != ":"; then - dnl If it is no GNU msgfmt we define it as : so that the - dnl Makefiles still can work. - if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && - (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` - AC_MSG_RESULT( - [found $GMSGFMT program is not GNU msgfmt; ignore it]) - GMSGFMT=":" - fi - fi - - dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. - dnl Test whether we really found GNU xgettext. - if test "$XGETTEXT" != ":"; then - dnl If it is no GNU xgettext we define it as : so that the - dnl Makefiles still can work. - if $XGETTEXT --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && - (if $XGETTEXT --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - AC_MSG_RESULT( - [found xgettext program is not GNU xgettext; ignore it]) - XGETTEXT=":" - fi - dnl Remove leftover from FreeBSD xgettext call. - rm -f messages.po - fi - - AC_OUTPUT_COMMANDS([ - for ac_file in $CONFIG_FILES; do - # Support "outfile[:infile[:infile...]]" - case "$ac_file" in - *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - esac - # PO directories have a Makefile.in generated from Makefile.in.in. - case "$ac_file" in */Makefile.in) - # Adjust a relative srcdir. - ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" - ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - # In autoconf-2.13 it is called $ac_given_srcdir. - # In autoconf-2.50 it is called $srcdir. - test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" - case "$ac_given_srcdir" in - .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then - rm -f "$ac_dir/POTFILES" - test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" - cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" - # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend - # on $ac_dir but don't depend on user-specified configuration - # parameters. - if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then - # The LINGUAS file contains the set of available languages. - if test -n "$ALL_LINGUAS"; then - test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" - fi - ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` - # Hide the ALL_LINGUAS assigment from automake. - eval 'ALL_LINGUAS''=$ALL_LINGUAS_' - fi - case "$ac_given_srcdir" in - .) srcdirpre= ;; - *) srcdirpre='$(srcdir)/' ;; - esac - POFILES= - GMOFILES= - UPDATEPOFILES= - DUMMYPOFILES= - for lang in $ALL_LINGUAS; do - POFILES="$POFILES $srcdirpre$lang.po" - GMOFILES="$GMOFILES $srcdirpre$lang.gmo" - UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" - DUMMYPOFILES="$DUMMYPOFILES $lang.nop" - done - # CATALOGS depends on both $ac_dir and the user's LINGUAS - # environment variable. - INST_LINGUAS= - if test -n "$ALL_LINGUAS"; then - for presentlang in $ALL_LINGUAS; do - useit=no - if test "%UNSET%" != "$LINGUAS"; then - desiredlanguages="$LINGUAS" - else - desiredlanguages="$ALL_LINGUAS" - fi - for desiredlang in $desiredlanguages; do - # Use the presentlang catalog if desiredlang is - # a. equal to presentlang, or - # b. a variant of presentlang (because in this case, - # presentlang can be used as a fallback for messages - # which are not translated in the desiredlang catalog). - case "$desiredlang" in - "$presentlang"*) useit=yes;; - esac - done - if test $useit = yes; then - INST_LINGUAS="$INST_LINGUAS $presentlang" - fi - done - fi - CATALOGS= - if test -n "$INST_LINGUAS"; then - for lang in $INST_LINGUAS; do - CATALOGS="$CATALOGS $lang.gmo" - done - fi - test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" - sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" - for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do - if test -f "$f"; then - case "$f" in - *.orig | *.bak | *~) ;; - *) cat "$f" >> "$ac_dir/Makefile" ;; - esac - fi - done - fi - ;; - esac - done], - [# Capture the value of obsolete $ALL_LINGUAS because we need it to compute - # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it - # from automake. - eval 'ALL_LINGUAS''="$ALL_LINGUAS"' - # Capture the value of LINGUAS because we need it to compute CATALOGS. - LINGUAS="${LINGUAS-%UNSET%}" - ]) -]) - - -dnl Checks for all prerequisites of the intl subdirectory, -dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, -dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. -AC_DEFUN([AM_INTL_SUBDIR], -[ - AC_REQUIRE([AC_PROG_INSTALL])dnl - AC_REQUIRE([AM_MKINSTALLDIRS])dnl - AC_REQUIRE([AC_PROG_CC])dnl - AC_REQUIRE([AC_CANONICAL_HOST])dnl - AC_REQUIRE([AC_PROG_RANLIB])dnl - AC_REQUIRE([AC_ISC_POSIX])dnl - AC_REQUIRE([AC_HEADER_STDC])dnl - AC_REQUIRE([AC_C_CONST])dnl - AC_REQUIRE([AC_C_INLINE])dnl - AC_REQUIRE([AC_TYPE_OFF_T])dnl - AC_REQUIRE([AC_TYPE_SIZE_T])dnl - AC_REQUIRE([AC_FUNC_ALLOCA])dnl - AC_REQUIRE([AC_FUNC_MMAP])dnl - AC_REQUIRE([jm_GLIBC21])dnl - - AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ -stdlib.h string.h unistd.h sys/param.h]) - AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ -geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ -strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next]) - - AM_ICONV - AM_LANGINFO_CODESET - AM_LC_MESSAGES - - dnl intl/plural.c is generated from intl/plural.y. It requires bison, - dnl because plural.y uses bison specific features. It requires at least - dnl bison-1.26 because earlier versions generate a plural.c that doesn't - dnl compile. - dnl bison is only needed for the maintainer (who touches plural.y). But in - dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put - dnl the rule in general Makefile. Now, some people carelessly touch the - dnl files or have a broken "make" program, hence the plural.c rule will - dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not - dnl present or too old. - AC_CHECK_PROGS([INTLBISON], [bison]) - if test -z "$INTLBISON"; then - ac_verc_fail=yes - else - dnl Found it, now check the version. - AC_MSG_CHECKING([version of bison]) -changequote(<<,>>)dnl - ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) -changequote([,])dnl - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - esac - AC_MSG_RESULT([$ac_prog_version]) - fi - if test $ac_verc_fail = yes; then - INTLBISON=: - fi -]) - - -AC_DEFUN([AM_MKINSTALLDIRS], -[ - dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly - dnl find the mkinstalldirs script in another subdir but $(top_srcdir). - dnl Try to locate is. - MKINSTALLDIRS= - if test -n "$ac_aux_dir"; then - MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" - fi - if test -z "$MKINSTALLDIRS"; then - MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" - fi - AC_SUBST(MKINSTALLDIRS) -]) diff --git a/src/bin/diffutils/m4/glibc21.m4 b/src/bin/diffutils/m4/glibc21.m4 deleted file mode 100644 index 9c9f3db303..0000000000 --- a/src/bin/diffutils/m4/glibc21.m4 +++ /dev/null @@ -1,32 +0,0 @@ -# glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40) -dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -# Test for the GNU C Library, version 2.1 or newer. -# From Bruno Haible. - -AC_DEFUN([jm_GLIBC21], - [ - AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, - ac_cv_gnu_library_2_1, - [AC_EGREP_CPP([Lucky GNU user], - [ -#include -#ifdef __GNU_LIBRARY__ - #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) - Lucky GNU user - #endif -#endif - ], - ac_cv_gnu_library_2_1=yes, - ac_cv_gnu_library_2_1=no) - ] - ) - AC_SUBST(GLIBC21) - GLIBC21="$ac_cv_gnu_library_2_1" - ] -) diff --git a/src/bin/diffutils/m4/gnu-source.m4 b/src/bin/diffutils/m4/gnu-source.m4 deleted file mode 100644 index d2f490b0d6..0000000000 --- a/src/bin/diffutils/m4/gnu-source.m4 +++ /dev/null @@ -1,25 +0,0 @@ -#serial 3 -# Make sure _GNU_SOURCE is defined where necessary: as early as possible -# for configure-time tests, as well as for every source file that includes -# config.h. - -# From Jim Meyering. - -AC_DEFUN([AC__GNU_SOURCE], -[ - # Make sure that _GNU_SOURCE is defined for all subsequent - # configure-time compile tests. - # This definition must be emitted (into confdefs.h) before any - # test that involves compilation. - cat >>confdefs.h <<\EOF -#ifndef _GNU_SOURCE -# define _GNU_SOURCE -#endif -EOF - - # Emit this code into config.h.in. - # The ifndef is to avoid redefinition warnings. - AH_VERBATIM([_GNU_SOURCE], [#ifndef _GNU_SOURCE -# define _GNU_SOURCE -#endif]) -]) diff --git a/src/bin/diffutils/m4/iconv.m4 b/src/bin/diffutils/m4/iconv.m4 deleted file mode 100644 index f81e8b995f..0000000000 --- a/src/bin/diffutils/m4/iconv.m4 +++ /dev/null @@ -1,96 +0,0 @@ -# iconv.m4 serial AM3 (gettext-0.11) -dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -AC_DEFUN([AM_ICONV_LINK], -[ - dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and - dnl those with the standalone portable GNU libiconv installed). - - dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - - dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV - dnl accordingly. - AC_LIB_LINKFLAGS_BODY([iconv]) - - dnl Add $INCICONV to CPPFLAGS before performing the following checks, - dnl because if the user has installed libiconv and not disabled its use - dnl via --without-libiconv-prefix, he wants to use it. The first - dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. - am_save_CPPFLAGS="$CPPFLAGS" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) - - AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ - am_cv_func_iconv="no, consider installing GNU libiconv" - am_cv_lib_iconv=no - AC_TRY_LINK([#include -#include ], - [iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd);], - am_cv_func_iconv=yes) - if test "$am_cv_func_iconv" != yes; then - am_save_LIBS="$LIBS" - LIBS="$LIBS $LIBICONV" - AC_TRY_LINK([#include -#include ], - [iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd);], - am_cv_lib_iconv=yes - am_cv_func_iconv=yes) - LIBS="$am_save_LIBS" - fi - ]) - if test "$am_cv_func_iconv" = yes; then - AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) - fi - if test "$am_cv_lib_iconv" = yes; then - AC_MSG_CHECKING([how to link with libiconv]) - AC_MSG_RESULT([$LIBICONV]) - else - dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV - dnl either. - CPPFLAGS="$am_save_CPPFLAGS" - LIBICONV= - LTLIBICONV= - fi - AC_SUBST(LIBICONV) - AC_SUBST(LTLIBICONV) -]) - -AC_DEFUN([AM_ICONV], -[ - AC_REQUIRE([AM_ICONV_LINK]) - if test "$am_cv_func_iconv" = yes; then - AC_MSG_CHECKING([for iconv declaration]) - AC_CACHE_VAL(am_cv_proto_iconv, [ - AC_TRY_COMPILE([ -#include -#include -extern -#ifdef __cplusplus -"C" -#endif -#if defined(__STDC__) || defined(__cplusplus) -size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); -#else -size_t iconv(); -#endif -], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") - am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) - am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` - AC_MSG_RESULT([$]{ac_t:- - }[$]am_cv_proto_iconv) - AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, - [Define as const if the declaration of iconv() needs const.]) - fi -]) diff --git a/src/bin/diffutils/m4/inttypes.m4 b/src/bin/diffutils/m4/inttypes.m4 deleted file mode 100644 index 9571814f53..0000000000 --- a/src/bin/diffutils/m4/inttypes.m4 +++ /dev/null @@ -1,32 +0,0 @@ -#serial 6 - -dnl From Paul Eggert. - -AC_PREREQ(2.52) - -# Define intmax_t to long or long long if doesn't define. - -AC_DEFUN([jm_AC_TYPE_INTMAX_T], -[ - AC_REQUIRE([jm_AC_TYPE_LONG_LONG]) - AC_CHECK_TYPE(intmax_t, , - [test $ac_cv_type_long_long = yes \ - && ac_type='long long' \ - || ac_type='long' - AC_DEFINE_UNQUOTED(intmax_t, $ac_type, - [Define to widest signed type if doesn't define.])]) -]) - -# Define uintmax_t to unsigned long or unsigned long long -# if doesn't define. - -AC_DEFUN([jm_AC_TYPE_UINTMAX_T], -[ - AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG]) - AC_CHECK_TYPE(uintmax_t, , - [test $ac_cv_type_unsigned_long_long = yes \ - && ac_type='unsigned long long' \ - || ac_type='unsigned long' - AC_DEFINE_UNQUOTED(uintmax_t, $ac_type, - [Define to widest unsigned type if doesn't define.])]) -]) diff --git a/src/bin/diffutils/m4/jm-glibc-io.m4 b/src/bin/diffutils/m4/jm-glibc-io.m4 deleted file mode 100644 index e8054f0bd2..0000000000 --- a/src/bin/diffutils/m4/jm-glibc-io.m4 +++ /dev/null @@ -1,14 +0,0 @@ -#serial 7 -*- autoconf -*- - -dnl From Jim Meyering. -dnl -dnl See if the glibc *_unlocked I/O macros are available. -dnl Use only those *_unlocked macros that are declared. -dnl - -AC_DEFUN([jm_FUNC_GLIBC_UNLOCKED_IO], - [AC_CHECK_DECLS( - [clearerr_unlocked, feof_unlocked, ferror_unlocked, - fflush_unlocked, fgets_unlocked, fputc_unlocked, fputs_unlocked, - fread_unlocked, fwrite_unlocked, getc_unlocked, - getchar_unlocked, putc_unlocked, putchar_unlocked])]) diff --git a/src/bin/diffutils/m4/lcmessage.m4 b/src/bin/diffutils/m4/lcmessage.m4 deleted file mode 100644 index ffbf915f1a..0000000000 --- a/src/bin/diffutils/m4/lcmessage.m4 +++ /dev/null @@ -1,32 +0,0 @@ -# lcmessage.m4 serial 2 (gettext-0.10.40) -dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper , 1995. - -# Check whether LC_MESSAGES is available in . - -AC_DEFUN([AM_LC_MESSAGES], - [if test $ac_cv_header_locale_h = yes; then - AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, - [AC_TRY_LINK([#include ], [return LC_MESSAGES], - am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) - if test $am_cv_val_LC_MESSAGES = yes; then - AC_DEFINE(HAVE_LC_MESSAGES, 1, - [Define if your file defines LC_MESSAGES.]) - fi - fi]) diff --git a/src/bin/diffutils/m4/lib-ld.m4 b/src/bin/diffutils/m4/lib-ld.m4 deleted file mode 100644 index ddb573234c..0000000000 --- a/src/bin/diffutils/m4/lib-ld.m4 +++ /dev/null @@ -1,97 +0,0 @@ -# lib-ld.m4 serial 1 (gettext-0.11) -dnl Copyright (C) 1996-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl Subroutines of libtool.m4, -dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision -dnl with libtool.m4. - -dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. -AC_DEFUN([AC_LIB_PROG_LD_GNU], -[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, -[# I'd rather use --version here, but apparently some GNU ld's only accept -v. -if $LD -v 2>&1 &5; then - acl_cv_prog_gnu_ld=yes -else - acl_cv_prog_gnu_ld=no -fi]) -with_gnu_ld=$acl_cv_prog_gnu_ld -]) - -dnl From libtool-1.4. Sets the variable LD. -AC_DEFUN([AC_LIB_PROG_LD], -[AC_ARG_WITH(gnu-ld, -[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], -test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by GCC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]* | [A-Za-z]:[\\/]*)] - [re_direlt='/[^/][^/]*/\.\./'] - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(acl_cv_path_LD, -[if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - acl_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then - test "$with_gnu_ld" != no && break - else - test "$with_gnu_ld" != yes && break - fi - fi - done - IFS="$ac_save_ifs" -else - acl_cv_path_LD="$LD" # Let the user override the test with a path. -fi]) -LD="$acl_cv_path_LD" -if test -n "$LD"; then - AC_MSG_RESULT($LD) -else - AC_MSG_RESULT(no) -fi -test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) -AC_LIB_PROG_LD_GNU -]) diff --git a/src/bin/diffutils/m4/lib-link.m4 b/src/bin/diffutils/m4/lib-link.m4 deleted file mode 100644 index a16aa44605..0000000000 --- a/src/bin/diffutils/m4/lib-link.m4 +++ /dev/null @@ -1,521 +0,0 @@ -# lib-link.m4 serial 1 (gettext-0.11) -dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and -dnl the libraries corresponding to explicit and implicit dependencies. -dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and -dnl augments the CPPFLAGS variable. -AC_DEFUN([AC_LIB_LINKFLAGS], -[ - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - define([Name],[translit([$1],[./-], [___])]) - define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ - AC_LIB_LINKFLAGS_BODY([$1], [$2]) - ac_cv_lib[]Name[]_libs="$LIB[]NAME" - ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" - ac_cv_lib[]Name[]_cppflags="$INC[]NAME" - ]) - LIB[]NAME="$ac_cv_lib[]Name[]_libs" - LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" - INC[]NAME="$ac_cv_lib[]Name[]_cppflags" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) - AC_SUBST([LIB]NAME) - AC_SUBST([LTLIB]NAME) - dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the - dnl results of this search when this library appears as a dependency. - HAVE_LIB[]NAME=yes - undefine([Name]) - undefine([NAME]) -]) - -dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) -dnl searches for libname and the libraries corresponding to explicit and -dnl implicit dependencies, together with the specified include files and -dnl the ability to compile and link the specified testcode. If found, it -dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and -dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and -dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs -dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. -AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], -[ - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - define([Name],[translit([$1],[./-], [___])]) - define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - - dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME - dnl accordingly. - AC_LIB_LINKFLAGS_BODY([$1], [$2]) - - dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, - dnl because if the user has installed lib[]Name and not disabled its use - dnl via --without-lib[]Name-prefix, he wants to use it. - ac_save_CPPFLAGS="$CPPFLAGS" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) - - AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ - ac_save_LIBS="$LIBS" - LIBS="$LIBS $LIB[]NAME" - AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) - LIBS="$ac_save_LIBS" - ]) - if test "$ac_cv_lib[]Name" = yes; then - HAVE_LIB[]NAME=yes - AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) - AC_MSG_CHECKING([how to link with lib[]$1]) - AC_MSG_RESULT([$LIB[]NAME]) - else - HAVE_LIB[]NAME=no - dnl If $LIB[]NAME didn't lead to a usable library, we don't need - dnl $INC[]NAME either. - CPPFLAGS="$ac_save_CPPFLAGS" - LIB[]NAME= - LTLIB[]NAME= - fi - AC_SUBST([HAVE_LIB]NAME) - AC_SUBST([LIB]NAME) - AC_SUBST([LTLIB]NAME) - undefine([Name]) - undefine([NAME]) -]) - -dnl Determine the platform dependent parameters needed to use rpath: -dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, -dnl hardcode_direct, hardcode_minus_L, -dnl sys_lib_search_path_spec, sys_lib_dlsearch_path_spec. -AC_DEFUN([AC_LIB_RPATH], -[ - AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS - AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld - AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host - AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir - AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ - CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ - ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh - . ./conftest.sh - rm -f ./conftest.sh - acl_cv_rpath=done - ]) - wl="$acl_cv_wl" - libext="$acl_cv_libext" - shlibext="$acl_cv_shlibext" - hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" - hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" - hardcode_direct="$acl_cv_hardcode_direct" - hardcode_minus_L="$acl_cv_hardcode_minus_L" - sys_lib_search_path_spec="$acl_cv_sys_lib_search_path_spec" - sys_lib_dlsearch_path_spec="$acl_cv_sys_lib_dlsearch_path_spec" -]) - -dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and -dnl the libraries corresponding to explicit and implicit dependencies. -dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. -AC_DEFUN([AC_LIB_LINKFLAGS_BODY], -[ - define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - dnl By default, look in $includedir and $libdir. - use_additional=yes - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - AC_ARG_WITH([lib$1-prefix], -[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib - --without-lib$1-prefix don't search for lib$1 in includedir and libdir], -[ - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi -]) - dnl Search the library and its dependencies in $additional_libdir and - dnl $LDFLAGS. Using breadth-first-seach. - LIB[]NAME= - LTLIB[]NAME= - INC[]NAME= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='$1 $2' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - dnl See if it was already located by an earlier AC_LIB_LINKFLAGS - dnl or AC_LIB_HAVE_LINKFLAGS call. - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" - else - dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined - dnl that this library doesn't exist. So just drop it. - : - fi - else - dnl Search the library lib$name in $additional_libdir and $LDFLAGS - dnl and the already constructed $LIBNAME/$LTLIBNAME. - found_dir= - found_la= - found_so= - found_a= - if test $use_additional = yes; then - if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then - found_dir="$additional_libdir" - found_so="$additional_libdir/lib$name.$shlibext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - else - if test -f "$additional_libdir/lib$name.$libext"; then - found_dir="$additional_libdir" - found_a="$additional_libdir/lib$name.$libext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then - found_dir="$dir" - found_so="$dir/lib$name.$shlibext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - else - if test -f "$dir/lib$name.$libext"; then - found_dir="$dir" - found_a="$dir/lib$name.$libext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - dnl Found the library. - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - dnl Linking with a shared library. We attempt to hardcode its - dnl directory into the executable's runpath, unless it's the - dnl standard /usr/lib. - if test "X$found_dir" = "X/usr/lib"; then - dnl No hardcoding is needed. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - dnl Use an explicit option to hardcode DIR into the resulting - dnl binary. - dnl Potentially add DIR to ltrpathdirs. - dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - dnl The hardcoding into $LIBNAME is system dependent. - if test "$hardcode_direct" = yes; then - dnl Using DIR/libNAME.so during linking hardcodes DIR into the - dnl resulting binary. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then - dnl Use an explicit option to hardcode DIR into the resulting - dnl binary. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - dnl Potentially add DIR to rpathdirs. - dnl The rpathdirs will be appended to $LIBNAME at the end. - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - dnl Rely on "-L$found_dir". - dnl But don't add it if it's already contained in the LDFLAGS - dnl or the already constructed $LIBNAME - haveit= - for x in $LDFLAGS $LIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" - fi - if test "$hardcode_minus_L" != no; then - dnl FIXME: Not sure whether we should use - dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" - dnl here. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH - dnl here, because this doesn't fit in flags passed to the - dnl compiler. So give up. No hardcoding. This affects only - dnl very old systems. - dnl FIXME: Not sure whether we should use - dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" - dnl here. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - dnl Linking with a static library. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" - else - dnl We shouldn't come here, but anyway it's good to have a - dnl fallback. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" - fi - fi - dnl Assume the include files are nearby. - additional_includedir= - case "$found_dir" in - */lib | */lib/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - dnl Potentially add $additional_includedir to $INCNAME. - dnl But don't add it - dnl 1. if it's the standard /usr/include, - dnl 2. if it's /usr/local/include and we are using GCC on Linux, - dnl 3. if it's already present in $CPPFLAGS or the already - dnl constructed $INCNAME, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INC[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - dnl Really add $additional_includedir to $INCNAME. - INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - dnl Look for dependencies. - if test -n "$found_la"; then - dnl Read the .la file. It defines the variables - dnl dlname, library_names, old_library, dependency_libs, current, - dnl age, revision, installed, dlopen, dlpreopen, libdir. - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - dnl We use only dependency_libs. - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. - dnl But don't add it - dnl 1. if it's the standard /usr/lib, - dnl 2. if it's /usr/local/lib and we are using GCC on Linux, - dnl 3. if it's already present in $LDFLAGS or the already - dnl constructed $LIBNAME, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LIBNAME. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LTLIBNAME. - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -l*) - dnl Handle this in the next round. - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - dnl Handle this in the next round. Throw away the .la's - dnl directory; it is already contained in a preceding -L - dnl option. - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - dnl Most likely an immediate library name. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" - ;; - esac - done - fi - else - dnl Didn't find the library; assume it is in the system directories - dnl known to the linker and runtime loader. (All the system - dnl directories known to the linker should also be known to the - dnl runtime loader, otherwise the system is severely misconfigured.) - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$hardcode_libdir_separator"; then - dnl Weird platform: only the last -rpath option counts, the user must - dnl pass all path elements in one option. We can arrange that for a - dnl single library, but not when more than one $LIBNAMEs are used. - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" - done - dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" - else - dnl The -rpath options are cumulative. - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - dnl When using libtool, the option that works for both libraries and - dnl executables is -R. The -R options are cumulative. - for found_dir in $ltrpathdirs; do - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" - done - fi -]) - -dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, -dnl unless already present in VAR. -dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes -dnl contains two or three consecutive elements that belong together. -AC_DEFUN([AC_LIB_APPENDTOVAR], -[ - for element in [$2]; do - haveit= - for x in $[$1]; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - [$1]="${[$1]}${[$1]:+ }$element" - fi - done -]) diff --git a/src/bin/diffutils/m4/lib-prefix.m4 b/src/bin/diffutils/m4/lib-prefix.m4 deleted file mode 100644 index b8b79ab9ad..0000000000 --- a/src/bin/diffutils/m4/lib-prefix.m4 +++ /dev/null @@ -1,148 +0,0 @@ -# lib-prefix.m4 serial 1 (gettext-0.11) -dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed -dnl to access previously installed libraries. The basic assumption is that -dnl a user will want packages to use other packages he previously installed -dnl with the same --prefix option. -dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate -dnl libraries, but is otherwise very convenient. -AC_DEFUN([AC_LIB_PREFIX], -[ - AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) - AC_REQUIRE([AC_PROG_CC]) - AC_REQUIRE([AC_CANONICAL_HOST]) - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - dnl By default, look in $includedir and $libdir. - use_additional=yes - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - AC_ARG_WITH([lib-prefix], -[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib - --without-lib-prefix don't search for libraries in includedir and libdir], -[ - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi -]) - if test $use_additional = yes; then - dnl Potentially add $additional_includedir to $CPPFLAGS. - dnl But don't add it - dnl 1. if it's the standard /usr/include, - dnl 2. if it's already present in $CPPFLAGS, - dnl 3. if it's /usr/local/include and we are using GCC on Linux, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - for x in $CPPFLAGS; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - dnl Really add $additional_includedir to $CPPFLAGS. - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" - fi - fi - fi - fi - dnl Potentially add $additional_libdir to $LDFLAGS. - dnl But don't add it - dnl 1. if it's the standard /usr/lib, - dnl 2. if it's already present in $LDFLAGS, - dnl 3. if it's /usr/local/lib and we are using GCC on Linux, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - for x in $LDFLAGS; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LDFLAGS. - LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" - fi - fi - fi - fi - fi -]) - -dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, -dnl acl_final_exec_prefix, containing the values to which $prefix and -dnl $exec_prefix will expand at the end of the configure script. -AC_DEFUN([AC_LIB_PREPARE_PREFIX], -[ - dnl Unfortunately, prefix and exec_prefix get only finally determined - dnl at the end of configure. - if test "X$prefix" = "XNONE"; then - acl_final_prefix="$ac_default_prefix" - else - acl_final_prefix="$prefix" - fi - if test "X$exec_prefix" = "XNONE"; then - acl_final_exec_prefix='${prefix}' - else - acl_final_exec_prefix="$exec_prefix" - fi - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" - prefix="$acl_save_prefix" -]) - -dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the -dnl variables prefix and exec_prefix bound to the values they will have -dnl at the end of the configure script. -AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], -[ - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - $1 - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" -]) diff --git a/src/bin/diffutils/m4/longlong.m4 b/src/bin/diffutils/m4/longlong.m4 deleted file mode 100644 index daa95c0751..0000000000 --- a/src/bin/diffutils/m4/longlong.m4 +++ /dev/null @@ -1,35 +0,0 @@ -#serial 2 - -dnl From Paul Eggert. - -# Define HAVE_LONG_LONG if 'long long' works. - -AC_DEFUN([jm_AC_TYPE_LONG_LONG], -[ - AC_CACHE_CHECK([for long long], ac_cv_type_long_long, - [AC_TRY_LINK([long long ll = 1; int i = 63;], - [long long llmax = (long long) -1; - return ll << i | ll >> i | llmax / ll | llmax % ll;], - ac_cv_type_long_long=yes, - ac_cv_type_long_long=no)]) - if test $ac_cv_type_long_long = yes; then - AC_DEFINE(HAVE_LONG_LONG, 1, - [Define if you have the long long type.]) - fi -]) - -# Define HAVE_UNSIGNED_LONG_LONG if 'unsigned long long' works. - -AC_DEFUN([jm_AC_TYPE_UNSIGNED_LONG_LONG], -[ - AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long, - [AC_TRY_LINK([unsigned long long ull = 1; int i = 63;], - [unsigned long long ullmax = (unsigned long long) -1; - return ull << i | ull >> i | ullmax / ull | ullmax % ull;], - ac_cv_type_unsigned_long_long=yes, - ac_cv_type_unsigned_long_long=no)]) - if test $ac_cv_type_unsigned_long_long = yes; then - AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1, - [Define if you have the unsigned long long type.]) - fi -]) diff --git a/src/bin/diffutils/m4/malloc.m4 b/src/bin/diffutils/m4/malloc.m4 deleted file mode 100644 index bb60947dc7..0000000000 --- a/src/bin/diffutils/m4/malloc.m4 +++ /dev/null @@ -1,34 +0,0 @@ -#serial 5 - -dnl From Jim Meyering. -dnl Determine whether malloc accepts 0 as its argument. -dnl If it doesn't, arrange to use the replacement function. -dnl - -AC_DEFUN([jm_FUNC_MALLOC], -[ - dnl xmalloc.c requires that this symbol be defined so it doesn't - dnl mistakenly use a broken malloc -- as it might if this test were omitted. - AC_DEFINE(HAVE_DONE_WORKING_MALLOC_CHECK, 1, - [Define if the malloc check has been performed. ]) - - AC_CACHE_CHECK([for working malloc], jm_cv_func_working_malloc, - [AC_TRY_RUN([ - char *malloc (); - int - main () - { - exit (malloc (0) ? 0 : 1); - } - ], - jm_cv_func_working_malloc=yes, - jm_cv_func_working_malloc=no, - dnl When crosscompiling, assume malloc is broken. - jm_cv_func_working_malloc=no) - ]) - if test $jm_cv_func_working_malloc = no; then - AC_LIBOBJ(malloc) - AC_DEFINE(malloc, rpl_malloc, - [Define to rpl_malloc if the replacement function should be used.]) - fi -]) diff --git a/src/bin/diffutils/m4/mbrtowc.m4 b/src/bin/diffutils/m4/mbrtowc.m4 deleted file mode 100644 index 87743919b9..0000000000 --- a/src/bin/diffutils/m4/mbrtowc.m4 +++ /dev/null @@ -1,18 +0,0 @@ -#serial 4 - -dnl From Paul Eggert - -AC_DEFUN([jm_FUNC_MBRTOWC], -[ - AC_CACHE_CHECK([whether mbrtowc and mbstate_t are properly declared], - jm_cv_func_mbrtowc, - [AC_TRY_LINK( - [#include ], - [mbstate_t state; return ! (sizeof state && mbrtowc);], - jm_cv_func_mbrtowc=yes, - jm_cv_func_mbrtowc=no)]) - if test $jm_cv_func_mbrtowc = yes; then - AC_DEFINE(HAVE_MBRTOWC, 1, - [Define to 1 if mbrtowc and mbstate_t are properly declared.]) - fi -]) diff --git a/src/bin/diffutils/m4/mbstate_t.m4 b/src/bin/diffutils/m4/mbstate_t.m4 deleted file mode 100644 index ae2bcf1e8e..0000000000 --- a/src/bin/diffutils/m4/mbstate_t.m4 +++ /dev/null @@ -1,29 +0,0 @@ -# serial 9 - -# From Paul Eggert. - -# BeOS 5 has but does not define mbstate_t, -# so you can't declare an object of that type. -# Check for this incompatibility with Standard C. - -# Include stdlib.h first, because otherwise this test would fail on Linux -# (at least glibc-2.1.3) because the "_XOPEN_SOURCE 500" definition elicits -# a syntax error in wchar.h due to the use of undefined __int32_t. - -AC_DEFUN([AC_MBSTATE_T], - [ - AC_CHECK_HEADERS(stdlib.h) - - AC_CACHE_CHECK([for mbstate_t], ac_cv_type_mbstate_t, - [AC_TRY_COMPILE([ -#if HAVE_STDLIB_H -# include -#endif -#include ], - [mbstate_t x; return sizeof x;], - ac_cv_type_mbstate_t=yes, - ac_cv_type_mbstate_t=no)]) - if test $ac_cv_type_mbstate_t = no; then - AC_DEFINE(mbstate_t, int, - [Define to a type if does not define.]) - fi]) diff --git a/src/bin/diffutils/m4/prereq.m4 b/src/bin/diffutils/m4/prereq.m4 deleted file mode 100644 index 816308ab40..0000000000 --- a/src/bin/diffutils/m4/prereq.m4 +++ /dev/null @@ -1,153 +0,0 @@ -#serial 22 - -dnl These are the prerequisite macros for files in the lib/ -dnl directories of the fileutils, sh-utils, and textutils packages. - -AC_DEFUN([jm_PREREQ], -[ - jm_PREREQ_ADDEXT - jm_PREREQ_CANON_HOST - jm_PREREQ_DIRNAME - jm_PREREQ_ERROR - jm_PREREQ_EXCLUDE - jm_PREREQ_GETPAGESIZE - jm_PREREQ_HARD_LOCALE - jm_PREREQ_HASH - jm_PREREQ_HUMAN - jm_PREREQ_MBSWIDTH - jm_PREREQ_MEMCHR - jm_PREREQ_PHYSMEM - jm_PREREQ_POSIXVER - jm_PREREQ_QUOTEARG - jm_PREREQ_READUTMP - jm_PREREQ_REGEX - jm_PREREQ_TEMPNAME # called by mkstemp - jm_PREREQ_XGETCWD - jm_PREREQ_XREADLINK -]) - -AC_DEFUN([jm_PREREQ_ADDEXT], -[ - dnl For addext.c. - AC_SYS_LONG_FILE_NAMES - AC_CHECK_FUNCS(pathconf) - AC_CHECK_HEADERS(limits.h string.h unistd.h) -]) - -AC_DEFUN([jm_PREREQ_CANON_HOST], -[ - dnl Add any libraries as early as possible. - dnl In particular, inet_ntoa needs -lnsl at least on Solaris5.5.1, - dnl so we have to add -lnsl to LIBS before checking for that function. - AC_SEARCH_LIBS(gethostbyname, [inet nsl]) - - dnl These come from -lnsl on Solaris5.5.1. - AC_CHECK_FUNCS(gethostbyname gethostbyaddr inet_ntoa) - - AC_CHECK_FUNCS(gethostbyname gethostbyaddr inet_ntoa) - AC_CHECK_HEADERS(unistd.h string.h netdb.h sys/socket.h \ - netinet/in.h arpa/inet.h) -]) - -AC_DEFUN([jm_PREREQ_DIRNAME], -[ - AC_HEADER_STDC - AC_CHECK_HEADERS(string.h) -]) - -AC_DEFUN([jm_PREREQ_EXCLUDE], -[ - jm_FUNC_FNMATCH - AC_HEADER_STDBOOL -]) - -AC_DEFUN([jm_PREREQ_GETPAGESIZE], -[ - AC_CHECK_FUNCS(getpagesize) - AC_CHECK_HEADERS(OS.h unistd.h) -]) - -AC_DEFUN([jm_PREREQ_HARD_LOCALE], -[ - AC_C_PROTOTYPES - AC_CHECK_FUNCS(setlocale) - AC_CHECK_HEADERS(locale.h stdlib.h string.h) -]) - -AC_DEFUN([jm_PREREQ_HASH], -[ - AC_CHECK_HEADERS(stdlib.h) - AC_HEADER_STDBOOL - AC_REQUIRE([jm_CHECK_DECLS]) -]) - -# If you use human.c, you need the following files: -# inttypes.m4 ulonglong.m4 -AC_DEFUN([jm_PREREQ_HUMAN], -[ - AC_CHECK_HEADERS(limits.h stdlib.h string.h) - AC_CHECK_DECLS([getenv]) - AC_REQUIRE([jm_AC_TYPE_UINTMAX_T]) -]) - -AC_DEFUN([jm_PREREQ_MEMCHR], -[ - AC_CHECK_HEADERS(limits.h stdlib.h bp-sym.h) -]) - -AC_DEFUN([jm_PREREQ_PHYSMEM], -[ - AC_CHECK_HEADERS(sys/pstat.h unistd.h) - AC_CHECK_FUNCS(pstat_getstatic pstat_getdynamic) -]) - -AC_DEFUN([jm_PREREQ_POSIXVER], -[ - AC_CHECK_HEADERS(unistd.h) - AC_CHECK_DECLS([getenv]) -]) - -AC_DEFUN([jm_PREREQ_QUOTEARG], -[ - AC_CHECK_FUNCS(isascii iswprint) - jm_FUNC_MBRTOWC - AC_CHECK_HEADERS(limits.h stddef.h stdlib.h string.h wchar.h wctype.h) - AC_HEADER_STDC - AC_C_BACKSLASH_A - AC_MBSTATE_T - AM_C_PROTOTYPES -]) - -AC_DEFUN([jm_PREREQ_REGEX], -[ - dnl FIXME: Maybe provide a btowc replacement someday: solaris-2.5.1 lacks it. - dnl FIXME: Check for wctype and iswctype, and and add -lw if necessary - dnl to get them. - AC_CHECK_FUNCS(bzero bcopy isascii btowc) - AC_CHECK_HEADERS(alloca.h libintl.h wctype.h wchar.h) - AC_HEADER_STDC - AC_FUNC_ALLOCA -]) - -AC_DEFUN([jm_PREREQ_TEMPNAME], -[ - AC_HEADER_STDC - AC_HEADER_STAT - AC_CHECK_HEADERS(fcntl.h sys/time.h stdint.h unistd.h) - AC_CHECK_FUNCS(__secure_getenv gettimeofday) - AC_CHECK_DECLS([getenv]) -]) - -AC_DEFUN([jm_PREREQ_XGETCWD], -[ - AC_C_PROTOTYPES - AC_CHECK_HEADERS(limits.h stdlib.h sys/param.h unistd.h) - AC_CHECK_FUNCS(getcwd) - AC_FUNC_GETCWD_NULL -]) - -AC_DEFUN([jm_PREREQ_XREADLINK], -[ - AC_C_PROTOTYPES - AC_CHECK_HEADERS(limits.h stdlib.h sys/types.h unistd.h) -]) diff --git a/src/bin/diffutils/m4/progtest.m4 b/src/bin/diffutils/m4/progtest.m4 deleted file mode 100644 index 443c8e3063..0000000000 --- a/src/bin/diffutils/m4/progtest.m4 +++ /dev/null @@ -1,59 +0,0 @@ -# progtest.m4 serial 2 (gettext-0.10.40) -dnl Copyright (C) 1996-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper , 1996. - -# Search path for a program which passes the given test. - -dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, -dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) -AC_DEFUN([AM_PATH_PROG_WITH_TEST], -[# Extract the first word of "$2", so it can be a program name with args. -set dummy $2; ac_word=[$]2 -AC_MSG_CHECKING([for $ac_word]) -AC_CACHE_VAL(ac_cv_path_$1, -[case "[$]$1" in - /*) - ac_cv_path_$1="[$]$1" # Let the user override the test with a path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in ifelse([$5], , $PATH, [$5]); do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if [$3]; then - ac_cv_path_$1="$ac_dir/$ac_word" - break - fi - fi - done - IFS="$ac_save_ifs" -dnl If no 4th arg is given, leave the cache variable unset, -dnl so AC_PATH_PROGS will keep looking. -ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" -])dnl - ;; -esac])dnl -$1="$ac_cv_path_$1" -if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then - AC_MSG_RESULT([$]$1) -else - AC_MSG_RESULT(no) -fi -AC_SUBST($1)dnl -]) diff --git a/src/bin/diffutils/m4/realloc.m4 b/src/bin/diffutils/m4/realloc.m4 deleted file mode 100644 index c8a8237472..0000000000 --- a/src/bin/diffutils/m4/realloc.m4 +++ /dev/null @@ -1,34 +0,0 @@ -#serial 5 - -dnl From Jim Meyering. -dnl Determine whether realloc works when both arguments are 0. -dnl If it doesn't, arrange to use the replacement function. -dnl - -AC_DEFUN([jm_FUNC_REALLOC], -[ - dnl xmalloc.c requires that this symbol be defined so it doesn't - dnl mistakenly use a broken realloc -- as it might if this test were omitted. - AC_DEFINE(HAVE_DONE_WORKING_REALLOC_CHECK, 1, - [Define if the realloc check has been performed. ]) - - AC_CACHE_CHECK([for working realloc], jm_cv_func_working_realloc, - [AC_TRY_RUN([ - char *realloc (); - int - main () - { - exit (realloc (0, 0) ? 0 : 1); - } - ], - jm_cv_func_working_realloc=yes, - jm_cv_func_working_realloc=no, - dnl When crosscompiling, assume realloc is broken. - jm_cv_func_working_realloc=no) - ]) - if test $jm_cv_func_working_realloc = no; then - AC_LIBOBJ(realloc) - AC_DEFINE(realloc, rpl_realloc, - [Define to rpl_realloc if the replacement function should be used.]) - fi -]) diff --git a/src/bin/diffutils/m4/regex.m4 b/src/bin/diffutils/m4/regex.m4 deleted file mode 100644 index 0017507edf..0000000000 --- a/src/bin/diffutils/m4/regex.m4 +++ /dev/null @@ -1,81 +0,0 @@ -#serial 12 - -dnl Initially derived from code in GNU grep. -dnl Mostly written by Jim Meyering. - -dnl Usage: jm_INCLUDED_REGEX([lib/regex.c]) -dnl -AC_DEFUN([jm_INCLUDED_REGEX], - [ - dnl Even packages that don't use regex.c can use this macro. - dnl Of course, for them it doesn't do anything. - - # Assume we'll default to using the included regex.c. - ac_use_included_regex=yes - - # However, if the system regex support is good enough that it passes the - # the following run test, then default to *not* using the included regex.c. - # If cross compiling, assume the test would fail and use the included - # regex.c. The first failing regular expression is from `Spencer ere - # test #75' in grep-2.3. - AC_CACHE_CHECK([for working re_compile_pattern], - jm_cv_func_working_re_compile_pattern, - AC_TRY_RUN( -[#include -#include - int - main () - { - static struct re_pattern_buffer regex; - const char *s; - struct re_registers regs; - re_set_syntax (RE_SYNTAX_POSIX_EGREP); - [s = re_compile_pattern ("a[[:@:>@:]]b\n", 9, ®ex);] - /* This should fail with _Invalid character class name_ error. */ - if (!s) - exit (1); - - /* This should succeed, but doesn't for e.g. glibc-2.1.3. */ - s = re_compile_pattern ("{1", 2, ®ex); - - if (s) - exit (1); - - /* The following example is derived from a problem report - against gawk from Jorge Stolfi . */ - s = re_compile_pattern ("[[an]]*n", 7, ®ex); - if (s) - exit (1); - - /* This should match, but doesn't for e.g. glibc-2.2.1. */ - if (re_match (®ex, "an", 2, 0, ®s) != 2) - exit (1); - - exit (0); - } - ], - jm_cv_func_working_re_compile_pattern=yes, - jm_cv_func_working_re_compile_pattern=no, - dnl When crosscompiling, assume it's broken. - jm_cv_func_working_re_compile_pattern=no)) - if test $jm_cv_func_working_re_compile_pattern = yes; then - ac_use_included_regex=no - fi - - test -n "$1" || AC_MSG_ERROR([missing argument]) - m4_syscmd([test -f $1]) - ifelse(m4_sysval, 0, - [ - AC_ARG_WITH(included-regex, - [ --without-included-regex don't compile regex; this is the default on - systems with version 2 of the GNU C library - (use with caution on other system)], - jm_with_regex=$withval, - jm_with_regex=$ac_use_included_regex) - if test "$jm_with_regex" = yes; then - AC_LIBOBJ(regex) - fi - ], - ) - ] -) diff --git a/src/bin/diffutils/m4/setmode.m4 b/src/bin/diffutils/m4/setmode.m4 deleted file mode 100644 index 1af6bca4a7..0000000000 --- a/src/bin/diffutils/m4/setmode.m4 +++ /dev/null @@ -1,38 +0,0 @@ -# Check for setmode, DOS style. - -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -AC_DEFUN([AC_FUNC_SETMODE_DOS], - [AC_CHECK_HEADERS(fcntl.h unistd.h) - AC_CACHE_CHECK([for DOS-style setmode], - [ac_cv_func_setmode_dos], - [AC_TRY_LINK( - [#include - #if HAVE_FCNTL_H - # include - #endif - #if HAVE_UNISTD_H - # include - #endif], - [int ret = setmode && setmode (1, O_BINARY);], - [ac_cv_func_setmode_dos=yes], - [ac_cv_func_setmode_dos=no])]) - if test $ac_cv_func_setmode_dos = yes; then - AC_DEFINE(HAVE_SETMODE_DOS, 1, - [Define to 1 if you have the DOS-style `setmode' function.]) - fi]) diff --git a/src/bin/diffutils/m4/st_mtim.m4 b/src/bin/diffutils/m4/st_mtim.m4 deleted file mode 100644 index e9342cfebf..0000000000 --- a/src/bin/diffutils/m4/st_mtim.m4 +++ /dev/null @@ -1,32 +0,0 @@ -#serial 5 - -dnl From Paul Eggert. - -# Define ST_MTIM_NSEC to be the nanoseconds member of struct stat's st_mtim, -# if it exists. - -AC_DEFUN([AC_STRUCT_ST_MTIM_NSEC], - [AC_CACHE_CHECK([for nanoseconds member of struct stat.st_mtim], - ac_cv_struct_st_mtim_nsec, - [ac_save_CPPFLAGS="$CPPFLAGS" - ac_cv_struct_st_mtim_nsec=no - # tv_nsec -- the usual case - # _tv_nsec -- Solaris 2.6, if - # (defined _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED == 1 - # && !defined __EXTENSIONS__) - # st__tim.tv_nsec -- UnixWare 2.1.2 - for ac_val in tv_nsec _tv_nsec st__tim.tv_nsec; do - CPPFLAGS="$ac_save_CPPFLAGS -DST_MTIM_NSEC=$ac_val" - AC_TRY_COMPILE([#include -#include ], [struct stat s; s.st_mtim.ST_MTIM_NSEC;], - [ac_cv_struct_st_mtim_nsec=$ac_val; break]) - done - CPPFLAGS="$ac_save_CPPFLAGS"]) - - if test $ac_cv_struct_st_mtim_nsec != no; then - AC_DEFINE_UNQUOTED(ST_MTIM_NSEC, $ac_cv_struct_st_mtim_nsec, - [Define to be the nanoseconds member of struct stat's st_mtim, - if it exists.]) - fi - ] -) diff --git a/src/bin/diffutils/m4/stdbool.m4 b/src/bin/diffutils/m4/stdbool.m4 deleted file mode 100644 index 8916dd4c74..0000000000 --- a/src/bin/diffutils/m4/stdbool.m4 +++ /dev/null @@ -1,56 +0,0 @@ -# Check for stdbool.h that conforms to C99. - -# Copyright (C) 2002 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -AC_DEFUN([AC_HEADER_STDBOOL], - [AC_CACHE_CHECK([for stdbool.h that conforms to C99], - [ac_cv_header_stdbool_h], - [AC_TRY_COMPILE( - [ - #include - #ifndef bool - "error: bool is not defined" - #endif - #ifndef false - "error: false is not defined" - #endif - #ifndef true - "error: false is not defined" - #endif - #ifndef __bool_true_false_are_defined - "error: __bool_true_false_are_defined is not defined" - #endif - - struct s { _Bool s: 1; _Bool t; } s; - - char a[true == 1 ? 1 : -1]; - char b[false == 0 ? 1 : -1]; - char c[__bool_true_false_are_defined == 1 ? 1 : -1]; - char d[(bool) -0.5 == true ? 1 : -1]; - char e[(bool) &s == true ? 1 : -1]; - char f[(_Bool) -0.0 == false ? 1 : -1]; - char g[true]; - char h[sizeof (_Bool)]; - char i[sizeof s.t]; - ], - [ return !a + !b + !c + !d + !e + !f + !g + !h + !i; ], - [ac_cv_header_stdbool_h=yes], - [ac_cv_header_stdbool_h=no])]) - if test $ac_cv_header_stdbool_h = yes; then - AC_DEFINE(HAVE_STDBOOL_H, 1, [Define to 1 if stdbool.h conforms to C99.]) - fi]) diff --git a/src/bin/diffutils/m4/strftime.m4 b/src/bin/diffutils/m4/strftime.m4 deleted file mode 100644 index 831faecac5..0000000000 --- a/src/bin/diffutils/m4/strftime.m4 +++ /dev/null @@ -1,43 +0,0 @@ -#serial 17 - -dnl This macro is intended to be used solely in this file. -dnl These are the prerequisite macros for GNU's strftime.c replacement. -AC_DEFUN([_jm_STRFTIME_PREREQS], -[ - dnl strftime.c uses localtime_r and the underyling system strftime - dnl if they exist. - AC_CHECK_FUNCS(localtime_r strftime) - - AC_CHECK_HEADERS(limits.h) - AC_CHECK_FUNCS(bcopy tzset mempcpy memcpy memset) - - # This defines (or not) HAVE_TZNAME and HAVE_TM_ZONE. - AC_STRUCT_TIMEZONE - - AC_CHECK_FUNCS(mblen mbrlen) - - AC_CHECK_MEMBER([struct tm.tm_gmtoff], - [AC_DEFINE(HAVE_TM_GMTOFF, 1, - [Define if struct tm has the tm_gmtoff member.])], - , - [#include ]) -]) - -dnl From Jim Meyering. -dnl -AC_DEFUN([jm_FUNC_GNU_STRFTIME], -[AC_REQUIRE([AC_HEADER_TIME])dnl - - _jm_STRFTIME_PREREQS - - AC_REQUIRE([AC_C_CONST])dnl - AC_REQUIRE([AC_HEADER_STDC])dnl - AC_CHECK_HEADERS(sys/time.h) - AC_DEFINE([my_strftime], [nstrftime], - [Define to the name of the strftime replacement function.]) -]) - -AC_DEFUN([jm_FUNC_STRFTIME], -[ - _jm_STRFTIME_PREREQS -]) diff --git a/src/bin/diffutils/m4/vararrays.m4 b/src/bin/diffutils/m4/vararrays.m4 deleted file mode 100644 index e4256f963b..0000000000 --- a/src/bin/diffutils/m4/vararrays.m4 +++ /dev/null @@ -1,37 +0,0 @@ -# Check for variable-length arrays. - -#serial 1 - -# From Paul Eggert - -# Copyright (C) 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -AC_DEFUN([AC_C_VARARRAYS], -[ - AC_CACHE_CHECK([for variable-length arrays], - ac_cv_c_vararrays, - [AC_TRY_COMPILE( - [], - [static int x; char a[++x]; a[sizeof a - 1] = 0; return a[0];], - ac_cv_c_vararrays=yes, - ac_cv_c_vararrays=no)]) - if test $ac_cv_c_vararrays = yes; then - AC_DEFINE(HAVE_C_VARARRAYS, 1, - [Define to 1 if C supports variable-length arrays.]) - fi -]) diff --git a/src/bin/diffutils/m4/xstrtoumax.m4 b/src/bin/diffutils/m4/xstrtoumax.m4 deleted file mode 100644 index 9ab71ec6dd..0000000000 --- a/src/bin/diffutils/m4/xstrtoumax.m4 +++ /dev/null @@ -1,40 +0,0 @@ -#serial 4 - -# autoconf tests required for use of xstrtoumax.c - -AC_DEFUN([jm_AC_PREREQ_XSTRTOUMAX], -[ - AC_REQUIRE([jm_AC_TYPE_INTMAX_T]) - AC_REQUIRE([jm_AC_TYPE_UINTMAX_T]) - AC_REQUIRE([jm_AC_TYPE_LONG_LONG]) - AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG]) - AC_CHECK_DECLS([strtol, strtoul, strtoull, strtoimax, strtoumax]) - AC_CHECK_HEADERS(limits.h stdlib.h inttypes.h) - - AC_CACHE_CHECK([whether defines strtoumax as a macro], - jm_cv_func_strtoumax_macro, - AC_EGREP_CPP([inttypes_h_defines_strtoumax], [#include -#ifdef strtoumax - inttypes_h_defines_strtoumax -#endif], - jm_cv_func_strtoumax_macro=yes, - jm_cv_func_strtoumax_macro=no)) - - if test "$jm_cv_func_strtoumax_macro" != yes; then - AC_REPLACE_FUNCS(strtoumax) - fi - - dnl Only the replacement strtoumax invokes strtoul and strtoull, - dnl so we need the replacements only if strtoumax does not exist. - case "$jm_cv_func_strtoumax_macro,$ac_cv_func_strtoumax" in - no,no) - AC_REPLACE_FUNCS(strtoul) - - dnl We don't need (and can't compile) the replacement strtoull - dnl unless the type `unsigned long long' exists. - if test "$ac_cv_type_unsigned_long_long" = yes; then - AC_REPLACE_FUNCS(strtoull) - fi - ;; - esac -]) diff --git a/src/bin/diffutils/man/Makefile b/src/bin/diffutils/man/Makefile deleted file mode 100644 index 0b2d225324..0000000000 --- a/src/bin/diffutils/man/Makefile +++ /dev/null @@ -1,291 +0,0 @@ -# Makefile.in generated by automake 1.6 from Makefile.am. -# man/Makefile. Generated from Makefile.in by configure. - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - - -# Automakefile for GNU diffutils man pages - -# Copyright (C) 2002 Free Software Foundation, Inc. -SHELL = /bin/sh - -srcdir = . -top_srcdir = .. - -prefix = /usr/local -exec_prefix = ${prefix} - -bindir = ${exec_prefix}/bin -sbindir = ${exec_prefix}/sbin -libexecdir = ${exec_prefix}/libexec -datadir = ${prefix}/share -sysconfdir = ${prefix}/etc -sharedstatedir = ${prefix}/com -localstatedir = ${prefix}/var -libdir = ${exec_prefix}/lib -infodir = ${prefix}/info -mandir = ${prefix}/man -includedir = ${prefix}/include -oldincludedir = /usr/include -pkgdatadir = $(datadir)/diffutils -pkglibdir = $(libdir)/diffutils -pkgincludedir = $(includedir)/diffutils -top_builddir = .. - -ACLOCAL = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run aclocal-1.6 -AUTOCONF = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoconf -AUTOMAKE = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run automake-1.6 -AUTOHEADER = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoheader - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = /bin/install -c -INSTALL_PROGRAM = ${INSTALL} -INSTALL_DATA = ${INSTALL} -m 644 -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -INSTALL_SCRIPT = ${INSTALL} -INSTALL_HEADER = $(INSTALL_DATA) -transform = s,x,x, -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = -host_triplet = i586-pc-beos - -EXEEXT = -OBJEXT = o -PATH_SEPARATOR = : -AMTAR = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run tar -AWK = gawk -BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ -CATOBJEXT = @CATOBJEXT@ -CC = gcc -CPP = gcc -E -DATADIRNAME = @DATADIRNAME@ -DEPDIR = .deps -GENCAT = @GENCAT@ -GLIBC21 = @GLIBC21@ -GMSGFMT = : -HAVE_LIB = @HAVE_LIB@ -HELP2MAN = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run help2man -INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s -INSTOBJEXT = @INSTOBJEXT@ -INTLBISON = @INTLBISON@ -INTLLIBS = -INTLOBJS = @INTLOBJS@ -INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -LIB = @LIB@ -LIBICONV = -LIBINTL = -LIB_CLOCK_GETTIME = -LTLIB = @LTLIB@ -LTLIBICONV = -LTLIBINTL = -MKINSTALLDIRS = config/mkinstalldirs -PACKAGE = diffutils -POSUB = -PR_PROGRAM = /bin/pr -RANLIB = ranlib -STRIP = -U = -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = no -VERSION = 2.8.1 -am__include = include -am__quote = -install_sh = /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/install-sh - -dist_man_MANS = cmp.1 diff.1 diff3.1 sdiff.1 -MAINTAINERCLEANFILES = $(dist_man_MANS) - -S = $(top_srcdir)/src -subdir = man -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -DIST_SOURCES = - -NROFF = nroff -MANS = $(dist_man_MANS) -DIST_COMMON = $(dist_man_MANS) Makefile.am Makefile.in -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits man/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) -uninstall-info-am: - -man1dir = $(mandir)/man1 -install-man1: $(man1_MANS) $(man_MANS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(man1dir) - @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ - l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ - for i in $$l2; do \ - case "$$i" in \ - *.1*) list="$$list $$i" ;; \ - esac; \ - done; \ - for i in $$list; do \ - if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ - else file=$$i; fi; \ - ext=`echo $$i | sed -e 's/^.*\\.//'`; \ - inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ - inst=`echo $$inst | sed -e 's/^.*\///'`; \ - inst=`echo $$inst | sed '$(transform)'`.$$ext; \ - echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \ - $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \ - done -uninstall-man1: - @$(NORMAL_UNINSTALL) - @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ - l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ - for i in $$l2; do \ - case "$$i" in \ - *.1*) list="$$list $$i" ;; \ - esac; \ - done; \ - for i in $$list; do \ - ext=`echo $$i | sed -e 's/^.*\\.//'`; \ - inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ - inst=`echo $$inst | sed -e 's/^.*\///'`; \ - inst=`echo $$inst | sed '$(transform)'`.$$ext; \ - echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \ - rm -f $(DESTDIR)$(man1dir)/$$inst; \ - done -tags: TAGS -TAGS: - -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir)$$dir \ - || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(MANS) - -installdirs: - $(mkinstalldirs) $(DESTDIR)$(man1dir) - -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) -clean: clean-am - -clean-am: clean-generic mostlyclean-am - -distclean: distclean-am - -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -info: info-am - -info-am: - -install-data-am: install-man - -install-exec-am: - -install-info: install-info-am - -install-man: install-man1 - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic - -uninstall-am: uninstall-info-am uninstall-man - -uninstall-man: uninstall-man1 - -.PHONY: all all-am check check-am clean clean-generic distclean \ - distclean-generic distdir dvi dvi-am info info-am install \ - install-am install-data install-data-am install-exec \ - install-exec-am install-info install-info-am install-man \ - install-man1 install-strip installcheck installcheck-am \ - installdirs maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-generic uninstall uninstall-am \ - uninstall-info-am uninstall-man uninstall-man1 - -cmp.1: $S/cmp.c -diff.1: $S/diff.c -diff3.1: $S/diff3.c -sdiff.1: $S/sdiff.c - -# Depend on configure.ac to get version number changes. -$(dist_man_MANS): $(top_srcdir)/configure.ac - base=`expr $@ : '\(.*\).1'` && \ - (echo '[NAME]' && sed 's@/\* *@@; s/-/\\-/; q' $S/$$base.c) | \ - $(HELP2MAN) -i - -S '$(PACKAGE) $(VERSION)' ../src/$$base | \ - sed 's/^\.B info .*/.B info diff/' >$@ -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/bin/diffutils/man/Makefile.am b/src/bin/diffutils/man/Makefile.am deleted file mode 100644 index d3a1ee20bb..0000000000 --- a/src/bin/diffutils/man/Makefile.am +++ /dev/null @@ -1,34 +0,0 @@ -# Automakefile for GNU diffutils man pages - -# Copyright (C) 2002 Free Software Foundation, Inc. - -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2, or (at your option) -## any later version. - -## This program is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. - -## You should have received a copy of the GNU General Public License -## along with this program; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -## 02111-1307, USA. - -dist_man_MANS = cmp.1 diff.1 diff3.1 sdiff.1 -MAINTAINERCLEANFILES = $(dist_man_MANS) - -S = $(top_srcdir)/src -cmp.1: $S/cmp.c -diff.1: $S/diff.c -diff3.1: $S/diff3.c -sdiff.1: $S/sdiff.c - -# Depend on configure.ac to get version number changes. -$(dist_man_MANS): $(top_srcdir)/configure.ac - base=`expr $@ : '\(.*\).1'` && \ - (echo '[NAME]' && sed 's@/\* *@@; s/-/\\-/; q' $S/$$base.c) | \ - $(HELP2MAN) -i - -S '$(PACKAGE) $(VERSION)' ../src/$$base | \ - sed 's/^\.B info .*/.B info diff/' >$@ diff --git a/src/bin/diffutils/man/Makefile.in b/src/bin/diffutils/man/Makefile.in deleted file mode 100644 index 73ae371ad6..0000000000 --- a/src/bin/diffutils/man/Makefile.in +++ /dev/null @@ -1,291 +0,0 @@ -# Makefile.in generated by automake 1.6 from Makefile.am. -# @configure_input@ - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# Automakefile for GNU diffutils man pages - -# Copyright (C) 2002 Free Software Foundation, Inc. -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_HEADER = $(INSTALL_DATA) -transform = @program_transform_name@ -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ - -EXEEXT = @EXEEXT@ -OBJEXT = @OBJEXT@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -AMTAR = @AMTAR@ -AWK = @AWK@ -BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -CPP = @CPP@ -DATADIRNAME = @DATADIRNAME@ -DEPDIR = @DEPDIR@ -GENCAT = @GENCAT@ -GLIBC21 = @GLIBC21@ -GMSGFMT = @GMSGFMT@ -HAVE_LIB = @HAVE_LIB@ -HELP2MAN = @HELP2MAN@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTOBJEXT = @INSTOBJEXT@ -INTLBISON = @INTLBISON@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ -INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -LIB = @LIB@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ -LTLIB = @LTLIB@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -PACKAGE = @PACKAGE@ -POSUB = @POSUB@ -PR_PROGRAM = @PR_PROGRAM@ -RANLIB = @RANLIB@ -STRIP = @STRIP@ -U = @U@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -am__include = @am__include@ -am__quote = @am__quote@ -install_sh = @install_sh@ - -dist_man_MANS = cmp.1 diff.1 diff3.1 sdiff.1 -MAINTAINERCLEANFILES = $(dist_man_MANS) - -S = $(top_srcdir)/src -subdir = man -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -DIST_SOURCES = - -NROFF = nroff -MANS = $(dist_man_MANS) -DIST_COMMON = $(dist_man_MANS) Makefile.am Makefile.in -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits man/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) -uninstall-info-am: - -man1dir = $(mandir)/man1 -install-man1: $(man1_MANS) $(man_MANS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(man1dir) - @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ - l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ - for i in $$l2; do \ - case "$$i" in \ - *.1*) list="$$list $$i" ;; \ - esac; \ - done; \ - for i in $$list; do \ - if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ - else file=$$i; fi; \ - ext=`echo $$i | sed -e 's/^.*\\.//'`; \ - inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ - inst=`echo $$inst | sed -e 's/^.*\///'`; \ - inst=`echo $$inst | sed '$(transform)'`.$$ext; \ - echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \ - $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \ - done -uninstall-man1: - @$(NORMAL_UNINSTALL) - @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ - l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ - for i in $$l2; do \ - case "$$i" in \ - *.1*) list="$$list $$i" ;; \ - esac; \ - done; \ - for i in $$list; do \ - ext=`echo $$i | sed -e 's/^.*\\.//'`; \ - inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ - inst=`echo $$inst | sed -e 's/^.*\///'`; \ - inst=`echo $$inst | sed '$(transform)'`.$$ext; \ - echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \ - rm -f $(DESTDIR)$(man1dir)/$$inst; \ - done -tags: TAGS -TAGS: - -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir)$$dir \ - || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(MANS) - -installdirs: - $(mkinstalldirs) $(DESTDIR)$(man1dir) - -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) -clean: clean-am - -clean-am: clean-generic mostlyclean-am - -distclean: distclean-am - -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -info: info-am - -info-am: - -install-data-am: install-man - -install-exec-am: - -install-info: install-info-am - -install-man: install-man1 - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic - -uninstall-am: uninstall-info-am uninstall-man - -uninstall-man: uninstall-man1 - -.PHONY: all all-am check check-am clean clean-generic distclean \ - distclean-generic distdir dvi dvi-am info info-am install \ - install-am install-data install-data-am install-exec \ - install-exec-am install-info install-info-am install-man \ - install-man1 install-strip installcheck installcheck-am \ - installdirs maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-generic uninstall uninstall-am \ - uninstall-info-am uninstall-man uninstall-man1 - -cmp.1: $S/cmp.c -diff.1: $S/diff.c -diff3.1: $S/diff3.c -sdiff.1: $S/sdiff.c - -# Depend on configure.ac to get version number changes. -$(dist_man_MANS): $(top_srcdir)/configure.ac - base=`expr $@ : '\(.*\).1'` && \ - (echo '[NAME]' && sed 's@/\* *@@; s/-/\\-/; q' $S/$$base.c) | \ - $(HELP2MAN) -i - -S '$(PACKAGE) $(VERSION)' ../src/$$base | \ - sed 's/^\.B info .*/.B info diff/' >$@ -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/bin/diffutils/man/cmp.1 b/src/bin/diffutils/man/cmp.1 deleted file mode 100644 index 546406f178..0000000000 --- a/src/bin/diffutils/man/cmp.1 +++ /dev/null @@ -1,64 +0,0 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.27. -.TH CMP "1" "April 2002" "diffutils 2.8.1" "User Commands" -.SH NAME -cmp \- compare two files byte by byte -.SH SYNOPSIS -.B cmp -[\fIOPTION\fR]... \fIFILE1 \fR[\fIFILE2 \fR[\fISKIP1 \fR[\fISKIP2\fR]]] -.SH DESCRIPTION -Compare two files byte by byte. -.TP -\fB\-b\fR \fB\-\-print\-bytes\fR -Print differing bytes. -.TP -\fB\-i\fR SKIP \fB\-\-ignore\-initial\fR=\fISKIP\fR -Skip the first SKIP bytes of input. -.HP -\fB\-i\fR SKIP1:SKIP2 \fB\-\-ignore\-initial\fR=\fISKIP1\fR:SKIP2 -.IP -Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2. -.TP -\fB\-l\fR \fB\-\-verbose\fR -Output byte numbers and values of all differing bytes. -.TP -\fB\-n\fR LIMIT \fB\-\-bytes\fR=\fILIMIT\fR -Compare at most LIMIT bytes. -.TP -\fB\-s\fR \fB\-\-quiet\fR \fB\-\-silent\fR -Output nothing; yield exit status only. -.TP -\fB\-v\fR \fB\-\-version\fR -Output version info. -.TP -\fB\-\-help\fR -Output this help. -.PP -SKIP1 and SKIP2 are the number of bytes to skip in each file. -SKIP values may be followed by the following multiplicative suffixes: -kB 1000, K 1024, MB 1,000,000, M 1,048,576, -GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y. -.PP -If a FILE is `-' or missing, read standard input. -.SH AUTHOR -Written by Torbjorn Granlund and David MacKenzie. -.SH "REPORTING BUGS" -Report bugs to . -.SH COPYRIGHT -Copyright \(co 2002 Free Software Foundation, Inc. -.PP -This program comes with NO WARRANTY, to the extent permitted by law. -You may redistribute copies of this program -under the terms of the GNU General Public License. -For more information about these matters, see the file named COPYING. -.SH "SEE ALSO" -The full documentation for -.B cmp -is maintained as a Texinfo manual. If the -.B info -and -.B cmp -programs are properly installed at your site, the command -.IP -.B info diff -.PP -should give you access to the complete manual. diff --git a/src/bin/diffutils/man/diff.1 b/src/bin/diffutils/man/diff.1 deleted file mode 100644 index 5bcabc1d77..0000000000 --- a/src/bin/diffutils/man/diff.1 +++ /dev/null @@ -1,225 +0,0 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.27. -.TH DIFF "1" "April 2002" "diffutils 2.8.1" "User Commands" -.SH NAME -diff \- compare files line by line -.SH SYNOPSIS -.B diff -[\fIOPTION\fR]... \fIFILES\fR -.SH DESCRIPTION -Compare files line by line. -.TP -\fB\-i\fR \fB\-\-ignore\-case\fR -Ignore case differences in file contents. -.TP -\fB\-\-ignore\-file\-name\-case\fR -Ignore case when comparing file names. -.TP -\fB\-\-no\-ignore\-file\-name\-case\fR -Consider case when comparing file names. -.TP -\fB\-E\fR \fB\-\-ignore\-tab\-expansion\fR -Ignore changes due to tab expansion. -.TP -\fB\-b\fR \fB\-\-ignore\-space\-change\fR -Ignore changes in the amount of white space. -.TP -\fB\-w\fR \fB\-\-ignore\-all\-space\fR -Ignore all white space. -.TP -\fB\-B\fR \fB\-\-ignore\-blank\-lines\fR -Ignore changes whose lines are all blank. -.TP -\fB\-I\fR RE \fB\-\-ignore\-matching\-lines\fR=\fIRE\fR -Ignore changes whose lines all match RE. -.TP -\fB\-\-strip\-trailing\-cr\fR -Strip trailing carriage return on input. -.TP -\fB\-a\fR \fB\-\-text\fR -Treat all files as text. -.TP -\fB\-c\fR \fB\-C\fR NUM \fB\-\-context\fR[=\fINUM\fR] -Output NUM (default 3) lines of copied context. -.TP -\fB\-u\fR \fB\-U\fR NUM \fB\-\-unified\fR[=\fINUM\fR] -Output NUM (default 3) lines of unified context. -.TP -\fB\-\-label\fR LABEL -Use LABEL instead of file name. -.TP -\fB\-p\fR \fB\-\-show\-c\-function\fR -Show which C function each change is in. -.TP -\fB\-F\fR RE \fB\-\-show\-function\-line\fR=\fIRE\fR -Show the most recent line matching RE. -.TP -\fB\-q\fR \fB\-\-brief\fR -Output only whether files differ. -.TP -\fB\-e\fR \fB\-\-ed\fR -Output an ed script. -.TP -\fB\-\-normal\fR -Output a normal diff. -.TP -\fB\-n\fR \fB\-\-rcs\fR -Output an RCS format diff. -.TP -\fB\-y\fR \fB\-\-side\-by\-side\fR -Output in two columns. -.TP -\fB\-W\fR NUM \fB\-\-width\fR=\fINUM\fR -Output at most NUM (default 130) print columns. -.TP -\fB\-\-left\-column\fR -Output only the left column of common lines. -.TP -\fB\-\-suppress\-common\-lines\fR -Do not output common lines. -.TP -\fB\-D\fR NAME \fB\-\-ifdef\fR=\fINAME\fR -Output merged file to show `#ifdef NAME' diffs. -.TP -\fB\-\-GTYPE\-group\-format\fR=\fIGFMT\fR -Similar, but format GTYPE input groups with GFMT. -.TP -\fB\-\-line\-format\fR=\fILFMT\fR -Similar, but format all input lines with LFMT. -.TP -\fB\-\-LTYPE\-line\-format\fR=\fILFMT\fR -Similar, but format LTYPE input lines with LFMT. -.TP -LTYPE is `old', `new', or `unchanged'. -GTYPE is LTYPE or `changed'. -.IP -GFMT may contain: -.TP -%< -lines from FILE1 -.TP -%> -lines from FILE2 -.TP -%= -lines common to FILE1 and FILE2 -.TP -%[-][WIDTH][.[PREC]]{doxX}LETTER -printf-style spec for LETTER -.IP -LETTERs are as follows for new group, lower case for old group: -.TP -F -first line number -.TP -L -last line number -.TP -N -number of lines = L-F+1 -.TP -E -F-1 -.TP -M -L+1 -.IP -LFMT may contain: -.TP -%L -contents of line -.TP -%l -contents of line, excluding any trailing newline -.TP -%[-][WIDTH][.[PREC]]{doxX}n -printf-style spec for input line number -.IP -Either GFMT or LFMT may contain: -.TP -%% -% -.TP -%c'C' -the single character C -.TP -%c'\eOOO' -the character with octal code OOO -.TP -\fB\-l\fR \fB\-\-paginate\fR -Pass the output through `pr' to paginate it. -.TP -\fB\-t\fR \fB\-\-expand\-tabs\fR -Expand tabs to spaces in output. -.TP -\fB\-T\fR \fB\-\-initial\-tab\fR -Make tabs line up by prepending a tab. -.TP -\fB\-r\fR \fB\-\-recursive\fR -Recursively compare any subdirectories found. -.TP -\fB\-N\fR \fB\-\-new\-file\fR -Treat absent files as empty. -.TP -\fB\-\-unidirectional\-new\-file\fR -Treat absent first files as empty. -.TP -\fB\-s\fR \fB\-\-report\-identical\-files\fR -Report when two files are the same. -.TP -\fB\-x\fR PAT \fB\-\-exclude\fR=\fIPAT\fR -Exclude files that match PAT. -.TP -\fB\-X\fR FILE \fB\-\-exclude\-from\fR=\fIFILE\fR -Exclude files that match any pattern in FILE. -.TP -\fB\-S\fR FILE \fB\-\-starting\-file\fR=\fIFILE\fR -Start with FILE when comparing directories. -.TP -\fB\-\-from\-file\fR=\fIFILE1\fR -Compare FILE1 to all operands. FILE1 can be a directory. -.TP -\fB\-\-to\-file\fR=\fIFILE2\fR -Compare all operands to FILE2. FILE2 can be a directory. -.TP -\fB\-\-horizon\-lines\fR=\fINUM\fR -Keep NUM lines of the common prefix and suffix. -.TP -\fB\-d\fR \fB\-\-minimal\fR -Try hard to find a smaller set of changes. -.TP -\fB\-\-speed\-large\-files\fR -Assume large files and many scattered small changes. -.TP -\fB\-v\fR \fB\-\-version\fR -Output version info. -.TP -\fB\-\-help\fR -Output this help. -.PP -FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'. -If \fB\-\-from\-file\fR or \fB\-\-to\-file\fR is given, there are no restrictions on FILES. -If a FILE is `-', read standard input. -.SH AUTHOR -Written by Paul Eggert, Mike Haertel, David Hayes, -Richard Stallman, and Len Tower. -.SH "REPORTING BUGS" -Report bugs to . -.SH COPYRIGHT -Copyright \(co 2002 Free Software Foundation, Inc. -.PP -This program comes with NO WARRANTY, to the extent permitted by law. -You may redistribute copies of this program -under the terms of the GNU General Public License. -For more information about these matters, see the file named COPYING. -.SH "SEE ALSO" -The full documentation for -.B diff -is maintained as a Texinfo manual. If the -.B info -and -.B diff -programs are properly installed at your site, the command -.IP -.B info diff -.PP -should give you access to the complete manual. diff --git a/src/bin/diffutils/man/diff3.1 b/src/bin/diffutils/man/diff3.1 deleted file mode 100644 index 9696911591..0000000000 --- a/src/bin/diffutils/man/diff3.1 +++ /dev/null @@ -1,76 +0,0 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.27. -.TH DIFF3 "1" "April 2002" "diffutils 2.8.1" "User Commands" -.SH NAME -diff3 \- compare three files line by line -.SH SYNOPSIS -.B diff3 -[\fIOPTION\fR]... \fIMYFILE OLDFILE YOURFILE\fR -.SH DESCRIPTION -Compare three files line by line. -.TP -\fB\-e\fR \fB\-\-ed\fR -Output unmerged changes from OLDFILE to YOURFILE into MYFILE. -.TP -\fB\-E\fR \fB\-\-show\-overlap\fR -Output unmerged changes, bracketing conflicts. -.TP -\fB\-A\fR \fB\-\-show\-all\fR -Output all changes, bracketing conflicts. -.TP -\fB\-x\fR \fB\-\-overlap\-only\fR -Output overlapping changes. -.TP -\fB\-X\fR -Output overlapping changes, bracketing them. -.TP -\fB\-3\fR \fB\-\-easy\-only\fR -Output unmerged nonoverlapping changes. -.TP -\fB\-m\fR \fB\-\-merge\fR -Output merged file instead of ed script (default \fB\-A\fR). -.TP -\fB\-L\fR LABEL \fB\-\-label\fR=\fILABEL\fR -Use LABEL instead of file name. -.TP -\fB\-i\fR -Append `w' and `q' commands to ed scripts. -.TP -\fB\-a\fR \fB\-\-text\fR -Treat all files as text. -.TP -\fB\-T\fR \fB\-\-initial\-tab\fR -Make tabs line up by prepending a tab. -.TP -\fB\-\-diff\-program\fR=\fIPROGRAM\fR -Use PROGRAM to compare files. -.TP -\fB\-v\fR \fB\-\-version\fR -Output version info. -.TP -\fB\-\-help\fR -Output this help. -.PP -If a FILE is `-', read standard input. -.SH AUTHOR -Written by Randy Smith. -.SH "REPORTING BUGS" -Report bugs to . -.SH COPYRIGHT -Copyright \(co 2002 Free Software Foundation, Inc. -.PP -This program comes with NO WARRANTY, to the extent permitted by law. -You may redistribute copies of this program -under the terms of the GNU General Public License. -For more information about these matters, see the file named COPYING. -.SH "SEE ALSO" -The full documentation for -.B diff3 -is maintained as a Texinfo manual. If the -.B info -and -.B diff3 -programs are properly installed at your site, the command -.IP -.B info diff -.PP -should give you access to the complete manual. diff --git a/src/bin/diffutils/man/sdiff.1 b/src/bin/diffutils/man/sdiff.1 deleted file mode 100644 index e1f6beb67b..0000000000 --- a/src/bin/diffutils/man/sdiff.1 +++ /dev/null @@ -1,88 +0,0 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.27. -.TH SDIFF "1" "April 2002" "diffutils 2.8.1" "User Commands" -.SH NAME -sdiff \- side-by-side merge of file differences -.SH SYNOPSIS -.B sdiff -[\fIOPTION\fR]... \fIFILE1 FILE2\fR -.SH DESCRIPTION -Side-by-side merge of file differences. -.TP -\fB\-o\fR FILE \fB\-\-output\fR=\fIFILE\fR -Operate interactively, sending output to FILE. -.TP -\fB\-i\fR \fB\-\-ignore\-case\fR -Consider upper- and lower-case to be the same. -.TP -\fB\-E\fR \fB\-\-ignore\-tab\-expansion\fR -Ignore changes due to tab expansion. -.TP -\fB\-b\fR \fB\-\-ignore\-space\-change\fR -Ignore changes in the amount of white space. -.TP -\fB\-W\fR \fB\-\-ignore\-all\-space\fR -Ignore all white space. -.TP -\fB\-B\fR \fB\-\-ignore\-blank\-lines\fR -Ignore changes whose lines are all blank. -.TP -\fB\-I\fR RE \fB\-\-ignore\-matching\-lines\fR=\fIRE\fR -Ignore changes whose lines all match RE. -.TP -\fB\-\-strip\-trailing\-cr\fR -Strip trailing carriage return on input. -.TP -\fB\-a\fR \fB\-\-text\fR -Treat all files as text. -.TP -\fB\-w\fR NUM \fB\-\-width\fR=\fINUM\fR -Output at most NUM (default 130) columns per line. -.TP -\fB\-l\fR \fB\-\-left\-column\fR -Output only the left column of common lines. -.TP -\fB\-s\fR \fB\-\-suppress\-common\-lines\fR -Do not output common lines. -.TP -\fB\-t\fR \fB\-\-expand\-tabs\fR -Expand tabs to spaces in output. -.TP -\fB\-d\fR \fB\-\-minimal\fR -Try hard to find a smaller set of changes. -.TP -\fB\-H\fR \fB\-\-speed\-large\-files\fR -Assume large files and many scattered small changes. -.TP -\fB\-\-diff\-program\fR=\fIPROGRAM\fR -Use PROGRAM to compare files. -.TP -\fB\-v\fR \fB\-\-version\fR -Output version info. -.TP -\fB\-\-help\fR -Output this help. -.PP -If a FILE is `-', read standard input. -.SH AUTHOR -Written by Thomas Lord. -.SH "REPORTING BUGS" -Report bugs to . -.SH COPYRIGHT -Copyright \(co 2002 Free Software Foundation, Inc. -.PP -This program comes with NO WARRANTY, to the extent permitted by law. -You may redistribute copies of this program -under the terms of the GNU General Public License. -For more information about these matters, see the file named COPYING. -.SH "SEE ALSO" -The full documentation for -.B sdiff -is maintained as a Texinfo manual. If the -.B info -and -.B sdiff -programs are properly installed at your site, the command -.IP -.B info diff -.PP -should give you access to the complete manual. diff --git a/src/bin/diffutils/ms/Makefile b/src/bin/diffutils/ms/Makefile deleted file mode 100644 index ca28859068..0000000000 --- a/src/bin/diffutils/ms/Makefile +++ /dev/null @@ -1,230 +0,0 @@ -# Makefile.in generated by automake 1.6 from Makefile.am. -# ms/Makefile. Generated from Makefile.in by configure. - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - - -# Makefile for GNU diffutils sources used on Microsoft operating systems. - -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. -SHELL = /bin/sh - -srcdir = . -top_srcdir = .. - -prefix = /usr/local -exec_prefix = ${prefix} - -bindir = ${exec_prefix}/bin -sbindir = ${exec_prefix}/sbin -libexecdir = ${exec_prefix}/libexec -datadir = ${prefix}/share -sysconfdir = ${prefix}/etc -sharedstatedir = ${prefix}/com -localstatedir = ${prefix}/var -libdir = ${exec_prefix}/lib -infodir = ${prefix}/info -mandir = ${prefix}/man -includedir = ${prefix}/include -oldincludedir = /usr/include -pkgdatadir = $(datadir)/diffutils -pkglibdir = $(libdir)/diffutils -pkgincludedir = $(includedir)/diffutils -top_builddir = .. - -ACLOCAL = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run aclocal-1.6 -AUTOCONF = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoconf -AUTOMAKE = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run automake-1.6 -AUTOHEADER = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoheader - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = /bin/install -c -INSTALL_PROGRAM = ${INSTALL} -INSTALL_DATA = ${INSTALL} -m 644 -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -INSTALL_SCRIPT = ${INSTALL} -INSTALL_HEADER = $(INSTALL_DATA) -transform = s,x,x, -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = -host_triplet = i586-pc-beos - -EXEEXT = -OBJEXT = o -PATH_SEPARATOR = : -AMTAR = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run tar -AWK = gawk -BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ -CATOBJEXT = @CATOBJEXT@ -CC = gcc -CPP = gcc -E -DATADIRNAME = @DATADIRNAME@ -DEPDIR = .deps -GENCAT = @GENCAT@ -GLIBC21 = @GLIBC21@ -GMSGFMT = : -HAVE_LIB = @HAVE_LIB@ -HELP2MAN = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run help2man -INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s -INSTOBJEXT = @INSTOBJEXT@ -INTLBISON = @INTLBISON@ -INTLLIBS = -INTLOBJS = @INTLOBJS@ -INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -LIB = @LIB@ -LIBICONV = -LIBINTL = -LIB_CLOCK_GETTIME = -LTLIB = @LTLIB@ -LTLIBICONV = -LTLIBINTL = -MKINSTALLDIRS = config/mkinstalldirs -PACKAGE = diffutils -POSUB = -PR_PROGRAM = /bin/pr -RANLIB = ranlib -STRIP = -U = -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = no -VERSION = 2.8.1 -am__include = include -am__quote = -install_sh = /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/install-sh - -EXTRA_DIST = config.bat config.sed config.site -subdir = ms -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -DIST_SOURCES = -DIST_COMMON = README Makefile.am Makefile.in -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits ms/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) -uninstall-info-am: -tags: TAGS -TAGS: - -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir)$$dir \ - || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile - -installdirs: - -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic mostlyclean-am - -distclean: distclean-am - -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic - -uninstall-am: uninstall-info-am - -.PHONY: all all-am check check-am clean clean-generic distclean \ - distclean-generic distdir dvi dvi-am info info-am install \ - install-am install-data install-data-am install-exec \ - install-exec-am install-info install-info-am install-man \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic uninstall uninstall-am uninstall-info-am - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/bin/diffutils/ms/Makefile.am b/src/bin/diffutils/ms/Makefile.am deleted file mode 100644 index 5c2e0fdf1d..0000000000 --- a/src/bin/diffutils/ms/Makefile.am +++ /dev/null @@ -1,19 +0,0 @@ -# Makefile for GNU diffutils sources used on Microsoft operating systems. - -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. - -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2, or (at your option) -## any later version. - -## This program is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. - -## You should have received a copy of the GNU General Public License -## along with this program; if not, write to the Free Software Foundation, -## Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -EXTRA_DIST = config.bat config.sed config.site diff --git a/src/bin/diffutils/ms/Makefile.in b/src/bin/diffutils/ms/Makefile.in deleted file mode 100644 index cda3f640be..0000000000 --- a/src/bin/diffutils/ms/Makefile.in +++ /dev/null @@ -1,230 +0,0 @@ -# Makefile.in generated by automake 1.6 from Makefile.am. -# @configure_input@ - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# Makefile for GNU diffutils sources used on Microsoft operating systems. - -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_HEADER = $(INSTALL_DATA) -transform = @program_transform_name@ -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ - -EXEEXT = @EXEEXT@ -OBJEXT = @OBJEXT@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -AMTAR = @AMTAR@ -AWK = @AWK@ -BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -CPP = @CPP@ -DATADIRNAME = @DATADIRNAME@ -DEPDIR = @DEPDIR@ -GENCAT = @GENCAT@ -GLIBC21 = @GLIBC21@ -GMSGFMT = @GMSGFMT@ -HAVE_LIB = @HAVE_LIB@ -HELP2MAN = @HELP2MAN@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTOBJEXT = @INSTOBJEXT@ -INTLBISON = @INTLBISON@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ -INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -LIB = @LIB@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ -LTLIB = @LTLIB@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -PACKAGE = @PACKAGE@ -POSUB = @POSUB@ -PR_PROGRAM = @PR_PROGRAM@ -RANLIB = @RANLIB@ -STRIP = @STRIP@ -U = @U@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -am__include = @am__include@ -am__quote = @am__quote@ -install_sh = @install_sh@ - -EXTRA_DIST = config.bat config.sed config.site -subdir = ms -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -DIST_SOURCES = -DIST_COMMON = README Makefile.am Makefile.in -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits ms/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) -uninstall-info-am: -tags: TAGS -TAGS: - -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir)$$dir \ - || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile - -installdirs: - -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic mostlyclean-am - -distclean: distclean-am - -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic - -uninstall-am: uninstall-info-am - -.PHONY: all all-am check check-am clean clean-generic distclean \ - distclean-generic distdir dvi dvi-am info info-am install \ - install-am install-data install-data-am install-exec \ - install-exec-am install-info install-info-am install-man \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic uninstall uninstall-am uninstall-info-am - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/bin/diffutils/ms/README b/src/bin/diffutils/ms/README deleted file mode 100644 index 24b8082aa9..0000000000 --- a/src/bin/diffutils/ms/README +++ /dev/null @@ -1,66 +0,0 @@ -This directory contains files required to build GNU Diffutils on -MS_DOS and MS-Windows using the DJGPP tools. - -To build Diffutils, you will need the following packages: - - . the basic DJGPP development kit: GCC, Binutils, and djdevNNN.zip - . a DJGPP port of Bash (bsh204b.zip) - . GNU Fileutils (fil40b.zip) - . GNU Textutils (txt20b.zip) - . GNU Sh-utils (shl112b.zip) - . GNU Grep (grep24b.zip) - . GNU Awk (gwk306b.zip) - . GNU Sed (sed302b.zip) - . GNU Make (mak3791b.zip) - -The package names in parentheses indicate the oldest version which -should work; newer versions are okay. All those packages can be found -on the usual DJGPP sites, in the v2gnu directory. Please see - for a list of DJGPP sites. - -The source distribution of Diffutils you find on DJGPP sites comes -preconfigured for the latest officially released version of the DJGPP -library, and without NLS support. If that is what you have installed, -and if you don't need NLS support in Diffutils, you don't need to run -the configure script; proceed directly to the "make" step below. - -If you are building the official GNU distribution, or your library is -not the latest official release, or if you modified your headers or -installed optional libraries, or if you want to have NLS support in -Diffutils, you will have to reconfigure the package. To this end, -after unpacking the sources, chdir to the top-level directory created -by unpacking, and type this command: - - ms\config [nls] - -The "nls" option, if given, will configure the package for NLS -support. - -This will run for a while and create the Makefile's and the config.h -header file. - -Next type "make"; this will build the programs. - -To install the package, type "make install". - -That's it! - ------ -Copyright (C) 2001 Free Software Foundation, Inc. - -This file is part of GNU DIFF. - -GNU DIFF is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU DIFF is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with tar; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. diff --git a/src/bin/diffutils/ms/config.bat b/src/bin/diffutils/ms/config.bat deleted file mode 100644 index bc1c46c2fb..0000000000 --- a/src/bin/diffutils/ms/config.bat +++ /dev/null @@ -1,261 +0,0 @@ -@echo off - -echo Configuring GNU Diffutils for DJGPP v2.x... - -Rem Copyright (C) 2001 Free Software Foundation, Inc. - -Rem This program is free software; you can redistribute it and/or modify -Rem it under the terms of the GNU General Public License as published by -Rem the Free Software Foundation; either version 2, or (at your option) -Rem any later version. - -Rem This program is distributed in the hope that it will be useful, -Rem but WITHOUT ANY WARRANTY; without even the implied warranty of -Rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -Rem GNU General Public License for more details. - -Rem You should have received a copy of the GNU General Public License -Rem along with this program; if not, write to the Free Software -Rem Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -Rem 02111-1307, USA. - -Rem Written by Eli Zaretskii. - - -Rem The small_env tests protect against fixed and too small size -Rem of the environment in stock DOS shell. - -Rem Find out if NLS is wanted or not, -Rem if dependency-tracking is wanted or not, -Rem if cache is wanted or not -Rem and where the sources are. -set ARGS= -set NLS=disabled -if not "%NLS%" == "disabled" goto small_env -set CACHE=enabled -if not "%CACHE%" == "enabled" goto small_env -set DEPENDENCY_TRACKING=disabled -if not "%DEPENDENCY_TRACKING%" == "disabled" goto small_env -set XSRC=. -if not "%XSRC%" == "." goto small_env - -Rem Loop over all arguments. -Rem Special arguments are: NLS, XSRC CACHE and DEPS. -Rem All other arguments are stored into ARGS. -:arg_loop -set SPECIAL_ARG_SEEN=0 -if not "%SPECIAL_ARG_SEEN%" == "0" goto small_env -if "%1" == "NLS" goto nls_on -if not "%1" == "nls" goto CacheOpt -:nls_on -if "%1" == "nls" set NLS=enabled -if "%1" == "NLS" set NLS=enabled -if not "%NLS%" == "enabled" goto small_env -set SPECIAL_ARG_SEEN=1 -if not "%SPECIAL_ARG_SEEN%" == "1" goto small_env -shift -:CacheOpt -set SPECIAL_ARG_SEEN=0 -if not "%SPECIAL_ARG_SEEN%" == "0" goto small_env -if "%1" == "no-cache" goto cache_off -if "%1" == "no-CACHE" goto cache_off -if not "%1" == "NO-CACHE" goto dependency_opt -:cache_off -if "%1" == "no-cache" set CACHE=disabled -if "%1" == "no-CACHE" set CACHE=disabled -if "%1" == "NO-CACHE" set CACHE=disabled -if not "%CACHE%" == "disabled" goto small_env -set SPECIAL_ARG_SEEN=1 -if not "%SPECIAL_ARG_SEEN%" == "1" goto small_env -shift -:dependency_opt -set SPECIAL_ARG_SEEN=0 -if not "%SPECIAL_ARG_SEEN%" == "0" goto small_env -if "%1" == "dep" goto dep_off -if not "%1" == "DEP" goto src_dir_opt -:dep_off -if "%1" == "dep" set DEPENDENCY_TRACKING=enabled -if "%1" == "DEP" set DEPENDENCY_TRACKING=enabled -if not "%DEPENDENCY_TRACKING%" == "enabled" goto small_env -set SPECIAL_ARG_SEEN=1 -if not "%SPECIAL_ARG_SEEN%" == "1" goto small_env -shift -:src_dir_opt -set SPECIAL_ARG_SEEN=0 -if not "%SPECIAL_ARG_SEEN%" == "0" goto small_env -echo %1 | grep -q "/" -if errorlevel 1 goto collect_arg -set XSRC=%1 -if not "%XSRC%" == "%1" goto small_env -set SPECIAL_ARG_SEEN=1 -if not "%SPECIAL_ARG_SEEN%" == "1" goto small_env -:collect_arg -if "%SPECIAL_ARG_SEEN%" == "0" set _ARGS=%ARGS% %1 -if "%SPECIAL_ARG_SEEN%" == "0" if not "%_ARGS%" == "%ARGS% %1" goto small_env -echo %_ARGS% | grep -q "[^ ]" -if not errorlevel 0 set ARGS=%_ARGS% -set _ARGS= -shift -if not "%1" == "" goto arg_loop -set SPECIAL_ARG_SEEN= - -Rem Create a response file for the configure script. -echo --srcdir=%XSRC% > arguments -if "%CACHE%" == "enabled" echo --config-cache >> arguments -if "%DEPENDENCY_TRACKING%" == "enabled" echo --enable-dependency-tracking >> arguments -if "%DEPENDENCY_TRACKING%" == "disabled" echo --disable-dependency-tracking >> arguments -if not "%ARGS%" == "" echo %ARGS% >> arguments -set ARGS= -set CACHE= -set DEPENDENCY_TRACKING= - -if "%XSRC%" == "." goto in_place - -:not_in_place -redir -e /dev/null update %XSRC%/configure.orig ./configure -test -f ./configure -if errorlevel 1 update %XSRC%/configure ./configure - -:in_place -Rem Update configuration files -echo Updating configuration scripts... -test -f ./configure.orig -if errorlevel 1 update configure configure.orig -sed -f %XSRC%/ms/config.sed configure.orig > configure -if errorlevel 1 goto sed_error - -Rem Make sure they have a config.site file -set CONFIG_SITE=%XSRC%/ms/config.site -if not "%CONFIG_SITE%" == "%XSRC%/ms/config.site" goto small_env - -Rem Make sure crucial file names are not munged by unpacking -test -f %XSRC%/po/Makefile.in.in -if not errorlevel 1 mv -f %XSRC%/po/Makefile.in.in %XSRC%/po/Makefile.in-in -test -f %XSRC%/m4/Makefile.am.in -if not errorlevel 1 mv -f %XSRC%/m4/Makefile.am.in %XSRC%/m4/Makefile.am-in - -Rem This is required because DOS/Windows are case-insensitive -Rem to file names, and "make install" will do nothing if Make -Rem finds a file called `install'. -if exist INSTALL ren INSTALL INSTALL.txt - -Rem Set HOME to a sane default so configure stops complaining. -if not "%HOME%" == "" goto HostName -set HOME=%XSRC%/ms -if not "%HOME%" == "%XSRC%/ms" goto small_env -echo No HOME found in the environment, using default value - -:HostName -Rem Set HOSTNAME so it shows in config.status -if not "%HOSTNAME%" == "" goto hostdone -if "%windir%" == "" goto msdos -set OS=MS-Windows -if not "%OS%" == "MS-Windows" goto small_env -goto haveos -:msdos -set OS=MS-DOS -if not "%OS%" == "MS-DOS" goto small_env -:haveos -if not "%USERNAME%" == "" goto haveuname -if not "%USER%" == "" goto haveuser -echo No USERNAME and no USER found in the environment, using default values -set HOSTNAME=Unknown PC -if not "%HOSTNAME%" == "Unknown PC" goto small_env -goto userdone -:haveuser -set HOSTNAME=%USER%'s PC -if not "%HOSTNAME%" == "%USER%'s PC" goto small_env -goto userdone -:haveuname -set HOSTNAME=%USERNAME%'s PC -if not "%HOSTNAME%" == "%USERNAME%'s PC" goto small_env -:userdone -set _HOSTNAME=%HOSTNAME%, %OS% -if not "%_HOSTNAME%" == "%HOSTNAME%, %OS%" goto small_env -set HOSTNAME=%_HOSTNAME% -:hostdone -set _HOSTNAME= -set OS= - -Rem install-sh is required by the configure script but clashes with the -Rem various Makefile install-foo targets, so we MUST have it before the -Rem script runs and rename it afterwards -test -f %XSRC%/install-sh -if not errorlevel 1 goto no_ren0 -test -f %XSRC%/install-sh.sh -if not errorlevel 1 mv -f %XSRC%/install-sh.sh %XSRC%/install-sh -:no_ren0 - -if "%NLS%" == "disabled" goto without_NLS - -:with_NLS -Rem Check for the needed libraries and binaries. -test -x /dev/env/DJDIR/bin/msgfmt.exe -if not errorlevel 0 goto missing_NLS_tools -test -x /dev/env/DJDIR/bin/xgettext.exe -if not errorlevel 0 goto missing_NLS_tools -test -f /dev/env/DJDIR/include/libcharset.h -if not errorlevel 0 goto missing_NLS_tools -test -f /dev/env/DJDIR/lib/libcharset.a -if not errorlevel 0 goto missing_NLS_tools -test -f /dev/env/DJDIR/include/iconv.h -if not errorlevel 0 goto missing_NLS_tools -test -f /dev/env/DJDIR/lib/libiconv.a -if not errorlevel 0 goto missing_NLS_tools -test -f /dev/env/DJDIR/include/libintl.h -if not errorlevel 0 goto missing_NLS_tools -test -f /dev/env/DJDIR/lib/libintl.a -if not errorlevel 0 goto missing_NLS_tools - -Rem Recreate the files in the %XSRC%/po subdir with our ported tools. -redir -e /dev/null rm %XSRC%/po/*.gmo -redir -e /dev/null rm %XSRC%/po/diffutil*.pot -redir -e /dev/null rm %XSRC%/po/cat-id-tbl.c -redir -e /dev/null rm %XSRC%/po/stamp-cat-id - -Rem Update the arguments file for the configure script. -Rem We prefer without-included-gettext because libintl.a from gettext package -Rem is the only one that is guaranteed to have been ported to DJGPP. -echo --enable-nls --without-included-gettext >> arguments -goto configure_package - -:missing_NLS_tools -echo Needed libs/tools for NLS not found. Configuring without NLS. -:without_NLS -Rem Update the arguments file for the configure script. -echo --disable-nls >> arguments - -:configure_package -echo Running the ./configure script... -sh ./configure @arguments -if errorlevel 1 goto cfg_error -rm arguments -echo Done. -goto End - -:sed_error -echo ./configure script editing failed! -goto End - -:cfg_error -echo ./configure script exited abnormally! -goto End - -:small_env -echo Your environment size is too small. Enlarge it and run me again. -echo Configuration NOT done! - -:End -test -f %XSRC%/install-sh.sh -if not errorlevel 1 goto no_ren1 -test -f %XSRC%/install-sh -if not errorlevel 1 mv -f %XSRC%/install-sh %XSRC%/install-sh.sh -:no_ren1 -if "%HOME%" == "%XSRC%/ms" set HOME= -set ARGS= -set CONFIG_SITE= -set HOSTNAME= -set NLS= -set CACHE= -set DEPENDENCY_TRACKING= -set XSRC= diff --git a/src/bin/diffutils/ms/config.sed b/src/bin/diffutils/ms/config.sed deleted file mode 100644 index 332eb5c1f7..0000000000 --- a/src/bin/diffutils/ms/config.sed +++ /dev/null @@ -1,87 +0,0 @@ -# Additional editing of Makefiles and of config.status - -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# Written by Eli Zaretskii. - - -/(echo[ ]*':t/ a\ -# DJGPP specific Makefile changes.\ - /^aliaspath * *=/s,:,";",g;t t\ - /TEXINPUTS=/s,:,";",g;t t\ - /PATH=/s,:,";",g;t t\ - s,\\.deps,_deps,g;t t\ - s,\\.new\\.,_new.,g;t t\ - s,\\.old\\.,_old.,g;t t\ - s,\\.tab\\.,_tab.,g;t t\ - s,Makefile\\.in\\.in,Makefile.in-in,g;t t\ - s,Makefile\\.am\\.in,Makefile.am-in,g;t t\ - /^install-info-am:/,/^$/ {\ - /@list=.\\\$(INFO_DEPS)\[^ \]/s,DEPS),& diff.i,\ - s,\\(\\\$\\\$d/\\\$\\\$file-\\[0-9\\]\\[0-9\\]\\)\\(\[^ \]\\),\\1 \\$\\$d/\\$\\$file[0-9] \\$\\$d/\\$\\$file[0-9][0-9]\\2,\ - s,\\( \\\$\\\$file-\\[0-9\\]\\[0-9\\]\\)\\(\[^ \]\\),\\1 \\$\\$file[0-9] \\$\\$file[0-9][0-9]\\2,\ - }\ - /^uninstall-info-am:/,/^$/ {\ - /@list=.\\\$(INFO_DEPS)\[^ \]/s,DEPS),& diff.i,\ - s,\\(file-\\[0-9\\]\\[0-9\\]\\)\\(\[^ \]\\),\\1 \\$\\$file[0-9] \\$\\$file[0-9][0-9]\\2,\ - } - -# Makefile.in.in is renamed to Makefile.in-in. -/^ac_config_files=/,/_ACEOF/ { - s|po/Makefile\.in|&:po/Makefile.in-in| -} -/CONFIG_FILES=/ s|po/Makefile\.in|&:po/Makefile.in-in|2 - -# We always use _deps instead of .deps, because the latter is an -# invalid name on 8+3 MS-DOS filesystem. This makes the generated -# Makefiles good for every DJGPP installation, not only the one -# where the package was configured (which could happen to be a -# Windows box, where leading dots in file names are allowed). -s,\.deps,_deps,g - -# The following two items are changes needed for configuring -# and compiling across partitions. -# The given srcdir value is always translated from the -# "x:" syntax into "/dev/x" syntax while we run configure. -/^[ ]*-srcdir=\*.*$/ a\ - ac_optarg=`echo "$ac_optarg" | sed "s,^\\([A-Za-z]\\):,/dev/\\1,"` -/set X `ls -Lt \$srcdir/ i\ - if `echo $srcdir | grep "^/dev/" - > /dev/null`; then\ - srcdir=`echo "$srcdir" | sed -e "s%^/dev/%%" -e "s%/%:/%"`\ - fi - -# Autoconf 2.52e generated configure scripts write absolute paths into -# Makefiles, making them useless for DJGPP installations other than the -# one for which the package has been configured. -/MISSING=/,/^$/ { - /^fi$/ a\ -am_missing_run=`echo "$am_missing_run" | sed 's%/dev.*/diffutil.*[-.]2.*[7-9].*[0-9]%${top_srcdir}%'` -} -/^install_sh=/a\ -install_sh=`echo "$install_sh" | sed 's%/dev.*/diffutil.*[-.]2.*[7-9].*[0-9]%${top_srcdir}%'` - - -# The following makes sure we are not going to remove a directory -# which is the cwd on its drive (DOS doesn't allow to remove such -# a directory). The trick is to chdir to the root directory on -# temp directory's drive. -/^ *trap 'exit_status=\$\?; rm -rf/s%rm -rf%cd $tmp; cd /; &% - -# AC_CONFIG_LINKS fails if the source and destination are on -# different file systems and symlinks don't work. -/^ ln \$srcdir/s%||%|| cp -pf $srcdir/$ac_source $ac_dest ||% diff --git a/src/bin/diffutils/ms/config.site b/src/bin/diffutils/ms/config.site deleted file mode 100644 index e8c4b9f31a..0000000000 --- a/src/bin/diffutils/ms/config.site +++ /dev/null @@ -1,81 +0,0 @@ -#! /bin/sh -# Site defaults for the DJGPP configuration - -# Copyright (C) 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# Written by Eli Zaretskii. - - -# These two variables are required, otherwise looking for -# programs along the PATH will not work. -PATH_SEPARATOR=: -PATH_EXPAND=y - -# This is required in for "test -f foo" to find foo.exe. -export TEST_FINDS_EXE=y - -# The root of the DJGPP tree serves as the default prefix -# for all paths that are hardcoded in the binaries. -# When installing the installation prefix must be supplied. -test "x$prefix" = xNONE && prefix='/dev/env/DJDIR' - -# This is required for config.status script to be run, since -# ./configure runs it by invoking ${CONFIG_SHELL-/bin/sh} -# CONFIG_SHELL=${CONFIG_SHELL='sh'} - -# These are set here so the generated Makefile's will be good -# for every DJGPP installation, not only the one where the -# package was configured. -# $INSTALL must be an absolute path name, otherwise config.status -# will try to prepend ./ and ../ to it when it goes into subdirs. -INSTALL=${INSTALL='/dev/env/DJDIR/bin/ginstall -c'} -RANLIB=${RANLIB='ranlib'} -GMSGFMT=${GMSGFMT='/dev/env/DJDIR/bin/msgfmt'} -MSGFMT=${MSGFMT='/dev/env/DJDIR/bin/msgfmt'} -XGETTEXT=${XGETTEXT='/dev/env/DJDIR/bin/xgettext'} - -# Sane defaults for standard programs compiled into the package that -# we are about to build. Use .exe extension so that library functions -# invoking these programs will provide a better diagnostics when a -# program is not found: the library won't need to call the stock DOS -# shell, which always returns a zero status, even if it doesn't find -# the program. -ac_cv_path_PR_PROGRAM=${PR_PROGRAM='/dev/env/DJDIR/bin/pr.exe'} - -# Sane defaults for standard programs used by the build process. -# We force the values of these variables so that the resultant -# Makefile's will work on any DJGPP platform, not only on the -# machine where the package was configured. -ac_cv_prog_AWK=${AWK='gawk'} -ac_cv_prog_INTLBISON=${INTLBISON='bison'} -ac_cv_prog_CC=${CC='gcc'} - -# These are set here so the generated libtool/Makefile's will -# be good for every DJGPP installation, not only the one where -# the package was configured. -NM=${NM='nm'} -LD=${LD='ld'} -MAKEINFO=${MAKEINFO='makeinfo'} - -# Force the test for 'ln -s' to report 'cp -pf'. -ac_cv_prog_LN_S='cp -pf' - -# We have `fork', but it always fails. Don't trust Autoconf to be -# smart enough to detect that... -ac_cv_func_fork=no -ac_cv_func_vfork=no diff --git a/src/bin/diffutils/po/LINGUAS b/src/bin/diffutils/po/LINGUAS deleted file mode 100644 index 603a5833a4..0000000000 --- a/src/bin/diffutils/po/LINGUAS +++ /dev/null @@ -1 +0,0 @@ -cs da de en_GB eo es fr gl he id ja pl ru sv tr zh_TW diff --git a/src/bin/diffutils/po/Makefile b/src/bin/diffutils/po/Makefile deleted file mode 100644 index f7bf9e9921..0000000000 --- a/src/bin/diffutils/po/Makefile +++ /dev/null @@ -1,397 +0,0 @@ -# Makefile for PO directory in any package using GNU gettext. -# Copyright (C) 1995-1997, 2000-2002 by Ulrich Drepper -# -# This file can be copied and used freely without restrictions. It can -# be used in projects which are not available under the GNU General Public -# License but which still want to provide support for the GNU gettext -# functionality. -# Please note that the actual code of GNU gettext is covered by the GNU -# General Public License and is *not* in the public domain. - -PACKAGE = diffutils -VERSION = 2.8.1 - -SHELL = /bin/sh - - -srcdir = . -top_srcdir = .. - - -prefix = /usr/local -exec_prefix = ${prefix} -datadir = ${prefix}/share -localedir = $(datadir)/locale -gettextsrcdir = $(datadir)/gettext/po - -INSTALL = /bin/install -c -INSTALL_DATA = ${INSTALL} -m 644 -MKINSTALLDIRS = config/mkinstalldirs -mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` - -GMSGFMT = : -MSGFMT = : -XGETTEXT = AWK='gawk' $(SHELL) $(top_srcdir)/exgettext : -MSGMERGE = msgmerge -MSGMERGE_UPDATE = : --update -MSGINIT = msginit -MSGCONV = msgconv -MSGFILTER = msgfilter - -POFILES = cs.po da.po de.po en_GB.po eo.po es.po fr.po gl.po he.po id.po ja.po pl.po ru.po sv.po tr.po zh_TW.po -GMOFILES = cs.gmo da.gmo de.gmo en_GB.gmo eo.gmo es.gmo fr.gmo gl.gmo he.gmo id.gmo ja.gmo pl.gmo ru.gmo sv.gmo tr.gmo zh_TW.gmo -UPDATEPOFILES = cs.po-update da.po-update de.po-update en_GB.po-update eo.po-update es.po-update fr.po-update gl.po-update he.po-update id.po-update ja.po-update pl.po-update ru.po-update sv.po-update tr.po-update zh_TW.po-update -DUMMYPOFILES = cs.nop da.nop de.nop en_GB.nop eo.nop es.nop fr.nop gl.nop he.nop id.nop ja.nop pl.nop ru.nop sv.nop tr.nop zh_TW.nop -DISTFILES.common = Makefile.in.in Makevars remove-potcdate.sin \ -$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) -DISTFILES = $(DISTFILES.common) POTFILES.in $(DOMAIN).pot \ -$(POFILES) $(GMOFILES) \ -$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) - -POTFILES = \ - ../lib/c-stack.c \ - ../lib/error.c \ - ../lib/freesoft.c \ - ../lib/getopt.c \ - ../lib/regex.c \ - ../lib/xmalloc.c \ - ../src/analyze.c \ - ../src/cmp.c \ - ../src/diff.c \ - ../src/diff3.c \ - ../src/dir.c \ - ../src/sdiff.c \ - ../src/util.c - -CATALOGS = cs.gmo da.gmo de.gmo en_GB.gmo eo.gmo es.gmo fr.gmo gl.gmo he.gmo id.gmo ja.gmo pl.gmo ru.gmo sv.gmo tr.gmo zh_TW.gmo - -# Makevars gets inserted here. (Don't remove this line!) -# Makefile variables for PO directory in any package using GNU gettext. - -# Usually the message domain is the same as the package name. -DOMAIN = $(PACKAGE) - -# These two variables depend on the location of this directory. -subdir = po -top_builddir = .. - -# These options get passed to xgettext. -XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ - -# This is the copyright holder that gets inserted into the header of the -# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding -# package. (Note that the msgstr strings, extracted from the package's -# sources, belong to the copyright holder of the package.) Translators are -# expected to transfer the copyright for their translations to this person -# or entity, or to disclaim their copyright. The empty string stands for -# the public domain; in this case the translators are expected to disclaim -# their copyright. -COPYRIGHT_HOLDER = Free Software Foundation, Inc. - -# This is the list of locale categories, beyond LC_MESSAGES, for which the -# message catalogs shall be used. It is usually empty. -EXTRA_LOCALE_CATEGORIES = - -.SUFFIXES: -.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-update - -.po.mo: - @echo "$(MSGFMT) -c -o $@ $<"; \ - $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ - -.po.gmo: - @lang=`echo $* | sed -e 's,.*/,,'`; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ - cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo - -.sin.sed: - sed -e '/^#/d' $< > t-$@ - mv t-$@ $@ - - -all: all-no - -all-yes: $(CATALOGS) -all-no: - -# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', -# otherwise packages like GCC can not be built if only parts of the source -# have been downloaded. - -$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed - $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ - --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ - --files-from=$(srcdir)/POTFILES.in \ - --copyright-holder='$(COPYRIGHT_HOLDER)' - test ! -f $(DOMAIN).po || { \ - if test -f $(srcdir)/$(DOMAIN).pot; then \ - sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ - sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ - if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ - rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ - else \ - rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ - mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ - fi; \ - else \ - mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ - fi; \ - } - -$(srcdir)/$(DOMAIN).pot: - $(MAKE) $(DOMAIN).pot-update - -$(POFILES): $(srcdir)/$(DOMAIN).pot - @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ - cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot - - -install: install-exec install-data -install-exec: -install-data: install-data-no - if test "$(PACKAGE)" = "gettext"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - for file in $(DISTFILES.common); do \ - $(INSTALL_DATA) $(srcdir)/$$file \ - $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - else \ - : ; \ - fi -install-data-no: all -install-data-yes: all - $(mkinstalldirs) $(DESTDIR)$(datadir) - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ - if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ - $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ - echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ - for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ - if test -n "$$lc"; then \ - if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ - link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ - mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ - for file in *; do \ - if test -f $$file; then \ - ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ - fi; \ - done); \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - else \ - if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ - :; \ - else \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - fi; \ - fi; \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ - ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ - cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ - fi; \ - done; \ - done - -install-strip: install - -installdirs: installdirs-exec installdirs-data -installdirs-exec: -installdirs-data: installdirs-data-no - if test "$(PACKAGE)" = "gettext"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - else \ - : ; \ - fi -installdirs-data-no: -installdirs-data-yes: - $(mkinstalldirs) $(DESTDIR)$(datadir) - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ - for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ - if test -n "$$lc"; then \ - if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ - link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ - mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ - for file in *; do \ - if test -f $$file; then \ - ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ - fi; \ - done); \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - else \ - if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ - :; \ - else \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - fi; \ - fi; \ - fi; \ - done; \ - done - -# Define this as empty until I found a useful application. -installcheck: - -uninstall: uninstall-exec uninstall-data -uninstall-exec: -uninstall-data: uninstall-data-no - if test "$(PACKAGE)" = "gettext"; then \ - for file in $(DISTFILES.common); do \ - rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - else \ - : ; \ - fi -uninstall-data-no: -uninstall-data-yes: - catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - done; \ - done - -check: all - -dvi info tags TAGS ID: - -mostlyclean: - rm -f remove-potcdate.sed - rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po - rm -fr *.o - -clean: mostlyclean - -distclean: clean - rm -f Makefile Makefile.in POTFILES *.mo - -maintainer-clean: distclean - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - rm -f $(GMOFILES) - -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) -dist distdir: - $(MAKE) update-po - @$(MAKE) dist2 -# This is a separate target because 'update-po' must be executed before. -dist2: $(DISTFILES) - dists="$(DISTFILES)"; \ - if test -f $(srcdir)/ChangeLog; then dists="$$dists ChangeLog"; fi; \ - if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ - for file in $$dists; do \ - if test -f $$file; then \ - cp -p $$file $(distdir); \ - else \ - cp -p $(srcdir)/$$file $(distdir); \ - fi; \ - done - -update-po: Makefile - $(MAKE) $(DOMAIN).pot-update - $(MAKE) $(UPDATEPOFILES) - $(MAKE) update-gmo - -# General rule for updating PO files. - -.nop.po-update: - @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ - if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \ - tmpdir=`pwd`; \ - echo "$$lang:"; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ - cd $(srcdir); \ - if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ - if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ - rm -f $$tmpdir/$$lang.new.po; \ - else \ - if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ - :; \ - else \ - echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ - exit 1; \ - fi; \ - fi; \ - else \ - echo "msgmerge for $$lang.po failed!" 1>&2; \ - rm -f $$tmpdir/$$lang.new.po; \ - fi - -$(DUMMYPOFILES): - -update-gmo: Makefile $(GMOFILES) - @: - -Makefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ - $(SHELL) ./config.status - -force: - -# Tell versions [3.59,3.63) of GNU make not to export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: -# Special Makefile rules for English message catalogs with quotation marks. - -DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot - -.SUFFIXES: .insert-header .po-update-en - -en@quot.po-update: en@quot.po-update-en -en@boldquot.po-update: en@boldquot.po-update-en - -.insert-header.po-update-en: - @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ - if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ - tmpdir=`pwd`; \ - echo "$$lang:"; \ - ll=`echo $$lang | sed -e 's/@.*//'`; \ - LC_ALL=C; export LC_ALL; \ - cd $(srcdir); \ - if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ - if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ - rm -f $$tmpdir/$$lang.new.po; \ - else \ - if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ - :; \ - else \ - echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ - exit 1; \ - fi; \ - fi; \ - else \ - echo "creation of $$lang.po failed!" 1>&2; \ - rm -f $$tmpdir/$$lang.new.po; \ - fi - -en@quot.insert-header: insert-header.sin - sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header - -en@boldquot.insert-header: insert-header.sin - sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header - -mostlyclean: mostlyclean-quot -mostlyclean-quot: - rm -f *.insert-header diff --git a/src/bin/diffutils/po/Makefile.in b/src/bin/diffutils/po/Makefile.in deleted file mode 100644 index 2b8a9619e0..0000000000 --- a/src/bin/diffutils/po/Makefile.in +++ /dev/null @@ -1,317 +0,0 @@ -# Makefile for PO directory in any package using GNU gettext. -# Copyright (C) 1995-1997, 2000-2002 by Ulrich Drepper -# -# This file can be copied and used freely without restrictions. It can -# be used in projects which are not available under the GNU General Public -# License but which still want to provide support for the GNU gettext -# functionality. -# Please note that the actual code of GNU gettext is covered by the GNU -# General Public License and is *not* in the public domain. - -PACKAGE = diffutils -VERSION = 2.8.1 - -SHELL = /bin/sh - - -srcdir = . -top_srcdir = .. - - -prefix = /usr/local -exec_prefix = ${prefix} -datadir = ${prefix}/share -localedir = $(datadir)/locale -gettextsrcdir = $(datadir)/gettext/po - -INSTALL = /bin/install -c -INSTALL_DATA = ${INSTALL} -m 644 -MKINSTALLDIRS = config/mkinstalldirs -mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` - -GMSGFMT = : -MSGFMT = : -XGETTEXT = AWK='gawk' $(SHELL) $(top_srcdir)/exgettext : -MSGMERGE = msgmerge -MSGMERGE_UPDATE = : --update -MSGINIT = msginit -MSGCONV = msgconv -MSGFILTER = msgfilter - -POFILES = @POFILES@ -GMOFILES = @GMOFILES@ -UPDATEPOFILES = @UPDATEPOFILES@ -DUMMYPOFILES = @DUMMYPOFILES@ -DISTFILES.common = Makefile.in.in Makevars remove-potcdate.sin \ -$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) -DISTFILES = $(DISTFILES.common) POTFILES.in $(DOMAIN).pot \ -$(POFILES) $(GMOFILES) \ -$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) - -POTFILES = \ - -CATALOGS = @CATALOGS@ - -# Makevars gets inserted here. (Don't remove this line!) - -.SUFFIXES: -.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-update - -.po.mo: - @echo "$(MSGFMT) -c -o $@ $<"; \ - $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ - -.po.gmo: - @lang=`echo $* | sed -e 's,.*/,,'`; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ - cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo - -.sin.sed: - sed -e '/^#/d' $< > t-$@ - mv t-$@ $@ - - -all: all-no - -all-yes: $(CATALOGS) -all-no: - -# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', -# otherwise packages like GCC can not be built if only parts of the source -# have been downloaded. - -$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed - $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ - --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ - --files-from=$(srcdir)/POTFILES.in \ - --copyright-holder='$(COPYRIGHT_HOLDER)' - test ! -f $(DOMAIN).po || { \ - if test -f $(srcdir)/$(DOMAIN).pot; then \ - sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ - sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ - if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ - rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ - else \ - rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ - mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ - fi; \ - else \ - mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ - fi; \ - } - -$(srcdir)/$(DOMAIN).pot: - $(MAKE) $(DOMAIN).pot-update - -$(POFILES): $(srcdir)/$(DOMAIN).pot - @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ - cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot - - -install: install-exec install-data -install-exec: -install-data: install-data-no - if test "$(PACKAGE)" = "gettext"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - for file in $(DISTFILES.common); do \ - $(INSTALL_DATA) $(srcdir)/$$file \ - $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - else \ - : ; \ - fi -install-data-no: all -install-data-yes: all - $(mkinstalldirs) $(DESTDIR)$(datadir) - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ - if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ - $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ - echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ - for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ - if test -n "$$lc"; then \ - if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ - link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ - mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ - for file in *; do \ - if test -f $$file; then \ - ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ - fi; \ - done); \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - else \ - if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ - :; \ - else \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - fi; \ - fi; \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ - ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ - cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ - fi; \ - done; \ - done - -install-strip: install - -installdirs: installdirs-exec installdirs-data -installdirs-exec: -installdirs-data: installdirs-data-no - if test "$(PACKAGE)" = "gettext"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - else \ - : ; \ - fi -installdirs-data-no: -installdirs-data-yes: - $(mkinstalldirs) $(DESTDIR)$(datadir) - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ - for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ - if test -n "$$lc"; then \ - if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ - link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ - mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ - for file in *; do \ - if test -f $$file; then \ - ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ - fi; \ - done); \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - else \ - if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ - :; \ - else \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - fi; \ - fi; \ - fi; \ - done; \ - done - -# Define this as empty until I found a useful application. -installcheck: - -uninstall: uninstall-exec uninstall-data -uninstall-exec: -uninstall-data: uninstall-data-no - if test "$(PACKAGE)" = "gettext"; then \ - for file in $(DISTFILES.common); do \ - rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - else \ - : ; \ - fi -uninstall-data-no: -uninstall-data-yes: - catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - done; \ - done - -check: all - -dvi info tags TAGS ID: - -mostlyclean: - rm -f remove-potcdate.sed - rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po - rm -fr *.o - -clean: mostlyclean - -distclean: clean - rm -f Makefile Makefile.in POTFILES *.mo - -maintainer-clean: distclean - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - rm -f $(GMOFILES) - -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) -dist distdir: - $(MAKE) update-po - @$(MAKE) dist2 -# This is a separate target because 'update-po' must be executed before. -dist2: $(DISTFILES) - dists="$(DISTFILES)"; \ - if test -f $(srcdir)/ChangeLog; then dists="$$dists ChangeLog"; fi; \ - if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ - for file in $$dists; do \ - if test -f $$file; then \ - cp -p $$file $(distdir); \ - else \ - cp -p $(srcdir)/$$file $(distdir); \ - fi; \ - done - -update-po: Makefile - $(MAKE) $(DOMAIN).pot-update - $(MAKE) $(UPDATEPOFILES) - $(MAKE) update-gmo - -# General rule for updating PO files. - -.nop.po-update: - @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ - if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \ - tmpdir=`pwd`; \ - echo "$$lang:"; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ - cd $(srcdir); \ - if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ - if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ - rm -f $$tmpdir/$$lang.new.po; \ - else \ - if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ - :; \ - else \ - echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ - exit 1; \ - fi; \ - fi; \ - else \ - echo "msgmerge for $$lang.po failed!" 1>&2; \ - rm -f $$tmpdir/$$lang.new.po; \ - fi - -$(DUMMYPOFILES): - -update-gmo: Makefile $(GMOFILES) - @: - -Makefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ - $(SHELL) ./config.status - -force: - -# Tell versions [3.59,3.63) of GNU make not to export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/bin/diffutils/po/Makefile.in.in b/src/bin/diffutils/po/Makefile.in.in deleted file mode 100644 index ada8bb4ffa..0000000000 --- a/src/bin/diffutils/po/Makefile.in.in +++ /dev/null @@ -1,317 +0,0 @@ -# Makefile for PO directory in any package using GNU gettext. -# Copyright (C) 1995-1997, 2000-2002 by Ulrich Drepper -# -# This file can be copied and used freely without restrictions. It can -# be used in projects which are not available under the GNU General Public -# License but which still want to provide support for the GNU gettext -# functionality. -# Please note that the actual code of GNU gettext is covered by the GNU -# General Public License and is *not* in the public domain. - -PACKAGE = @PACKAGE@ -VERSION = @VERSION@ - -SHELL = /bin/sh -@SET_MAKE@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ - -prefix = @prefix@ -exec_prefix = @exec_prefix@ -datadir = @datadir@ -localedir = $(datadir)/locale -gettextsrcdir = $(datadir)/gettext/po - -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` - -GMSGFMT = @GMSGFMT@ -MSGFMT = @MSGFMT@ -XGETTEXT = @XGETTEXT@ -MSGMERGE = msgmerge -MSGMERGE_UPDATE = @MSGMERGE@ --update -MSGINIT = msginit -MSGCONV = msgconv -MSGFILTER = msgfilter - -POFILES = @POFILES@ -GMOFILES = @GMOFILES@ -UPDATEPOFILES = @UPDATEPOFILES@ -DUMMYPOFILES = @DUMMYPOFILES@ -DISTFILES.common = Makefile.in.in Makevars remove-potcdate.sin \ -$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) -DISTFILES = $(DISTFILES.common) POTFILES.in $(DOMAIN).pot \ -$(POFILES) $(GMOFILES) \ -$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) - -POTFILES = \ - -CATALOGS = @CATALOGS@ - -# Makevars gets inserted here. (Don't remove this line!) - -.SUFFIXES: -.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-update - -.po.mo: - @echo "$(MSGFMT) -c -o $@ $<"; \ - $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ - -.po.gmo: - @lang=`echo $* | sed -e 's,.*/,,'`; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ - cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo - -.sin.sed: - sed -e '/^#/d' $< > t-$@ - mv t-$@ $@ - - -all: all-@USE_NLS@ - -all-yes: $(CATALOGS) -all-no: - -# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', -# otherwise packages like GCC can not be built if only parts of the source -# have been downloaded. - -$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed - $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ - --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ - --files-from=$(srcdir)/POTFILES.in \ - --copyright-holder='$(COPYRIGHT_HOLDER)' - test ! -f $(DOMAIN).po || { \ - if test -f $(srcdir)/$(DOMAIN).pot; then \ - sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ - sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ - if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ - rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ - else \ - rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ - mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ - fi; \ - else \ - mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ - fi; \ - } - -$(srcdir)/$(DOMAIN).pot: - $(MAKE) $(DOMAIN).pot-update - -$(POFILES): $(srcdir)/$(DOMAIN).pot - @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ - cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot - - -install: install-exec install-data -install-exec: -install-data: install-data-@USE_NLS@ - if test "$(PACKAGE)" = "gettext"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - for file in $(DISTFILES.common); do \ - $(INSTALL_DATA) $(srcdir)/$$file \ - $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - else \ - : ; \ - fi -install-data-no: all -install-data-yes: all - $(mkinstalldirs) $(DESTDIR)$(datadir) - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ - if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ - $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ - echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ - for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ - if test -n "$$lc"; then \ - if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ - link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ - mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ - for file in *; do \ - if test -f $$file; then \ - ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ - fi; \ - done); \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - else \ - if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ - :; \ - else \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - fi; \ - fi; \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ - ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ - cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ - fi; \ - done; \ - done - -install-strip: install - -installdirs: installdirs-exec installdirs-data -installdirs-exec: -installdirs-data: installdirs-data-@USE_NLS@ - if test "$(PACKAGE)" = "gettext"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - else \ - : ; \ - fi -installdirs-data-no: -installdirs-data-yes: - $(mkinstalldirs) $(DESTDIR)$(datadir) - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ - for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ - if test -n "$$lc"; then \ - if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ - link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ - mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ - for file in *; do \ - if test -f $$file; then \ - ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ - fi; \ - done); \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - else \ - if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ - :; \ - else \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - fi; \ - fi; \ - fi; \ - done; \ - done - -# Define this as empty until I found a useful application. -installcheck: - -uninstall: uninstall-exec uninstall-data -uninstall-exec: -uninstall-data: uninstall-data-@USE_NLS@ - if test "$(PACKAGE)" = "gettext"; then \ - for file in $(DISTFILES.common); do \ - rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - else \ - : ; \ - fi -uninstall-data-no: -uninstall-data-yes: - catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - done; \ - done - -check: all - -dvi info tags TAGS ID: - -mostlyclean: - rm -f remove-potcdate.sed - rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po - rm -fr *.o - -clean: mostlyclean - -distclean: clean - rm -f Makefile Makefile.in POTFILES *.mo - -maintainer-clean: distclean - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - rm -f $(GMOFILES) - -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) -dist distdir: - $(MAKE) update-po - @$(MAKE) dist2 -# This is a separate target because 'update-po' must be executed before. -dist2: $(DISTFILES) - dists="$(DISTFILES)"; \ - if test -f $(srcdir)/ChangeLog; then dists="$$dists ChangeLog"; fi; \ - if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ - for file in $$dists; do \ - if test -f $$file; then \ - cp -p $$file $(distdir); \ - else \ - cp -p $(srcdir)/$$file $(distdir); \ - fi; \ - done - -update-po: Makefile - $(MAKE) $(DOMAIN).pot-update - $(MAKE) $(UPDATEPOFILES) - $(MAKE) update-gmo - -# General rule for updating PO files. - -.nop.po-update: - @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ - if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \ - tmpdir=`pwd`; \ - echo "$$lang:"; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ - cd $(srcdir); \ - if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ - if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ - rm -f $$tmpdir/$$lang.new.po; \ - else \ - if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ - :; \ - else \ - echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ - exit 1; \ - fi; \ - fi; \ - else \ - echo "msgmerge for $$lang.po failed!" 1>&2; \ - rm -f $$tmpdir/$$lang.new.po; \ - fi - -$(DUMMYPOFILES): - -update-gmo: Makefile $(GMOFILES) - @: - -Makefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ - $(SHELL) ./config.status - -force: - -# Tell versions [3.59,3.63) of GNU make not to export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/bin/diffutils/po/Makevars b/src/bin/diffutils/po/Makevars deleted file mode 100644 index 8b09f53b0f..0000000000 --- a/src/bin/diffutils/po/Makevars +++ /dev/null @@ -1,25 +0,0 @@ -# Makefile variables for PO directory in any package using GNU gettext. - -# Usually the message domain is the same as the package name. -DOMAIN = $(PACKAGE) - -# These two variables depend on the location of this directory. -subdir = po -top_builddir = .. - -# These options get passed to xgettext. -XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ - -# This is the copyright holder that gets inserted into the header of the -# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding -# package. (Note that the msgstr strings, extracted from the package's -# sources, belong to the copyright holder of the package.) Translators are -# expected to transfer the copyright for their translations to this person -# or entity, or to disclaim their copyright. The empty string stands for -# the public domain; in this case the translators are expected to disclaim -# their copyright. -COPYRIGHT_HOLDER = Free Software Foundation, Inc. - -# This is the list of locale categories, beyond LC_MESSAGES, for which the -# message catalogs shall be used. It is usually empty. -EXTRA_LOCALE_CATEGORIES = diff --git a/src/bin/diffutils/po/POTFILES b/src/bin/diffutils/po/POTFILES deleted file mode 100644 index 11c4d3115a..0000000000 --- a/src/bin/diffutils/po/POTFILES +++ /dev/null @@ -1,13 +0,0 @@ - ../lib/c-stack.c \ - ../lib/error.c \ - ../lib/freesoft.c \ - ../lib/getopt.c \ - ../lib/regex.c \ - ../lib/xmalloc.c \ - ../src/analyze.c \ - ../src/cmp.c \ - ../src/diff.c \ - ../src/diff3.c \ - ../src/dir.c \ - ../src/sdiff.c \ - ../src/util.c diff --git a/src/bin/diffutils/po/POTFILES.in b/src/bin/diffutils/po/POTFILES.in deleted file mode 100644 index 3a987b2dfe..0000000000 --- a/src/bin/diffutils/po/POTFILES.in +++ /dev/null @@ -1,33 +0,0 @@ -# List of files that contain translatable strings. - -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -lib/c-stack.c -lib/error.c -lib/freesoft.c -lib/getopt.c -lib/regex.c -lib/xmalloc.c - -src/analyze.c -src/cmp.c -src/diff.c -src/diff3.c -src/dir.c -src/sdiff.c -src/util.c diff --git a/src/bin/diffutils/po/Rules-quot b/src/bin/diffutils/po/Rules-quot deleted file mode 100644 index 5f46d237d2..0000000000 --- a/src/bin/diffutils/po/Rules-quot +++ /dev/null @@ -1,42 +0,0 @@ -# Special Makefile rules for English message catalogs with quotation marks. - -DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot - -.SUFFIXES: .insert-header .po-update-en - -en@quot.po-update: en@quot.po-update-en -en@boldquot.po-update: en@boldquot.po-update-en - -.insert-header.po-update-en: - @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ - if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ - tmpdir=`pwd`; \ - echo "$$lang:"; \ - ll=`echo $$lang | sed -e 's/@.*//'`; \ - LC_ALL=C; export LC_ALL; \ - cd $(srcdir); \ - if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ - if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ - rm -f $$tmpdir/$$lang.new.po; \ - else \ - if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ - :; \ - else \ - echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ - exit 1; \ - fi; \ - fi; \ - else \ - echo "creation of $$lang.po failed!" 1>&2; \ - rm -f $$tmpdir/$$lang.new.po; \ - fi - -en@quot.insert-header: insert-header.sin - sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header - -en@boldquot.insert-header: insert-header.sin - sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header - -mostlyclean: mostlyclean-quot -mostlyclean-quot: - rm -f *.insert-header diff --git a/src/bin/diffutils/po/boldquot.sed b/src/bin/diffutils/po/boldquot.sed deleted file mode 100644 index 4b937aa517..0000000000 --- a/src/bin/diffutils/po/boldquot.sed +++ /dev/null @@ -1,10 +0,0 @@ -s/"\([^"]*\)"/“\1”/g -s/`\([^`']*\)'/‘\1’/g -s/ '\([^`']*\)' / ‘\1’ /g -s/ '\([^`']*\)'$/ ‘\1’/g -s/^'\([^`']*\)' /‘\1’ /g -s/“”/""/g -s/“/“/g -s/”/”/g -s/‘/‘/g -s/’/’/g diff --git a/src/bin/diffutils/po/cs.gmo b/src/bin/diffutils/po/cs.gmo deleted file mode 100644 index 5ed97e16f161876669109c0c56e77ba69ace7918..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23035 zcmb`P3vgW5dEc)ZE4JWAY)h8)h^!+;BuEjv1gHloNRS1RAPEsK0U$_5bOu}=DZJF1MdYt zVeyy2KHmQg_yD*G?sJ?w-)X+zIRF-T{|Kl+ska~eHIVl2{IbQr2FD!duDihJK^LUn zU7rV^0RM~0|G;}e`v1UX@Fchbei;0h;BoN(neTV=P1?Wv;~-@M|FLe~>ZD z`v;}|G4OZ5r$EU+;W+mk0HMb{HIV0fehYjK{8NyA?q#mdI5-cU1)-s|bMN1Rw0+-W zApP7o57O>^p92qre-1*=`#%6u?|%Al9sz#>JPm#kgy#2uo%NYx35EXDf8Z7HL*Va$ zlzZS$z+pZ;1hTdtDuYGv(;(yj(0>FO$Afo*(Bi@8K*~M%3OEA(E0B4pZvj~^CF6k3 zO6JS6`YcF$Y6E=MaUQzI;(3sMANpyK`9Aap$Xp+WH=OSPX?M_6NrIXp53-VX-${f9x;?~%`gqu?Kc`x)xpAocdKcFqUEmrVY?1ccZ2 zT?M7wUxJj~PZ`+<`(c8d>!S{gl`RD-1ydGTuncJh^56*zH@0s7BZ?(vng)WDl z1gU>$351^y$#@unwdi2q@%%|^J^Sw{{fu4ObUgqETE1&|uXi@m! z4&HCTx5I2*;VarL3O~FJ6#6jF;$@I|79)^x6+aFh0cHOEAT$zs9wrHW55tqPZig>| zjPGy?Qt$B3gYeGbFWLOBgY?%=Sy{h+S?_m)9|mcwU)F*7_sjgDd%w(I^1lGS6a3ep z)ED|g@BXiV%%}gWAmi@;8xWcf^nk3v!23YxFrYwaJiyq6?*=A8=r_;=8Oy+@z&k;q zGj#`E2WfxcKS8G#!2ia3!WM!Cx4i-iT|dWGWQ~OHpZGFJn@`F*((aQ1NZBVp2{MK! z{{W<)C;!;u{{{yf=O}X%`W=<|!>dQj_WKWk)Ia)rAmcr{2||x!%u)F1*r3JpAblNU zY|a$;KS1XA)Z^gOpa;SePkjb_z;OoO0iFhFQ{?iXjB^b9E%2_&JcA)o(+jSfF48t0faWs-UA*7;Wf#B_Tyj(z7AeNADu0M%is@!to7Ny0v}|l?*;D%8H@1i z*g24KkNpzJ*v7sFegKt8o3bCrnVZO|@oDf*kTzw1j(<0JH~1Ow9`K)o@WS|)z;}Wz zkTo2a^<+E~v?=)$!nf3)cpg+>9sE)7$G~4@NZ$^Qfd39;t*71v{s~Cm(%+P{$GX4p zHjp-75IVgdlm!rc(W11=I9_-Kd=&fy2yI^YB1r!){58l}rkR`A2h(1SH_l<`mh4R{#Q4Nc_xjEtXo&#ZvZedd!O>oN1Y;6d<@!9(EJLCVeYEb?gfBnVw* zXF%%BeiVE=2pw;OUuL0!(EXgu^LEFXdk0AUIqHgjo1?Dq#oRDh0ArB(%~4<4o%=(O zcIRY%(DJ;D_ZWB-gx}9Mz$d|1LGsT3Ie3@jTmWQ!ER&hl@_bw=8qcE`Ec147q}?*-onLQ~`IP&HL|zv~%$dka1o78h9INf|UJa%%38aNaslZlmxE}eWVTj`yu{HoAP6v z&I_a;CkY?RUXWivdWiHa>F<(ct%P3RLz3UO7|?(JK7W6jWaX3dcX%El9VTVJ58DTs z(>O`i`W4azl1GxYl;1K*==@WpA0RD|vfn8lgx89sVMlJGnHCOXLZE>iYm zuR9UxGua1=@Rsxaq~rD-9@M`V`FqAb|1)rr^z$Uye@~Nsf;37>Ni!rxdYI&s*oXS} z4*m*1f130*($A5OlH~Vmq&rBmPvrNb2AqEkBG*J#>EBt4?*>0h`UL4+_Sqs5q+cYxo%9Szem_FGOnQX0pCrFek`9vQAn9{t>B0`Y}?KG(`F(lKg&wbf2Tth@UKZkve^9 zd{%{#8WXI$tEwCZiR%Z0J&NDHeI)Z#?mf|~6m?YW2a7dNm6zPeEhn^bA}jII>Mb-&yDdq%06A9%4^h{C!$H99sjU>bjRTgDNSF_dML!+Jdo zR1%tM$_*;|$(FlRxP0mS=*ihLmoF7BO-+xSxP1AemGH`ikByDY&W=ng)rkBcSt!KG zDwB&FURf;&U39MQO4*lKxsj(_#u(OW;fi3S0&hhvMq%3MQ+$IcWjFS8PFSm$979qe z>nWuc{3uTJTvd?POI~EVpc5wK?vgj5Y-trPSV9e{vBIfChDy@*2+bGTuj4d$Xu#p` z&I?R$vf^Hl#95n$uC?tMeagF1uB8>$AL_2EByxRLYf&aIt7a~DE^w)Cze z+-Y!~)JlWMD~F4Lzvks6GXyeZ*fC$vr^hK2G*1=uZZ5F5>uxfn#g&@z>we9R`cw&i zH8~jrY8KX2Vx=XX)F{%J=F5UGO4gR%i95DsnLghRwkfF~O_lt>jaHSK_S}l*+Lg#p zJXLWMSNVam*>!}hlon~T-^*}G384s2L-{0(R;95euhvj%GEHQECrd1+e9<{! zLQlovYVim;ry6p(Yjh%>KVsL21|pw2RSN` zF9@4nRC5~*S@ib&hoxe?6s{Cx%vrq-8nLsnX{uhL>xIEW%`YcHx#LpP@>{9q235nk zDrYuBW3{prvcU`oYb$|%ba~o1sV0WUQO`8AQ1KRq%$ps&9lB;vHkk}k&3}h3sH-75 z;RYGX$xKWKVWQ%+(Fmi2No%2#?LOa&or3Ag?2*JR6}&4A7oKEAw~o4!da`g7Lc`la z^rRcmWr3;nh1#-30t+dknBCa znUxbU3iotLtB%#A-&twJ5B$Vu!^l#pakt94u~&>8k~T0*Fk`)j7Z@8&GO2l9*EEa( zvm;O3vX|3J*nee76p8*$`3w0v@34)!mKq6N*A?{e8J{r_5mTrUtwAtIwau7Gsbq=m zZI(e~RYQv^kujQ3wB^cR6Yolr%L2xiivY=>5R=chqaJm^Fk(I_%a_uwXc4y_rpOak zvU{ew9c}m*j8UkjGd-5+@q|`S^sFuBE6F8MT$giViS9bU#&*+Mq8>Zg z)??+c;j=?+tzu6hrLl8aV~D~9vTwC9TfE(xkV12C#?WuV!C2`9w6Yb1<-!8?w6-?Y zj0hbFR9;diRQ}m>dAH<6gZn{IS~z95q81NXS-la5WFP9Lg!1)}qYNg2h;tE(X6=Qt zdKXq?Aa%G}E5KQ-8%~uK5k?C>=Qr1=Ftljw>E*NQ%7Vbaup9NQ07cF47MIax!XaC; zw@NH?z?>XAsX3SaE>51C*3YbesKzhKGwt}&jTQXHyvP+hqSuQGTJP#3pD{nEj3Fdb zkFhg$Y#|d;E~3U9DZHSJ+<;lNpwW!Nfy`7MrW;5xztXF_nt!=h8%1J%37zsuo8of9 z=@_z=7enUr4yU2^NheeDzS5_pLHUc8&u8D+)PTu#3TRQd&s#{?6ScICYO%|qHM3Ab zG8wSWWdB)vPHRZ!r|UP|MJ!tckeYI1CPl3sU6dJtWK7rJ^`DrN*8VNoVNYxwGps1+9MbHaeAYhZe|5-QMPf;e!l>X%`An8M~~_ zjMFD(vLk}E;{r7{IzFn!xRxqI_BFGxMKH>4F`qNRW84|ifuV_&s*_@YGgG*g2R3li ztF892O^oQz=x1s(#FwRoQsjFJ`5^TYp>m*iWF@Sj4#hDHnUPmcqnMWE$YCF`w^%}b zX3(}~TI$eJOgIfHREH9U0_R6IEe|nPH`_lW4t9%Z?WfhM@8KKquK3t7iJPPt{n&F^ zb@UjPO#vG^Nc=K7&nN+gBHxX!OjbltXr0R;reo9T0f=$L2{wi|#Wj?fY$ro3M5Kvf zu`LX#2ds^tiYQsy84-&Jkt8p$pjJ0}ubKuJZc`=+9~#?g(zKhs`@up;nH4Ex<;bn* z;1#70MTNqOUrCnC3CXsc@ky7y8F;M!pxtJ%f;Y6VrQa*kuT|sS=JF1@U6-F4)+}l@ z`H+6yRfm&HC2Vk6<%)+E)tIlf=wH^z?EhG6j`MG2W?DygHS^Y`j;OD~Ti}i3=J;*+ zZJ!Y?fY~!W4%=A#k8#(I7{u$LrI0v@DA7J_8*PZeCZe#I=Os&#m)S~MUv4jv^Sl;y z!ZQCKtDH90Sj1KOZE(yLu&Cr76T6o1;UI=5IXntZM7ibW~XOG|P}X58X_5yT|m zgUq|*YmY9b-D0vmWSVTje7A1T&ge9{0Qqw_gA6Y}SxS$K$eW-~_OduxNkNGHAO}}% zrHG8sW1lHHwB+h%sW)HHQ>pv0_^11*gXxY~2`XYxSmn00#%{%|v#rEgkcRO2iGp@U z?PrV->-jF@sg1Qmp`D3S*wyw_UaTWeds@W~ed(hweJuZulq!4LWRJYXltaB7!$fj% zSj!9HaN$^vd~bi*UU=NA<9ng{lACgRsW=m%vAE>Hx@i>xL@Ww>u8|x%Yx=kWne4Xy zC*_RIJ{FIqaPd^+VZW!WjBR9xI@8;lL3Cmm`HPMf-=%a>i_>R#C@cnPAx->R{2Wik zFj{=J=xB?@>TbCwz^F3*cC;`&FS6dei!QHYa{CPq>rftbWn4sFJlIn`t_J%1`}@>c z@W|tRYMc*!@4ENZ7^Y{1x=6*rl6+li|6 ztjB3$Qk@^3o*tfX!s2!1MNt^>QJ*U5;DE@KmkxA%IjFxJ?D%p?zFhi9$CsBr>YR&l zd})b&X>w|IbaLV{0#XYYD@=R#EOJSt=n-{Eo6iQ0T)upHuSzq!Wt#Jc%FZX*;iSho zkIR=umn|^GK~s$^E_zV{U;Fq1&bT~#wLW#yZE{y|#$EN|zMg3gbRq-sHq>f(2n`#L z(a5aaR24hhoQA_!)eP*k)b)LKDXimx8w(@MyN)r;hEZub#7}q{@l=DAH2<6K$KCQ- zFIe+o?)kz#ZgDcl70efw;;`l=-qR|iFXbnD6-nVJS|}@Ngo3^LdQP93+Z=*pLA;g1 zlj3a_hI2}_5CJZCdH781CyY=1q@@o+g)JsZnSsO49k#54<5J8-o6i9B38cfry|qNn z<0vD!>kwff4_Ub`Q(c)8N4J7r$XBYWul$RME>GZk`07HwhZoZ?ppJ@G%pU1?TylAma(O!c<_!H z*ds`^Vv`%q{GP#_OM9Awcg&e{<*r3u9=zj)lw)X*gA|TjD66kT4E-1Uh0yT>%{z%- z>L7fZJMrR(Wg*$UVlSy=wILiW3PH5Pcgn|GsL{YIVXaUTX7#sK z!B66?;4q|Vdyj>B(mm=u6H~#Afdw#1fIvzWvSzv8`l;!Gu2v9+WMh?PS?H?O|`JVdg>+F`;6Q4exSCmAAiS zZliV_r9OX|f!DVhS14yu8S3TKOFhS$o;fGD3oNXuX}6uiWg$|5^RY;qP6lzTYeO_? zw_~3V=IRXJfRh;pM(1f8*IXbwxfLdtBu3U{pR_EDvDz9;)N^7e1#{Thgr#L@>BLA% z4@ku1m80PTJ}r4Q_OoRp4mTY0e7S|pMj}gUFR`87vSmWv6% zm!)N@@or|KOSZ(;(XV(u3Qo_{+=*JEOhuv0t}t3Du%E@89#mr32zzLQQynQDEe`be zOij)fPRP|0MG7Yobc5g9H7A{$u@8urQ6SEKPNld#o_*8V@rcv2r4=sAdz)PO(86O=VX-{>a z*x!S@QjEmHEMyzR#JiFlZq!^qcv^hA5pLC?(V5A@v13m>RXEZvEIo4UDU7f!WseQ2 zV_ZKIM4;639v&IBW+He3uN2zQk{ef1FQwRB3Y%`SOZd>TsT;V}j-Vk-ZGwi@@8hTSQ9X?}Rq1A;*4#=HK8;eHBbbB7i==f zN)WQn>%q;P$~0H6x|NifWG!tiWCDx6k*;mL&|9eTCIj9!);$T?8Dg}J%JX~07ZKqz z1G|NluoP@?Ktos#0-_b-O(jX(~*w`pbDVQWd!rh0UM^ z2btYBfXA&8;>z zU*j;5VmSw`M%cVo(G#!+q75{dntXi(ANdrg&GJ%9nO81CE5S`fgpsRki%KIzm?Idj zZ_1POVhv_7RJKJd>6P|sepT*(j4Dt~MzPiuBcOvKV(w$GM6bh>ENUL*zzzE74TlA+BjkldW27 zRa(+#b;C|v=vWUz^j#FLHIkd0C!qDtt6GWJM6wbh$c5@VL_JMb_~^oEDVk^172 zERYk^xN{A~^cb_4Cu%V6Q`fNy47WFBU)VY~ z_}Fx>3daN<_h*oMd9%E^GdYZSF#H2Ah@RT0XD#_`U%s@~D!~S%dQ7fHIwGs=ejpyN z7N+YSrc&U++12P~)0G}&(n4in?k&MpwrWNumaVcWHi=1nqgFJmGL#b zNraV5Rd*y4U_ZH)Yj)WAmZOc6>iO{z9HmUcgjm^EI~F^Mo0g}rO6;ieNGn~Q8xUH` z^%^q{*~*a&0ZNs9>e+Sh-#o~wbKqemcGpBfat!inEsg~`dS*o5M@dwgy^>REJKgo< zcc{K}{@ zw`x?Rl|Jw_nWn8*2$Fa+za1^<$1XdK_>C zF*GJzZEiJbhS$lgN~9VZMMAi`3uqe@o!h{91!Eb#CpSQ zpNoy{A!`#JT*{$SZ+@(*mRM76t!2$jm+rS$$_4m#+fSeEaZZ>su&Ipz#AZV`SKT!( z@g!PJNvs-!GgHNA$>!=SEsDF{$3uL}`_$eIWd4LbOLy92)E*d|*eNtkf8Qx6Et76x z3K?r&6B7V~M*fYL^#OHS5nE!?tToHvm$7FNkX-LbIGW5x-jb*l;IP6xgAm;zX?eG6 z+?+xWIUR9Wj_>+nN(W`Lw=QSlW)J z!ipSsrCAe~re7?lws}RqcIr1BoF15VdEL=!*)(rK9O=q?F^%{u za!0ndB8m=?YT|;)jaqz)I*?2IpQ9UV!A6fWlRLljePLoBq$E*3`9?B3?}k}6cw2KO z1Z|f{M4f3}uvaNV;t;Rt4deQxDUo|LWyHZn;~$?lZv$3H5VB_6vco5*M`nhJW3vx7 zqi5c}+wwZ5&D5|Okr)nJgp=Kj9;bL&F@*WsKzmC}k9c$QuTV#SSd}kr%Guzys!(sI zd`np|2rANiDtlA@6=&|lGE>Rp-TDYfNzlH}naM zP^9ad1dZtZon=u$?sGUc8;@T5ySW$8;ct24h_Om}DO}q$@n@QMn>V9&PdCMFfVM^< zaKV(eThmvZ9p$Io`n7+-Wy87`HCln|h(K@2zox3V&WWYflJ)Y?T6X;)5=mY;*6TG* zovGbM1I?|o#bZ&#lxV^rHY$!v>uwB*>_{a7P6md{N>3$qbWmJ-timCfOPFPi6GD}&U^%Tv1q%&7xLPjP|BsiL}iu&)OV+6e2L0e54p1R}Mj z?NK-0ta+Vnrs^4ep{N7z)PZ%bJXVQnKVyv*9f()Q^_J?3fJ)fF9Kfp>wB&|KJD%k3 zN;^5-y8q3Oxr39vWh{^chN2_Pt}TIgT*|l#gD|bM#4QEa$^DkLsj?F%+k)|HgHud3 zp|U=0)U#EW`6iq*omnnR<#tUkfvnM5*{iwg_{fXu#owPkcb4e8X2yr~#K{yJy^br3 zbzd#^%+g9$J8W`bUM;xY}n{gEfgDfapoeS7`WT1`5E3)zAUa7_1G4s*^cpS@RJGR*9Ekf_K zSR(i?|8&rPI@tbn$$Yx}k@hE|@ATO*;a-gXE=|2LGWACj!>{WIye$erloK}xdltQ9 z>g*Ja_hyy(KjiFQBtK_$9mevbSdTNz)xmY2>;AVGoChb5A-rv5p0q~nz;tI+p8eJp zk(c#4yFDDw#sYQ(;~@&nouG}%gU1odTf*`7EY#39H!w+eRGz*g)ZDL{!c>8Gl?@~+ zFuQ>;Jn86&Jh>C#-^PY=*>9QE35BVwYVFV-#xTg8t~vrR^TEQQfmcHo8(rfj4&fBx z61K6{J;XY9x&d$KcpQifSN9VClOI*C*;ck{O?^;YCqA(~X3=aNW6p!~L>crr_E=~r z3@alRw7;9ln&Y4CyW@LCYvzD(lURbxz<2DN^C&&B-V01kZq8)cu4zl26P8FbBwSdk zxL9LLH3C2hqrg3s1?cTkvmKzN6QA#Gt2uaMUwuAR>p@wjQIpJ+>--un#EB12OT&c+>y20qRsn*Kb zEFVAO+XV4xrr%aBzm^nNGjWLBr79b>ss_Z8^*7pg4hk66R-Z`%b=+QXNhsiZD~yI0@@w zIuLD=xa)H5CznoQtb~LGi?)R=s`Ck`e2kD;+4r1iB{%q{9BRPU6C+U)=h>S0-TXpAIH5Hp;e z^Yj$s2LB?3e`a1|zwOuprUR1CdTbbqHjT}tZ$?hOIj@jt* UoQc7}wJqB*b=F$cwRCg-KT8W9kN^Mx diff --git a/src/bin/diffutils/po/cs.po b/src/bin/diffutils/po/cs.po deleted file mode 100644 index b749caefd7..0000000000 --- a/src/bin/diffutils/po/cs.po +++ /dev/null @@ -1,947 +0,0 @@ -# Czech translations for the GNU diffutils messages. -# Copyright (C) 1998 Free Software Foundation, Inc. -# Petr Kovara , 1998, 2002. -# -msgid "" -msgstr "" -"Project-Id-Version: GNU diffutils 2.7.10\n" -"POT-Creation-Date: 2002-04-05 14:10-0800\n" -"PO-Revision-Date: 2002-03-19 18:44+0100\n" -"Last-Translator: Petr Kovara \n" -"Language-Team: Czech \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-2\n" -"Content-Transfer-Encoding: 8-bit\n" - -#: lib/c-stack.c:188 -msgid "program error" -msgstr "chyba programu" - -#: lib/c-stack.c:189 -msgid "stack overflow" -msgstr "peteen zsobnku" - -#: lib/error.c:128 lib/error.c:156 -msgid "Unknown system error" -msgstr "Neznm chyba systmu" - -#: lib/freesoft.c:27 -msgid "" -"This program comes with NO WARRANTY, to the extent permitted by law.\n" -"You may redistribute copies of this program\n" -"under the terms of the GNU General Public License.\n" -"For more information about these matters, see the file named COPYING." -msgstr "" -"Tento program je zcela BEZ ZRUKY, v rozsahu povolenm zkony.\n" -"Toto programov vybaven mete dle it podle podmnek Obecn veejn\n" -"licence GNU. Dal informace o licennch podmnkch naleznete v souboru\n" -"COPYING." - -#: lib/getopt.c:693 -#, c-format -msgid "%s: option `%s' is ambiguous\n" -msgstr "%s: pepna `%s' nen jednoznan\n" - -#: lib/getopt.c:718 -#, c-format -msgid "%s: option `--%s' doesn't allow an argument\n" -msgstr "%s: pepna `--%s' mus bt zadn bez argumentu\n" - -#: lib/getopt.c:723 -#, c-format -msgid "%s: option `%c%s' doesn't allow an argument\n" -msgstr "%s: pepna `%c%s' mus bt zadn bez argumentu\n" - -#: lib/getopt.c:741 lib/getopt.c:914 -#, c-format -msgid "%s: option `%s' requires an argument\n" -msgstr "%s: pepna `%s' vyaduje argument\n" - -#: lib/getopt.c:770 -#, c-format -msgid "%s: unrecognized option `--%s'\n" -msgstr "%s: neznm pepna `--%s'\n" - -#: lib/getopt.c:774 -#, c-format -msgid "%s: unrecognized option `%c%s'\n" -msgstr "%s: neznm pepna `%c%s'\n" - -#: lib/getopt.c:800 -#, c-format -msgid "%s: illegal option -- %c\n" -msgstr "%s: neznm pepna -- %c\n" - -#: lib/getopt.c:803 -#, c-format -msgid "%s: invalid option -- %c\n" -msgstr "%s: neznm pepna -- %c\n" - -#: lib/getopt.c:833 lib/getopt.c:963 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "%s: pepna vyaduje argument -- %c\n" - -#: lib/getopt.c:880 -#, c-format -msgid "%s: option `-W %s' is ambiguous\n" -msgstr "%s: pepna `-W %s' nen jednoznan\n" - -#: lib/getopt.c:898 -#, c-format -msgid "%s: option `-W %s' doesn't allow an argument\n" -msgstr "%s: pepna `-W %s' mus bt zadn bez argumentu\n" - -#: lib/regex.c:1367 -msgid "Success" -msgstr "Hotovo" - -#: lib/regex.c:1370 -msgid "No match" -msgstr "dn shoda" - -#: lib/regex.c:1373 -msgid "Invalid regular expression" -msgstr "Neplatn regulrn vraz" - -#: lib/regex.c:1376 -msgid "Invalid collation character" -msgstr "Neplatn znak porovnn" - -#: lib/regex.c:1379 -msgid "Invalid character class name" -msgstr "Neplatn jmno tdy znak" - -#: lib/regex.c:1382 -msgid "Trailing backslash" -msgstr "Koncov zptn lomtko" - -#: lib/regex.c:1385 -msgid "Invalid back reference" -msgstr "Neplatn zptn odkaz" - -#: lib/regex.c:1388 -msgid "Unmatched [ or [^" -msgstr "Neprov [ nebo ]^" - -#: lib/regex.c:1391 -msgid "Unmatched ( or \\(" -msgstr "Neprov ( nebo \\(" - -#: lib/regex.c:1394 -msgid "Unmatched \\{" -msgstr "Neprov \\{" - -#: lib/regex.c:1397 -msgid "Invalid content of \\{\\}" -msgstr "Neplatn obsah \\{\\}" - -#: lib/regex.c:1400 -msgid "Invalid range end" -msgstr "Neplatn konec rozsahu" - -#: lib/regex.c:1403 -msgid "Memory exhausted" -msgstr "Pam vyerpna" - -#: lib/regex.c:1406 -msgid "Invalid preceding regular expression" -msgstr "Neplatn pedchoz regulrn vraz" - -#: lib/regex.c:1409 -msgid "Premature end of regular expression" -msgstr "Pedasn konec regulrnho vrazu" - -#: lib/regex.c:1412 -msgid "Regular expression too big" -msgstr "Regulrn vraz je pli dlouh" - -#: lib/regex.c:1415 -msgid "Unmatched ) or \\)" -msgstr "Neprov ) nebo \\)" - -#: lib/regex.c:8034 -msgid "No previous regular expression" -msgstr "Pedchoz regulrn vraz neexistuje" - -#: lib/xmalloc.c:63 -msgid "memory exhausted" -msgstr "pam vyerpna" - -#: src/analyze.c:809 src/diff.c:1283 -#, c-format -msgid "Files %s and %s differ\n" -msgstr "Soubory %s a %s jsou rzn\n" - -#: src/analyze.c:812 -#, c-format -msgid "Binary files %s and %s differ\n" -msgstr "Binrn soubory %s a %s jsou rzn\n" - -#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 -msgid "No newline at end of file" -msgstr "Chyb znak konce dku na konci souboru" - -#: src/cmp.c:43 -msgid "Written by Torbjorn Granlund and David MacKenzie." -msgstr "Autoi: Torbjorn Granlund a David MacKenzie." - -#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 -#, c-format -msgid "Try `%s --help' for more information." -msgstr "Vce informac zskte pkazem `%s --help'." - -#: src/cmp.c:137 -#, c-format -msgid "invalid --ignore-initial value `%s'" -msgstr "neplatn hodnota --ignore-inital `%s'" - -#: src/cmp.c:146 -msgid "options -l and -s are incompatible" -msgstr "pepnae -l a -s nejsou kompatibiln" - -#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 -#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 -#: src/util.c:286 src/util.c:293 -msgid "write failed" -msgstr "zpis selhal" - -#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 -#: src/sdiff.c:179 -msgid "standard output" -msgstr "standardn vstup" - -#: src/cmp.c:160 -msgid "-b --print-bytes Print differing bytes." -msgstr "-b --print-bytes Vype rozdln bajty." - -#: src/cmp.c:161 -msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." -msgstr "-i N --ignore-initial=N Ignoruje prvnch N bajt na vstupu." - -#: src/cmp.c:162 -msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" -msgstr "-i N1:N2 --ignore-initial=N1:N2" - -#: src/cmp.c:163 -msgid "" -" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." -msgstr "" -" Pesko prvnch N1 bajt souboru SOUBOR1 a prvnch N2 bajt souboru " -"SOUBOR2." - -#: src/cmp.c:164 -msgid "-l --verbose Output byte numbers and values of all differing bytes." -msgstr "-l --verbose Vype pozice a hodnoty vech rozdlnch bajt." - -#: src/cmp.c:165 -msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." -msgstr "-n LIMIT --bytes=LIMIT Porovn maximln LIMIT bajt." - -#: src/cmp.c:166 -msgid "-s --quiet --silent Output nothing; yield exit status only." -msgstr "-s --quiet --silent dn vstup; vrt pouze status." - -#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 -msgid "-v --version Output version info." -msgstr "-v --version Informace o verzi." - -#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 -msgid "--help Output this help." -msgstr "--help Vype tuto npovdu." - -#: src/cmp.c:177 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" -msgstr "Pouit: %s [PEPNA]... SOUBOR1 [SOUBOR2 [SKIP1 [SKIP2]]]\n" - -#: src/cmp.c:179 -msgid "Compare two files byte by byte." -msgstr "Porovnn dvou sobor bajt po bajtu." - -#: src/cmp.c:183 -msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." -msgstr "N1 a N2 udvaj poet bajt, kter budou ignorovny v kadm souboru." - -#: src/cmp.c:184 -msgid "" -"SKIP values may be followed by the following multiplicative suffixes:\n" -"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" -"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." -msgstr "" -"Hodnoty SKIP mohou bt doplnny nsledujcmi pponami:\n" -"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" -"GB 1,000,000,000, G 1,073,741,824, a stejn tak i pro T, P, E, Z, Y." - -#: src/cmp.c:187 -msgid "If a FILE is `-' or missing, read standard input." -msgstr "" -"Pokud SOUBOR bude `-' nebo nebude existovat, bude ten standardn vstup." - -#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 -msgid "Report bugs to ." -msgstr "" -"Chyby v programu oznamujte na adrese (pouze " -"anglicky),\n" -"pipomnky k pekladu zaslejte na adresu (esky)." - -#: src/cmp.c:231 -#, c-format -msgid "invalid --bytes value `%s'" -msgstr "neplatn hodnota pepnae --bytes `%s'" - -#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 -#, c-format -msgid "missing operand after `%s'" -msgstr "po `%s' je nesprvn operand" - -#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 -#, c-format -msgid "extra operand `%s'" -msgstr "operand `%s' je nadbyten" - -#: src/cmp.c:477 -#, c-format -msgid "%s %s differ: byte %s, line %s\n" -msgstr "%s %s se li: bajt %s, dek %s\n" - -#: src/cmp.c:495 -#, c-format -msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" -msgstr "%s %s se li: bajt %s, dek %s je %3o %s %3o %s\n" - -#: src/cmp.c:543 -#, c-format -msgid "cmp: EOF on %s\n" -msgstr "cmp: EOF v %s\n" - -#: src/diff.c:41 -msgid "" -"Written by Paul Eggert, Mike Haertel, David Hayes,\n" -"Richard Stallman, and Len Tower." -msgstr "" -"Autoi: Paul Eggert, Mike Haertel, David Hayes,\n" -"Richard Stallman a Len Tower." - -#: src/diff.c:322 -#, c-format -msgid "invalid context length `%s'" -msgstr "neplatn dlka kontextu `%s'" - -#: src/diff.c:405 -msgid "pagination not supported on this host" -msgstr "pestrnkovn nen na tomto potai podporovno" - -#: src/diff.c:420 src/diff3.c:315 -msgid "too many file label options" -msgstr "pli mnoho pepna popisu souboru" - -#: src/diff.c:498 -#, c-format -msgid "invalid width `%s'" -msgstr "nesprvn dlka `%s'" - -#: src/diff.c:502 -msgid "conflicting width options" -msgstr "" - -#: src/diff.c:526 -#, c-format -msgid "invalid horizon length `%s'" -msgstr "neplatn dlka obzoru `%s'" - -#: src/diff.c:629 -#, c-format -msgid "`-%ld' option is obsolete; use `-%c %ld'" -msgstr "pepna `-%ld' je obsolete; pouijte `-%c %ld'" - -#: src/diff.c:641 -#, c-format -msgid "`-%ld' option is obsolete; omit it" -msgstr "pepna `-%ld' je obsolete; omit it" - -#: src/diff.c:709 -msgid "--from-file and --to-file both specified" -msgstr "" - -#: src/diff.c:832 -msgid "Compare files line by line." -msgstr "Porovnn soubor dek po dku." - -#: src/diff.c:834 -msgid "-i --ignore-case Ignore case differences in file contents." -msgstr "-i --ignore-case Ignoruje velikost psmen v obsahu souboru." - -#: src/diff.c:835 -msgid "--ignore-file-name-case Ignore case when comparing file names." -msgstr "--ignore-file-name-case Ignoruje velikost psmen v nzvech soubor." - -#: src/diff.c:836 -msgid "--no-ignore-file-name-case Consider case when comparing file names." -msgstr "" -"--no-ignore-file-name-case Bere v potaz velikost psmen v nzvech soubor." - -#: src/diff.c:837 src/sdiff.c:186 -msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." -msgstr "-E --ignore-tab-expansion Ignoruje zmny v odsazen tabeltorem." - -#: src/diff.c:838 src/sdiff.c:187 -msgid "-b --ignore-space-change Ignore changes in the amount of white space." -msgstr "-b --ignore-space-change Ignoruje zmny v potu mezer." - -#: src/diff.c:839 -msgid "-w --ignore-all-space Ignore all white space." -msgstr "-w --ignore-all-space Ignoruje vechny mezery." - -#: src/diff.c:840 src/sdiff.c:189 -msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." -msgstr "-B --ignore-blank-lines Ignoruje zmny v ppad przdnch dk." - -#: src/diff.c:841 src/sdiff.c:190 -msgid "" -"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." -msgstr "" -"-I RV --ignore-matching-lines=RV Ignoruje zmny na vech dcch\n" -" odpovdajcch RV." - -#: src/diff.c:842 src/sdiff.c:191 -msgid "--strip-trailing-cr Strip trailing carriage return on input." -msgstr "--strip-trailing-cr Odstran ukonovac znak CR na vstupu." - -#: src/diff.c:844 -msgid "--binary Read and write data in binary mode." -msgstr "--binary te a zapisuje data v binrnm reimu." - -#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 -msgid "-a --text Treat all files as text." -msgstr "-a --text Pokld vechny soubory za text." - -#: src/diff.c:848 -msgid "" -"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " -"context.\n" -"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " -"context.\n" -" --label LABEL Use LABEL instead of file name.\n" -" -p --show-c-function Show which C function each change is in.\n" -" -F RE --show-function-line=RE Show the most recent line matching RE." -msgstr "" -"-c -C PO --context[=PO] Vype PO (implicitn 3) dky koprovanho\n" -" kontextu.\n" -"-u -U PO --unified[=PO] Vype PO (implicitn 3) dky sjednocenho\n" -" kontextu.\n" -" -L POPIS --label POPIS Pouije POPIS msto jmna souboru.\n" -" -p --show-c-function U kad zmny vype jmno C funkce, ve kter se\n" -" tato zmna nachz.\n" -" -F RV --show-function-line=RV Vype nejnovj dky odpovdajc RV." - -#: src/diff.c:853 -msgid "-q --brief Output only whether files differ." -msgstr "-q --brief Vstup pouze pi rozdlnch souborech." - -#: src/diff.c:854 -msgid "-e --ed Output an ed script." -msgstr "-e --ed Vytvo skript pro ed." - -#: src/diff.c:855 -msgid "--normal Output a normal diff." -msgstr "--normal Vstup bude v normlnm diff formtu." - -#: src/diff.c:856 -msgid "-n --rcs Output an RCS format diff." -msgstr "-n --rcs Vstup bude ve formtu RCS diff." - -#: src/diff.c:857 -msgid "" -"-y --side-by-side Output in two columns.\n" -" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" -" --left-column Output only the left column of common lines.\n" -" --suppress-common-lines Do not output common lines." -msgstr "" -"-y --side-by-side Vstup ve dvou sloupcch.\n" -" -W PO --width=PO Vype maximln PO (implicitn 130) znak na " -"dek.\n" -" --left-column Vype pouze lev sloupec spolench dk.\n" -" --suppress-common-lines Nevype spolen dky." - -#: src/diff.c:861 -msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." -msgstr "" -"-D JMENO --ifdef=JMENO Vype slouen soubor s rozdly `#ifdef JMENO'." - -#: src/diff.c:862 -msgid "" -"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." -msgstr "" -"--GTYPE-group-format=FMTS Podobn, ale formtuje vstupn skupiny GTYPE\n" -" podle FMTS." - -#: src/diff.c:863 -msgid "--line-format=LFMT Similar, but format all input lines with LFMT." -msgstr "" -"--line-format=FMTR Podobn, ale formtuje vechny vstupn dky podle FMTR." - -#: src/diff.c:864 -msgid "" -"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." -msgstr "" -"--LTYPE-line-format=FMTR Podobn, ale formtuje vstupn dky LTYPE podle " -"FMTR." - -#: src/diff.c:865 -msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." -msgstr "" -" LTYPE je `star', `nov' nebo `nezmnn'. GTYPE je LTYPE nebo `zmnn'." - -#: src/diff.c:866 -msgid "" -" GFMT may contain:\n" -" %< lines from FILE1\n" -" %> lines from FILE2\n" -" %= lines common to FILE1 and FILE2\n" -" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" -" LETTERs are as follows for new group, lower case for old group:\n" -" F first line number\n" -" L last line number\n" -" N number of lines = L-F+1\n" -" E F-1\n" -" M L+1" -msgstr "" -" GFMT me obsahovat:\n" -" %< dky ze SOUBOR1\n" -" %> dky ze SOUBOR2\n" -" %= dky spolen pro SOUBOR1 i SOUBOR2\n" -" %[-][DELKA][.[PRES]]{doxX}ZNAK formt stylu printf pro ZNAK\n" -" ZNAKy dle jsou pro novou skupinu, malmi psmeny pro starou skupinu:\n" -" F slo prvnho dku\n" -" L slo poslednho dku\n" -" N poet dk = L-F+1\n" -" E F-1\n" -" M L+1" - -#: src/diff.c:877 -msgid "" -" LFMT may contain:\n" -" %L contents of line\n" -" %l contents of line, excluding any trailing newline\n" -" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" -msgstr "" -" LFMT me obsahovat:\n" -" %L obsah dku\n" -" %l obsah dku, s vyjmkou znaku konce dku\n" -" %[-][KA][.[PES]]{doxX}c formt stylu printf pro slo vstupnho " -"dku" - -#: src/diff.c:881 -msgid "" -" Either GFMT or LFMT may contain:\n" -" %% %\n" -" %c'C' the single character C\n" -" %c'\\OOO' the character with octal code OOO" -msgstr "" -" Jeden z GFMT nebo LFMT me obsahovat:\n" -" %% %\n" -" %c'C' jeden znak C\n" -" %c'\\000' znak s osmikovm kdem 000" - -#: src/diff.c:886 -msgid "-l --paginate Pass the output through `pr' to paginate it." -msgstr "-l --paginate Vstup projde pes `pr' pro pestrnkovn." - -#: src/diff.c:887 src/sdiff.c:198 -msgid "-t --expand-tabs Expand tabs to spaces in output." -msgstr "-t --expand-tabs Ve vstupu pevede tabultory na mezery." - -#: src/diff.c:888 src/diff3.c:452 -msgid "-T --initial-tab Make tabs line up by prepending a tab." -msgstr "-T --initial-tab Na zatek dk se vlo tabultor." - -#: src/diff.c:890 -msgid "-r --recursive Recursively compare any subdirectories found." -msgstr "-r --recursive Rekurzvn porovnn vech nalezench podadres." - -#: src/diff.c:891 -msgid "-N --new-file Treat absent files as empty." -msgstr "-N --new-file Neexistujc soubory povauje za przdn." - -#: src/diff.c:892 -msgid "--unidirectional-new-file Treat absent first files as empty." -msgstr "" -"--unidirectional-new-file Pi porovnvn adres povauje neexistujc\n" -" soubory v prvm adresi za przdn." - -#: src/diff.c:893 -msgid "-s --report-identical-files Report when two files are the same." -msgstr "-s --report-identical-files Uvede pouze shodn soubory." - -#: src/diff.c:894 -msgid "-x PAT --exclude=PAT Exclude files that match PAT." -msgstr "-x VZOR --exclude=VZOR Vynech soubory odpovdajc VZORu." - -#: src/diff.c:895 -msgid "" -"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." -msgstr "" -"-X SOUBOR --exclude-from=SOUBOR Vynech soubory, kter odpovdaj\n" -" libovolnmu vzorku ze SOUBORu." - -#: src/diff.c:896 -msgid "" -"-S FILE --starting-file=FILE Start with FILE when comparing directories." -msgstr "" -"-S SOUBOR --starting-file=SOUBOR Pi porovnvn adres zane souborem\n" -" SOUBOR." - -#: src/diff.c:897 -msgid "" -"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." -msgstr "" -"--from-file=SOUBOR1 Porovn SOUBOR1 se vemi operandy. SOUBOR1 me bt\n" -" adres." - -#: src/diff.c:898 -msgid "" -"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." -msgstr "" -"--to-file=SOUBOR2 Porovn vechny operandy se SOUBOR2. SOUBOR2 me bt\n" -" adres." - -#: src/diff.c:900 -msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." -msgstr "" -"--horizon-lines=POET Ponech POET shodnch dk pedpony a ppony." - -#: src/diff.c:901 src/sdiff.c:200 -msgid "-d --minimal Try hard to find a smaller set of changes." -msgstr "-d --minimal Pokus se nalzt nejmen sadu zmn." - -#: src/diff.c:902 -msgid "" -"--speed-large-files Assume large files and many scattered small changes." -msgstr "" -"--speed-large-files Pedpokld velk soubory a mnoho rozptlench\n" -" drobnch zmn." - -#: src/diff.c:907 -msgid "" -"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." -msgstr "" -"SOUBORY jsou `SOUBOR1 SOUBOR2' nebo `ADRESAR1 ADRESAR2' nebo\n" -"`ADRESAR SOUBOR...' nebo `SOUBOR... ADRESAR'." - -#: src/diff.c:908 -msgid "" -"If --from-file or --to-file is given, there are no restrictions on FILES." -msgstr "" -"Pokud je uveden --from-file nebo --to-file, pak nejsou u SOUBOR dn " -"omezen." - -#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 -msgid "If a FILE is `-', read standard input." -msgstr "Pokud SOUBOR bude `-', bude ten standardn vstup." - -#: src/diff.c:920 -#, c-format -msgid "Usage: %s [OPTION]... FILES\n" -msgstr "Pouit: %s [PEPNA]... SOUBORY\n" - -#: src/diff.c:949 -#, c-format -msgid "conflicting %s option value `%s'" -msgstr "pro pepna %s konfliktn hodnota `%s'" - -#: src/diff.c:962 -msgid "conflicting output style options" -msgstr "konfliktn pepnae pro styl vstupu" - -#: src/diff.c:976 -msgid "regular empty file" -msgstr "obyejn przdn soubor" - -#: src/diff.c:976 -msgid "regular file" -msgstr "obyejn soubor" - -#: src/diff.c:978 -msgid "directory" -msgstr "adres" - -#: src/diff.c:981 -msgid "block special file" -msgstr "speciln blokov soubor" - -#: src/diff.c:984 -msgid "character special file" -msgstr "speciln znakov soubor" - -#: src/diff.c:987 -msgid "fifo" -msgstr "roura" - -#: src/diff.c:991 -msgid "socket" -msgstr "soket" - -#: src/diff.c:994 -msgid "message queue" -msgstr "fronta zprv" - -#: src/diff.c:997 -msgid "semaphore" -msgstr "semafor" - -#: src/diff.c:1000 -msgid "shared memory object" -msgstr "objekt sdlen pamti" - -#: src/diff.c:1003 -msgid "typed memory object" -msgstr "typov pamov objekt" - -#: src/diff.c:1006 -msgid "weird file" -msgstr "soubor neznmho typu" - -#: src/diff.c:1070 src/diff.c:1256 -#, c-format -msgid "Only in %s: %s\n" -msgstr "Pouze v %s: %s\n" - -#: src/diff.c:1193 -msgid "cannot compare `-' to a directory" -msgstr "`-' s adresem nelze porovnat" - -#: src/diff.c:1220 -msgid "-D option not supported with directories" -msgstr "-D pepna nepodporuje prci s adresi" - -#: src/diff.c:1229 -#, c-format -msgid "Common subdirectories: %s and %s\n" -msgstr "Spolen podadrese: %s a %s\n" - -#: src/diff.c:1266 -#, c-format -msgid "File %s is a %s while file %s is a %s\n" -msgstr "Soubor %s je %s pokud soubor %s je %s\n" - -#: src/diff.c:1345 -#, c-format -msgid "Files %s and %s are identical\n" -msgstr "Soubory %s a %s jsou identick\n" - -#: src/diff3.c:26 -msgid "Written by Randy Smith." -msgstr "Autor: Randy Smith." - -#: src/diff3.c:328 -msgid "incompatible options" -msgstr "nekompatibiln pepnae" - -#: src/diff3.c:368 -msgid "`-' specified for more than one input file" -msgstr "`-' zadno pro vce ne jeden vstupn soubor" - -#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 -#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 -msgid "read failed" -msgstr "ten selhalo" - -#: src/diff3.c:441 -msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." -msgstr "" -"-e --ed Vype nespojen zmny ze STARYSOUBOR k VASSOUBOR do MUJSOUBOR." - -#: src/diff3.c:442 -msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." -msgstr "-E --show-overlap Vype neslouen zmny, konflikty v zvorkch." - -#: src/diff3.c:443 -msgid "-A --show-all Output all changes, bracketing conflicts." -msgstr "-A --show-all Vype vechny rozdly, konflikty v zvorkch." - -#: src/diff3.c:444 -msgid "-x --overlap-only Output overlapping changes." -msgstr "-x --overlap-only Vype pekrvajc se zmny." - -#: src/diff3.c:445 -msgid "-X Output overlapping changes, bracketing them." -msgstr "-X Vype pekrvajc se zmny, uzaven v zvorkch." - -#: src/diff3.c:446 -msgid "-3 --easy-only Output unmerged nonoverlapping changes." -msgstr "-3 --easy-only Vype neslouen nepekrvajc se zmny." - -#: src/diff3.c:448 -msgid "-m --merge Output merged file instead of ed script (default -A)." -msgstr "-m --merge Vype spojen soubor msto ed skriptu (implicitn -A)." - -#: src/diff3.c:449 -msgid "-L LABEL --label=LABEL Use LABEL instead of file name." -msgstr "-L POPIS --label=POPIS Pouije POPIS msto jmna souboru." - -#: src/diff3.c:450 -msgid "-i Append `w' and `q' commands to ed scripts." -msgstr "-i Pid pkazy `w' a `q' do skript pro ed." - -#: src/diff3.c:453 src/sdiff.c:202 -msgid "--diff-program=PROGRAM Use PROGRAM to compare files." -msgstr "--diff-program=PROGRAM Pouij PROGRAM k porovnn soubor." - -#: src/diff3.c:465 -#, c-format -msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" -msgstr "Pouit: %s [PEPNA]... MUJSOUBOR STARYSOUBOR VASSOUBOR\n" - -#: src/diff3.c:467 -msgid "Compare three files line by line." -msgstr "Porovnn t soubor dek po dku." - -#: src/diff3.c:673 -msgid "internal error: screwup in format of diff blocks" -msgstr "vnitn chyba: chyba ve formtu diff blok" - -#: src/diff3.c:971 -#, c-format -msgid "%s: diff failed: " -msgstr "%s: diff selhal: " - -#: src/diff3.c:993 -msgid "internal error: invalid diff type in process_diff" -msgstr "vnitn chyba: nesprvn typ diffu v process_diff" - -#: src/diff3.c:1018 -msgid "invalid diff format; invalid change separator" -msgstr "neplatn formt diff souboru; neplatn oddlova zmny" - -#: src/diff3.c:1242 -msgid "invalid diff format; incomplete last line" -msgstr "neplatn formt diff souboru; nekompletn posledn dek" - -#: src/diff3.c:1265 src/sdiff.c:273 -#, c-format -msgid "subsidiary program `%s' not executable" -msgstr "pomocn program `%s' nen spustiteln" - -#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 -#, c-format -msgid "subsidiary program `%s' not found" -msgstr "pomocn program `%s' nebyl nalezen" - -#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 -#, c-format -msgid "subsidiary program `%s' failed" -msgstr "pomocn program `%s' selhal" - -#: src/diff3.c:1294 -msgid "invalid diff format; incorrect leading line chars" -msgstr "neplatn formt diff souboru; nesprvn vodn znaky na dku" - -#: src/diff3.c:1370 -msgid "internal error: invalid diff type passed to output" -msgstr "vnitn chyba: nesprvn typ diffu pro vstup" - -#: src/diff3.c:1647 src/diff3.c:1704 -msgid "input file shrank" -msgstr "vstupn soubor se zmenil" - -#: src/dir.c:162 -#, c-format -msgid "cannot compare file names `%s' and `%s'" -msgstr "nemohu porovnat jmna soubor `%s' a `%s'" - -#: src/sdiff.c:35 -msgid "Written by Thomas Lord." -msgstr "Autor: Thomas Lord." - -#: src/sdiff.c:183 -msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." -msgstr "" -"-o SOUBOR --output=SOUBOR Interaktivn prce, vstup pjde do SOUBORu." - -#: src/sdiff.c:185 -msgid "-i --ignore-case Consider upper- and lower-case to be the same." -msgstr "-i --ignore-case Nerozliuje velk a mal psmena." - -#: src/sdiff.c:188 -msgid "-W --ignore-all-space Ignore all white space." -msgstr "-W --ignore-all-space Ignoruje vechny mezery." - -#: src/sdiff.c:194 -msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." -msgstr "" -"-w PO --width=PO Vype maximln PO (implicitn 130) znak na dek." - -#: src/sdiff.c:195 -msgid "-l --left-column Output only the left column of common lines." -msgstr "-l --left-column Vype pouze lev sloupec spolench dk." - -#: src/sdiff.c:196 -msgid "-s --suppress-common-lines Do not output common lines." -msgstr "-s --suppress-common-lines Nevypisuje shodn dky." - -#: src/sdiff.c:201 -msgid "" -"-H --speed-large-files Assume large files and many scattered small changes." -msgstr "" -"-H --speed-large-files Pedpokld velk soubory a mnoho rozptlench\n" -" drobnch zmn." - -#: src/sdiff.c:214 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 FILE2\n" -msgstr "Pouit: %s [PEPNA]... SOUBOR1 SOUBOR2\n" - -#: src/sdiff.c:215 -msgid "Side-by-side merge of file differences." -msgstr "" - -#: src/sdiff.c:327 -msgid "cannot interactively merge standard input" -msgstr "interaktivn nelze standardn vstup slouit" - -#: src/sdiff.c:588 -msgid "both files to be compared are directories" -msgstr "oba soubory k porovnn jsou adresi" - -#: src/sdiff.c:853 -msgid "" -"ed:\tEdit then use both versions, each decorated with a header.\n" -"eb:\tEdit then use both versions.\n" -"el:\tEdit then use the left version.\n" -"er:\tEdit then use the right version.\n" -"e:\tEdit a new version.\n" -"l:\tUse the left version.\n" -"r:\tUse the right version.\n" -"s:\tSilently include common lines.\n" -"v:\tVerbosely include common lines.\n" -"q:\tQuit.\n" -msgstr "" -"ed:\tEditace - pouije ob verze, kadou obda hlavikou.\n" -"eb:\tEditace - pouije ob verze.\n" -"el:\tEditace - pouije levou verzi.\n" -"er:\tEditace - pouije pravou verzi.\n" -"e:\tEditace nov verze.\n" -"l:\tPouije levou verzi.\n" -"r:\tPouije pravou verzi.\n" -"s:\tVtichosti vlo spolen dky.\n" -"v:\tUpozorn na vloen spolench dk.\n" -"q:\tUkonen.\n" - -#~ msgid "context length specified twice" -#~ msgstr "dlka kontextu zadna dvakrt" - -#~ msgid "multiple `--from-file' options" -#~ msgstr "vce pepna `--from-file'" - -#~ msgid "multiple `--to-file' options" -#~ msgstr "vce pepna `--to-file'" - -#~ msgid "--inhibit-hunk-merge Do not merge hunks." -#~ msgstr "--inhibit-hunk-merge Neslou sti." - -#~ msgid "regular empty executable file" -#~ msgstr "obyejn przdn spustiteln soubor" - -#~ msgid "regular executable file" -#~ msgstr "obyejn spustiteln soubor" diff --git a/src/bin/diffutils/po/da.gmo b/src/bin/diffutils/po/da.gmo deleted file mode 100644 index 3af33a074484001a3c6ba28ebac79dba959249d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22910 zcmb`O3y>YzdDnZ1?PSMx9Pi8PwVge?wscp!)1w(_*V2xpwMLrJXsmf@X7q|ywtD9F z+-cp{YCWp^yrfoq|9? zLxz`uF4Xd3@)4o$q|}iPt>v?*sSyW#H{W@Y;U{{&5hzzTqCf zX&C(OAb8VA5Zt#8exCcE4}v#80iFSW8=MM)2i^ic4n`o~Jn$j#&EPM9Zw1w^Q2h;p zcffZ9!Grri%7drf^9K_!e;nkyhyFA8To63` z0QeMm7NpL@FM;&`@Rz`G@T=f^g5VLx5S#+9x#y335~QC;)F1PD%WJ_C;2cOlZ}|a# zukVir!K06W&x3l;93K4$2wfii3P}HNeF!`W(uVqZE3^z|z+VH;1;Jx)0%_;5s~~fF z?1w@6c}(wV_ib+g4}!EQy1s1#mHl`aJ$Aka~}+oe7qNwloh@1^0m(2lO_Y zFJpY-TR_@-f;j{)fLk8_5lFvJ{0Yc>pJZ&oVK4>X34R7-o=^S@ka0fwr|$lp^c6fy z71g^9sz1i?u8)IHfS&`I+q?dizyCVO`t5ro$olOI!TsPS$anjG3WQhp{i=We`yjl% zpKnxe|9Ox#-G38A9`^qrNc;PL4&=N2zX?M3{r?e!zboR8$3Wf%-vJ&1zYT1__rU2f4`gI`m zf0{l5-aXA)X*^Fac~pP8*F4?;iXWZ?e-wNc{1uS4p8l^O>-7wEf<^Ec$XuS$yoI9o z2>4GxzJKPALHK%5<9QksUo)P;H4y$Ad>Le227el4{DZ&YpQ|6}8fv`IArzk(@TA8G z761O6Y7z7GPL-@%7L#&?ju0%(8m3P{@rKL$eIgIZ_k zeekOw>v&M~Wt_v0f_yhD{(?t_bN7Du(;)o~e+gtghkplzmxlinNPENo4SbSMUk^h6 z5oo9PBTFF9MwUUoA8CQmbmT)I^BMU#$hb#-3}o#_J_mj~_)8%482P6ld@}N{!TsQW z2cKX{q8H;nbPRkDyaWz_b&&QCp%3nx1izR2mk_Dn;-0>q)w=v+MDt&Q?+t=?e*~Nc ze-EVHBNWl=$Z3%A9-$reb42xoTE8Li*Fa?Bh~~}xQD|aO{09Awwm{_J=qEwOee|D$ z(CO$m96tZ8;CWOLGz-pxImmiEuXQ;I{vilIjq3dpcn)N3Mn4HMuhB1pb3t(IK9G4F zqpe^Tgg?~Iv9E*FI}Qz{SC5N63!uhNTgUH!rx2-e@CESu!71>|AoX9+eBk33-skT% z|1;eGTafSH!+~^(#0boj0se1SZyec^{vBTi>2LhgAoL#p0}y&ld^`9osBu$o;)g)y zHzEFEP0z5VvU6uHg7k6bZ-eg!e;uUW8TEtSo;(VUfm%oCGWmIsF;D&}$b8P~J@;ob z@Con>Am5!;KhS6De(*4O0i>NN(eIDI-vakBD&8O)zI0=f*L*Q?M&}jNkz_+uMT7URV(JPxjdp9Vh%La(`bkg?7E zE%0^VZ-ci%@y{bcF#jbG`p^G9_-0V;)Bky`pYREftfl1o{3K|=1(5YRFS;|o^FIqR z@AJO_LXY$R3uOKany2tOI1Jtd8TZ1^fQ)_NcR}d62uRN?YF^NJ5gwI(Uc3TAv&9dA z)L;C0Q1$)*WZsM40I9#k+%&Ew`VgNkF$USCr8ayF|1NEE|6mYY_*L*V;O~H}-GzSx zJ`8>xr2UKcf%JV*{XY%9A7p+PKMJy57e5QKju*cIs{YqN=zEDdYJQhyKMuxu+D->hDqX zdxip??XSWAj4hCi(3bpe$$lUjeUPHx=P8T!%Ki5jftM&>ps0_(M0o?{Wr}{Y6s_?` zDB@Akafl*1ZcsGNi1G=FXsO@dbrAej@CPW+ClGyEZ^?k>8=R#42<2~3^ka>Js}w`I zKq-E2_ZRD6i*k+fQ6HJq~s# zE0hJwBt^f^I*`5%eug61)9;5VAEs1w<9`o${4Q{=cvaH|dDBnYQ7v;Sa{pt>a4}srC8KlIN*H8v1KTFx7 z==aN%*HV6x@&QWk?|uH}?}I-|`6T79Q=X*g7dntENiW)8=5ZKYrX-Yk$~!3MDQ~3g zqpVW&L!V1mNzceu1;0oseuua?K=};ie#%iwh4Pmve}(cXN=|v0qTi2Ej!_<=+@O31 zrTCrV;-mJ)n297`i&HasW@gE>Q!_1WMq6g3-O8h+H9BDU?b}CjS1Xm%6=V3uWJ#;m zh|S7cltwE#ZJaJ@yf`;E=PPyJZqkuyujEmKwyUwBPGDTWJNr9sOe1N<^y zdSb*i{=$wIhun)3#fz18v)OK$yzM?SQLAdNe7&pTwX2t=#+S}syE=4reqrMDwQDa| z+cz(NaC%~CX=1^c^)zYat6`RJF}Z9#UNNhpi+yXmGX5qrQ5u_wF}53x_NFj3t$5Sa z(spNk(C`eRtVCIC-?ST5_r{S_WIbcdYLaHTovUeen#*zOyPy*$6z%bD*7(|{z3K^d z!c2!}o^e!C+Y>Y&c5i2B@R^Z-|94+tdee%>tvoB*baZX(d@*R^n=6e@mGy_ZTP9DV zgw?8P@>(_b;huzU?M36HwchEYg@(IyWq!gWnYj-ADud=aeE?AUdZz_*wQ6y-G6WwL z_1p(~U%sW8#d@-Cnby&J@!Zt>h*{ps;V>v@`O7kj__|x=P=A#}L&3hx@UNPzuEy!8 zeak&d&8)c?c!l?x$G*dDHQ_)XjN0bRDm09%qsBf-8jZMyptRTX1YQn9vv0-KO}4K<_P4-uD5M)N;~_(k){a;;3r5b~8=#*i@rDGD*w$*G-hHYKvLJ^|W0}qvnbEg}KRv zF_ggtv{G?{szhn7OPj62gqgmQ-VJqUI|#$P?e3P_XmM%9WHpJay%kS5DKe*hQ|^|w zVL>=5PEo`elIotXz)s6F4)e1_c{|-wuWNB*-I%#fE=7>9vF>_e-?Y=@1MQY2V0L2m z0#i5_$LmH{BC3^RNv~J`>uJ22+_ZzwI;&i&k)+mYr_i5ig{`O=hgLb8Df`%I>dm#d z<*6Z!W+|YmmMHhOdYW%nm2F$QR(r2eoNl+Wq*_>vyN-idG|>(Pp(5iSXsI<%)+erp zaA?gszty;A+&hj)_4+{k!uB50^J?iTG zl_*V&NyUB&gf-`!cHIZoNvQSOLe6 zW+{y$)ZB80Zu6?!GO-ME++5GaSBH%W!#K*e!gi~H;CKe>w3;#Gs6xJ0dm~O8(fYa; zy*vLgeVDDaH$#oN_^yXWr~sUwdYs$u+O5?_vXYB(r}U-gx8+9Esyog#C9^pio6WU0 zlIS?tx)bzc>(j=#nH`(Kj?>U;HC{d8?)>2W&@F=^WE!No{!Uxbeuj>P8#I*hLZ7$V zxyd@~>+LjW(pEba(wD?p5W23MjO5XB7~fov;7L|=`>3m(SPMrbTmfH+o@@h_T%MdI z$x2dt+U`lWvzFq2Ui>>{7J4Uz247iYrMwo=yF&JNTMm}OenBHlZrV(botnT;3X!bk zxN*YYN|Uc;;44Y83A2 z(^fsJNxw^KC21vjg1~60%uG~g-H;XMuyoe(VDNY2^|RW0wbklxdhtK$&CyAQE-uOvQSm(0PQu!LyT?@w7Eh^lV-0oB354u4^T+WV@b1u%k{RH-`^&?bu3t9pma8 za)v(;c4+KE(HN>ww)b8e^VPepi4>ND3x<9L4#u4ivC3W%u7s;N-qtNOi&8oeXl2cu zHs#|u;@*=N3!b!w)WR7ridH=ob*&(tkQ~~kMEPc$Jr6E{)Vb86TYFK~N?}z4X~Nak z050JMvHh${8LcL4^de`%u%cOPm(Q;&3jzbfZhY?*C}xJcYz1p34%z;CyT)=m(Yfhy z%enM-W$wa)y=MK}X6A~nX(v%PUhzBkqBQKN-Z%}d-L-o|=YH@pj*zCF;b-jHLZPH0 zRE^tv#H|(d2Fz*|O|f%xACJ)uq`1CWv0Yt%sbZZXxnH7FIceF3#AqwjGi0wXPPoUr zY@51UqQcC(HbzGE30A(GeQ#6#Z4hEb;l6k^MiwF{q-y?1TRTwhNsnrvA!(Hh&2G4#u_xkbkkSihUrCZ}rH zV0D~7DNX0--7DEmO~IPqvW;G2++zhwQg_8X96P{3n06SZEBIwyW?VSESnMUdAJ;O| zQ!`Umja#j9!rvAiwiKhJ#XT+*kBfV#14k3DRp;b^GgG*g3j}y0Zfp%ACQkJi^mAV` z#Fx~NTvR4%KlCnNhsbNi$m3-o#(xZ?S}Sb76hW&T@~HV#1wP zmCvC>7_!ksXt~I6&=LQFIQT8H+Q-aR5)(v;ZzlLLd6ai>`tj$A&#_~8HX%NAD^FIi zdCmwh6g_vgGT)SKb6U8=541=zOa=*KTp2v{u{H*;E~`NAAT2ZyLKP3d7B$ny5kv_IpqR4nHdNWV+AU+ zK8YA5JYuzwqDj=~?#i7t#9@;v94g=CYiV5gO4eTPtWom3Rdu`<4h1q;i#CRNU6&)) zp*mEtv9&1_8;>BgSMDs;V-0=N8k8(68cS)l@gKBtwO)#JgdO|hP(VwOz1DZv zLpzmbk|~fq$Tzs|sFhY#4uv;v+rQYWnvcpYvlpZxf`c;9!IXcD6XHYUD};12qkuy9 zCDG%^`cq}Ko_97RD?jwbmtXu~`5Y~^5?hx&jcXk?_1cC>bFo<~D-m#ETaJG3KG|7$ zCT?2dN zbLP_6!ot|>(iNnLO+6!E(+ME*Wuf=-Rbwcl&5@ua|D0Vv2oCv56T7E)hd! z(IqPLY)H*Strn*_{GSjrI2&;tHwMjkw87!S*=Q@y1_u_{_(@k1m1s1GBszAVrjaEb zeGT=txqu{WnMK%Xt?&8LTDwW4Zn~Y~2KJ0$shuw0XcJGIM2$6IB`YVc`}aQL~$=M4yO%ANG@8GzlX^hCn9*C=@$qou6pc7!Qzosi5Y(1Iunh93`)Tqem3pp8_+Vy(4jGq z%W2l;a+RolCYzFRdLg9zkq+S4$r zZC!k{P-+s1?W5m}6HK3-r#pW2M43<9nq4?m4UuO#|&WSW7V@ifUmoKBMQyC!%Yh2lL;&9OF_y05`bjNUH8;`{=e9hbyp63digsqGb93X`i)<}XF7 z8wuWhe*)8u-VCO)hGYp>(55)q8e*zFbC}{AMPk$RZT22DlhxB?!=*Lx=60$hoITQ+ zPNkh%H=juo>gUpG;4!)|L8`Fn@+~B!FPtd8EV7#*wG-`}p30D;PEbZTq7-dxdrsOk za5lc$`^XQ6ArWR<6{T8hvo0IAak-!>dOB*fYZ|`GaJtA&6`jn$)^6P1Ey0Os%ou9! zlr?k4-FfYa#_`r9Vnk zET{|WQFbkAa4=krS#i6s(CBx|gu)a-F?pWJl9n$_H!MJZtDp*RNZ?978Y zgDIoW)vVD`-~_hXAk)xhL7AtvWknr80edr{)_U@y`uVD#ove(>M{s;~$lQgm_RNoh zg>a~4^sL#?MDdDbCg2d~A8Zgm=0VPRgqHlUjyrm?r5t^weM5As!hul8-WDf9w!L0@ zZOfZ-E!fGGwFYs#6l|z#$C6m3jtFIz+;>l&f{V*mEQ#1mH#!VYv$B)$js|m43f09~ zO{hqr(w!TRn~aUcStijNyW;Y0)Z^o;EXIUN~o`?h>y2 zt=0AJIzf(MN1KFOCR`zH-S|g-ANpRIc}S-Lxcz>&?76 zbE~_s@ca5LH+QRk;X9b8gZr$sZz-~p2bjxUbFna2`owK3(oQq0;~Pn$tQe7&g5|+w>t^cknB`<-f~lmrmUlGV@SprSz71JN;|lNPoJCRZER0=mVH8g zmZO?`|5O=}a2Zkc(Fm1U5A! zZehHnIC}H8L=*(Dfy#7=TXlQ>sD&)_h&<`UCvKH;?3?P(-YVa!Rh%0BF39c#;pw<` z%PM8-x%9J*|B5y1&*+*=QLWlE$VItRlcY#KWY^_M$-rZ`-FC9nptM5DiOcSCYe!W% zHaL*|$zAU4E?U#`l9?QvnVFcD9N-mF2w+W{Jd&`PxVa4k?*sOG#t(&J9x`wTrGQFIB=iMjQLyX1O%X za?(}-keOw7iQOK{oGkbJu6s)>El6C~aVgp(o6CN`Yqpo$mlid4%lHzb)H^MdA1Z^@ zthXC&`ND{mO9#L=?V4~l^o9%T0S+laIH6nauH8%8t#aJ*Oz=&@!*6m4OJ!5pb9$Dr? z>nwF`Wg6FQmY7y&_q?wu+-?qrMEXVNFIox`jg>t=-0Q+|?wxvB&z{u<; z2Mi&zeg}sX&J4LJ730_=#m6ld9n$+Q{JAp$Y&zQLnsB;+hN5(7t&l0VN_5ZSHYF^(LktHGg<{nV>f=#a_l42}a~`b)2RvKWZf+)dfG z)So0)%<^6omBz7Gl9(U2wh3;py&B=`%cNNnv%@4+OeVr{pqGU!^fU0CI2uX-y;`R-bYtdTM%AZoixR%J>{I-P^&;O}J_ zV}&c5$UwH3k6xY|BYrVQc+y|&cw_aBvdR1hQbXiK`075VOp!;Yc634Tg}<@YDQfRy zmp3N;-AlGoPIrIZM^&p5dcr+^NaZ$NBk)lnj;6I$#x=6qz@?d4=ZR;yDwZS=@75|g zPfD876HB7^7c+I65KabAZZY%WK%w+7OG~>;10ezAou8m2$eXy}BCTdQs&%Sl;THL4 z{&`Nq*#-x?>_JctVO=?Baru$sNQKF)PF0oS9r+X8IJ-?iD_ewu9O^$A77oVf}Qo?OvS7jG(c7AfUBTvSL)Z6RJMDud8)}(RmK7;F=ek=pqc)i^?!3#Z2 zyDE1b*EtMY0-w0Nv@>vWo>Ubs>NX=PZJ&-RDqgg6)C-X}EBoR};OLpD)UDdz zJ7LXwN}+c^>_Hc)?;L~bctX3D?m&Fon;ydF7gM7a?V3m%AoL3@&g| zqAluEUZW{>%|AL&JR*0^Kf3B4DS6F5B6UrBOqaQ~G&Oy3Y}gZMrR3&koIP&oFs)vQZs7zS`6^ariWx;uF_;T3mor%fz*w=Y5H5 zz0Y?fuF>?4ytO5FB*vgCE`v>S(oS#V7UaiZVH<7XI=Fkq<+!zFoA4=Yl~CDXI-6AF z9S&hiU(+AURrSXZN?WTdB)-C51ls$UBtLK5W!1W-0O{qv^w|TQ!rL%sPZfqNSN*w(Hrs1lD%-4BqCh(R9D=mJ7sRzAIjj zGQh*K>eY(gzAQu$=p-`EN9{-ZL+qO$J zoPIc>tTcLmQ3oa=C7^ggcAJE=+?^NCNp7>x`q3}OD@1wVFQN%ZSkmfpi%W5fZR&*GGW8wVSWBIbF-Gy2ObDF zW{oYDQ>@ig1^-}2n1ENT#asU7T diff --git a/src/bin/diffutils/po/da.po b/src/bin/diffutils/po/da.po deleted file mode 100644 index 368d076bce..0000000000 --- a/src/bin/diffutils/po/da.po +++ /dev/null @@ -1,931 +0,0 @@ -# Danish diffutils translation po-file -# Copyright (C) 2000 Free Software Foundation, Inc. -# Claus Hindsgaul , 2000-2002. -# -msgid "" -msgstr "" -"Project-Id-Version: diffutils 2.7.10\n" -"POT-Creation-Date: 2002-04-05 14:10-0800\n" -"PO-Revision-Date: 2002-03-12 14:51GMT\n" -"Last-Translator: Claus Hindsgaul \n" -"Language-Team: Danish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 0.9.5\n" - -#: lib/c-stack.c:188 -msgid "program error" -msgstr "programfejl" - -#: lib/c-stack.c:189 -msgid "stack overflow" -msgstr "stakoverlb" - -#: lib/error.c:128 lib/error.c:156 -msgid "Unknown system error" -msgstr "Ukendt systemfejl" - -#: lib/freesoft.c:27 -msgid "" -"This program comes with NO WARRANTY, to the extent permitted by law.\n" -"You may redistribute copies of this program\n" -"under the terms of the GNU General Public License.\n" -"For more information about these matters, see the file named COPYING." -msgstr "" -"Dette program kommer HELT UDEN GARANTI i den udstrkning, loven tillader " -"det.\n" -"Du m videredistribuere kopier af dette program\n" -"under betingelserne i GNU General Public License (GPL).\n" -"Se filen COPYING for flere oplysninger om dette." - -#: lib/getopt.c:693 -#, c-format -msgid "%s: option `%s' is ambiguous\n" -msgstr "%s: tilvalg '%s' er flertydigt\n" - -#: lib/getopt.c:718 -#, c-format -msgid "%s: option `--%s' doesn't allow an argument\n" -msgstr "%s: tilvalg '--%s' tillader ikke et parameter\n" - -#: lib/getopt.c:723 -#, c-format -msgid "%s: option `%c%s' doesn't allow an argument\n" -msgstr "%s: tilvalg '%c%s' tillader ikke et parameter\n" - -#: lib/getopt.c:741 lib/getopt.c:914 -#, c-format -msgid "%s: option `%s' requires an argument\n" -msgstr "%s: tilvalg '--%s' tillader ikke et parameter\n" - -#: lib/getopt.c:770 -#, c-format -msgid "%s: unrecognized option `--%s'\n" -msgstr "%s: ukendt tilvalg '--%s'\n" - -#: lib/getopt.c:774 -#, c-format -msgid "%s: unrecognized option `%c%s'\n" -msgstr "%s: ukendt tilvalg '%c%s'\n" - -#: lib/getopt.c:800 -#, c-format -msgid "%s: illegal option -- %c\n" -msgstr "%s: ugyldigt tilvalg -- %c\n" - -#: lib/getopt.c:803 -#, c-format -msgid "%s: invalid option -- %c\n" -msgstr "%s: ugyldigt tilvalg -- %c\n" - -#: lib/getopt.c:833 lib/getopt.c:963 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "%s: tilvalg krver et parameter -- %c\n" - -#: lib/getopt.c:880 -#, c-format -msgid "%s: option `-W %s' is ambiguous\n" -msgstr "%s: tilvalget '-W %s' er flertydigt\n" - -#: lib/getopt.c:898 -#, c-format -msgid "%s: option `-W %s' doesn't allow an argument\n" -msgstr "%s: tilvalget '-W %s' tillader ikke et parameter\n" - -#: lib/regex.c:1367 -msgid "Success" -msgstr "Succes" - -#: lib/regex.c:1370 -msgid "No match" -msgstr "Ingen match" - -#: lib/regex.c:1373 -msgid "Invalid regular expression" -msgstr "Ugyldigt regulrt udtryk" - -#: lib/regex.c:1376 -msgid "Invalid collation character" -msgstr "Ugyldig sammenlignings-tegn" - -#: lib/regex.c:1379 -msgid "Invalid character class name" -msgstr "Ugyldigt navn p tegn-klasse" - -#: lib/regex.c:1382 -msgid "Trailing backslash" -msgstr "Efterstillet backslash" - -#: lib/regex.c:1385 -msgid "Invalid back reference" -msgstr "Ugyldig bagud-reference" - -#: lib/regex.c:1388 -msgid "Unmatched [ or [^" -msgstr "Uparret [ eller [^" - -#: lib/regex.c:1391 -msgid "Unmatched ( or \\(" -msgstr "Uparret ( eller \\(" - -#: lib/regex.c:1394 -msgid "Unmatched \\{" -msgstr "Uparret \\{" - -#: lib/regex.c:1397 -msgid "Invalid content of \\{\\}" -msgstr "Ugyldigt indhold af \\{\\}" - -#: lib/regex.c:1400 -msgid "Invalid range end" -msgstr "Ugyldig omrde-afslutning" - -#: lib/regex.c:1403 -msgid "Memory exhausted" -msgstr "Hukommelse opbrugt" - -#: lib/regex.c:1406 -msgid "Invalid preceding regular expression" -msgstr "Ugyldigt foranstillet regulrt udtryk" - -#: lib/regex.c:1409 -msgid "Premature end of regular expression" -msgstr "For tidlig afslutning p regulrt udtryk" - -#: lib/regex.c:1412 -msgid "Regular expression too big" -msgstr "For stort regulrt udtryk" - -#: lib/regex.c:1415 -msgid "Unmatched ) or \\)" -msgstr "Uparret ) eller \\)" - -#: lib/regex.c:8034 -msgid "No previous regular expression" -msgstr "Intet foranstillet regulrt udtryk" - -#: lib/xmalloc.c:63 -msgid "memory exhausted" -msgstr "hukommelse opbrugt" - -#: src/analyze.c:809 src/diff.c:1283 -#, c-format -msgid "Files %s and %s differ\n" -msgstr "Filerne %s og %s er forskellige\n" - -#: src/analyze.c:812 -#, c-format -msgid "Binary files %s and %s differ\n" -msgstr "Binre filer %s og %s er forskellige\n" - -#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 -msgid "No newline at end of file" -msgstr "Intet linjeskift ved filafslutning" - -#: src/cmp.c:43 -msgid "Written by Torbjorn Granlund and David MacKenzie." -msgstr "Skrevet af Torbjorn Granlund og David MacKenzie." - -#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 -#, c-format -msgid "Try `%s --help' for more information." -msgstr "Prv '%s --help' for mere information." - -#: src/cmp.c:137 -#, c-format -msgid "invalid --ignore-initial value `%s'" -msgstr "ugyldig '--ignore-initial'-vrdi `%s'" - -#: src/cmp.c:146 -msgid "options -l and -s are incompatible" -msgstr "tilvalgene -l og -s er inkompatible" - -#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 -#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 -#: src/util.c:286 src/util.c:293 -msgid "write failed" -msgstr "skrivning mislykkedes" - -#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 -#: src/sdiff.c:179 -msgid "standard output" -msgstr "standard-ud" - -#: src/cmp.c:160 -msgid "-b --print-bytes Print differing bytes." -msgstr "-b --print-byte Vis afvigende byte." - -#: src/cmp.c:161 -msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." -msgstr "" -"-i SPRING --ignore-initial=SPRING Overspring de frste SPRING byte i " -"inddata." - -#: src/cmp.c:162 -msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" -msgstr "-i SPRING1:SPRING2 --ignore-initial=SPRING1:SPRING2" - -#: src/cmp.c:163 -msgid "" -" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." -msgstr "" -" Overspring de frste SPRING1 byte i FIL1 og de frste SPRING2 byte i FIL2." - -#: src/cmp.c:164 -msgid "-l --verbose Output byte numbers and values of all differing bytes." -msgstr "-l --verbose Vis antal byte og vrdierne for alle afvigende byte." - -#: src/cmp.c:165 -msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." -msgstr "-n GRNSE --bytes=GRNSE Sammenlign hjst GRNSE byte." - -#: src/cmp.c:166 -msgid "-s --quiet --silent Output nothing; yield exit status only." -msgstr "" -"-s --quiet --silent Ingen udlsning; st kun en afslutnings-slut-kode." - -#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 -msgid "-v --version Output version info." -msgstr "-v --version Vis versions-info." - -#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 -msgid "--help Output this help." -msgstr "--help Vis denne hjlp." - -#: src/cmp.c:177 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" -msgstr "Brug: %s [TILVALG]... FIL1 [FIL2 [SPRING1 [SPRING2]]]\n" - -#: src/cmp.c:179 -msgid "Compare two files byte by byte." -msgstr "Sammenlign to filer byte for byte." - -#: src/cmp.c:183 -msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." -msgstr "" -"SPRING1 og SPRING2 er antallet af byte, der skal overspringes i hver fil." - -#: src/cmp.c:184 -msgid "" -"SKIP values may be followed by the following multiplicative suffixes:\n" -"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" -"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." -msgstr "" -"SPRING-vrdier kan efterflges af flgende enheder:\n" -"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" -"GB 1,000,000,000, G 1,073,741,824, og s videre for T, P, E, Z, Y." - -#: src/cmp.c:187 -msgid "If a FILE is `-' or missing, read standard input." -msgstr "Sfremt en FIL er '_' eller mangler, lses fra standard inddata." - -#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 -msgid "Report bugs to ." -msgstr "Raportr programfejl p engelsk til ." - -#: src/cmp.c:231 -#, c-format -msgid "invalid --bytes value `%s'" -msgstr "ugyldig '--bytes'-vrdi `%s'" - -#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 -#, c-format -msgid "missing operand after `%s'" -msgstr "manglende operant efter '%s'" - -#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 -#, c-format -msgid "extra operand `%s'" -msgstr "ekstra operant '%s'" - -#: src/cmp.c:477 -#, c-format -msgid "%s %s differ: byte %s, line %s\n" -msgstr "%s %s afviger: byte %s, linje %s\n" - -#: src/cmp.c:495 -#, c-format -msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" -msgstr "%s %s afviger: tegn %s, linje %s er %3o %s %3o %s\n" - -#: src/cmp.c:543 -#, c-format -msgid "cmp: EOF on %s\n" -msgstr "cmp: filafslutning p %s\n" - -#: src/diff.c:41 -msgid "" -"Written by Paul Eggert, Mike Haertel, David Hayes,\n" -"Richard Stallman, and Len Tower." -msgstr "" -"Skrevet af Paul Eggert, Mike Haertel, David Hayes,\n" -"Richard Stallman og Len Tower." - -#: src/diff.c:322 -#, c-format -msgid "invalid context length `%s'" -msgstr "ugyldig indholdslngde '%s'" - -#: src/diff.c:405 -msgid "pagination not supported on this host" -msgstr "paginering understttes ikke af denne vrt" - -#: src/diff.c:420 src/diff3.c:315 -msgid "too many file label options" -msgstr "for mange fil-mrke tilvalg" - -#: src/diff.c:498 -#, c-format -msgid "invalid width `%s'" -msgstr "ugyldig bredde '%s'" - -#: src/diff.c:502 -msgid "conflicting width options" -msgstr "modstridende breddeangivelser" - -#: src/diff.c:526 -#, c-format -msgid "invalid horizon length `%s'" -msgstr "ugyldig horisont-lngde '%s'" - -#: src/diff.c:629 -#, c-format -msgid "`-%ld' option is obsolete; use `-%c %ld'" -msgstr "Tilvalget '-%ld' er forldet; benyt '-%c %ld'" - -#: src/diff.c:641 -#, c-format -msgid "`-%ld' option is obsolete; omit it" -msgstr "Tilvalget '-%ld' er forldet; udelad det" - -#: src/diff.c:709 -msgid "--from-file and --to-file both specified" -msgstr "bde --from-file og --to-file er angivet" - -#: src/diff.c:832 -msgid "Compare files line by line." -msgstr "Sammenlign filer linje for linje" - -#: src/diff.c:834 -msgid "-i --ignore-case Ignore case differences in file contents." -msgstr "-i --ignore-case Ignorr versalforskelle i filindholdet" - -#: src/diff.c:835 -msgid "--ignore-file-name-case Ignore case when comparing file names." -msgstr "" -"--ignore-file-name-case Ignorr versalforskelle ved sammenligning af " -"filnavne." - -#: src/diff.c:836 -msgid "--no-ignore-file-name-case Consider case when comparing file names." -msgstr "" -"--no-ignore-file-name-case Bemrk versalforskelle, nr filnavne " -"sammenlignes." - -#: src/diff.c:837 src/sdiff.c:186 -msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." -msgstr "" -"-E --ignore-tab-expansion Ignore ndringer, der skyldes tabulatoromstning." - -#: src/diff.c:838 src/sdiff.c:187 -msgid "-b --ignore-space-change Ignore changes in the amount of white space." -msgstr "" -"-b --ignore-space-change Ignorr ndringer i antallet af mellemrumstegn." - -#: src/diff.c:839 -msgid "-w --ignore-all-space Ignore all white space." -msgstr "-w --ignore-all-space Ignorr alle mellemrums-tegn." - -#: src/diff.c:840 src/sdiff.c:189 -msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." -msgstr "" -"-B --ignore-blank-lines Ignorr ndringer med udelukkende tomme linjer." - -#: src/diff.c:841 src/sdiff.c:190 -msgid "" -"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." -msgstr "" -"-I MNSTER --ignore-matching-lines=MNSTER Ignorr ndringer, hvis linjer " -"alle matcher MNSTER." - -#: src/diff.c:842 src/sdiff.c:191 -msgid "--strip-trailing-cr Strip trailing carriage return on input." -msgstr "" -"--strip-trailing-cr Fjern afsluttende vognretur (carriage return) i inddata." - -#: src/diff.c:844 -msgid "--binary Read and write data in binary mode." -msgstr "--binary Ls og skriv data binrt." - -#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 -msgid "-a --text Treat all files as text." -msgstr "-a --text Behandl alle filer som tekst." - -#: src/diff.c:848 -msgid "" -"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " -"context.\n" -"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " -"context.\n" -" --label LABEL Use LABEL instead of file name.\n" -" -p --show-c-function Show which C function each change is in.\n" -" -F RE --show-function-line=RE Show the most recent line matching RE." -msgstr "" -"-c -C ANTAL --context[=ANTAL] Udls ANTAL (standard 3) linjer af kopieret " -"kontekst.\n" -"-u -U ANTAL --unified[=ANTAL] Udls ANTAL (standard 3) linjer af unified " -"kontekst.\n" -" -L MRKE --label MRKE Brug MRKE i stedet for filnavn.\n" -" -p --show-c-function Vis hvilken C funktion hver ndring er i.\n" -" -F MNSTER --show-function-line=MNSTER Vis den sidste foregende linje, " -"der matcher MNSTER." - -#: src/diff.c:853 -msgid "-q --brief Output only whether files differ." -msgstr "-q --brief Undersg kun om filerne er ens eller ej." - -#: src/diff.c:854 -msgid "-e --ed Output an ed script." -msgstr "-e --ed Udls et ed skript." - -#: src/diff.c:855 -msgid "--normal Output a normal diff." -msgstr "--normal Udls en almindelig diff." - -#: src/diff.c:856 -msgid "-n --rcs Output an RCS format diff." -msgstr "-n --rcs Udls en diff i RCS-format." - -#: src/diff.c:857 -msgid "" -"-y --side-by-side Output in two columns.\n" -" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" -" --left-column Output only the left column of common lines.\n" -" --suppress-common-lines Do not output common lines." -msgstr "" -"-y --side-by-side Udls i to kolonner.\n" -" -W ANTAL --width=ANTAL Udls hjst ANTAL (standard 130) skriftsjler.\n" -" --left-column Vis kun venstre kolonne af identiske linjer.\n" -" --suppress-common-lines Udls ikke sammenfaldende linjer." - -#: src/diff.c:861 -msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." -msgstr "" -"-D NAVN --ifdef=NAVN Udls flettet fil for at vise '#ifdef NAVN' ndringer." - -#: src/diff.c:862 -msgid "" -"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." -msgstr "" -"--GTYPE-group-format=GFMT Det samme, men formatr GTYPE inddata grupper med " -"GFMT" - -#: src/diff.c:863 -msgid "--line-format=LFMT Similar, but format all input lines with LFMT." -msgstr "" -"--line-format=LFMT Det samme, men formatr alle indlste linjer med LFMT." - -#: src/diff.c:864 -msgid "" -"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." -msgstr "" -"--LTYPE-line-format=LFMT Det samme, men formatr LTYPE inddata med LFMT" - -#: src/diff.c:865 -msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." -msgstr "" -" LTYPE er 'gammel', 'ny' eller 'undret'. GTYPE er LTYPE eller 'ndret'." - -#: src/diff.c:866 -msgid "" -" GFMT may contain:\n" -" %< lines from FILE1\n" -" %> lines from FILE2\n" -" %= lines common to FILE1 and FILE2\n" -" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" -" LETTERs are as follows for new group, lower case for old group:\n" -" F first line number\n" -" L last line number\n" -" N number of lines = L-F+1\n" -" E F-1\n" -" M L+1" -msgstr "" -" GFMT m indeholde:\n" -" %< linjer fra FIL1\n" -" %> linjer fra FIL2\n" -" %= linjer, der er flles mellem FIL1 og FIL2\n" -" %[-][BREDDE][.[PRC]]{doxX}BOGSTAV printf-type specifikation for " -"BOGSTAV\n" -" BOGSAV er som nedenfor for en ny gruppe, sm bogstaver for gammel " -"gruppe:\n" -" F frste linjenummer\n" -" L sidste linjenummer\n" -" N antal linjer = L-F+1\n" -" E F-1\n" -" M L+1" - -#: src/diff.c:877 -msgid "" -" LFMT may contain:\n" -" %L contents of line\n" -" %l contents of line, excluding any trailing newline\n" -" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" -msgstr "" -" LFMT m indeholde:\n" -" %L indhold af linje\n" -" %l indhold af linje, undtagen eventuel flgende linjeskift\n" -" %[-][BREDDE][.[PRC]]{doxX}n printf-stil angivelse af inddata " -"linjenummer" - -#: src/diff.c:881 -msgid "" -" Either GFMT or LFMT may contain:\n" -" %% %\n" -" %c'C' the single character C\n" -" %c'\\OOO' the character with octal code OOO" -msgstr "" -" Enten kan GFMT eller LFMT indeholde:\n" -" %% %\n" -" %c'T' tegnet T alene\n" -" %c'\\000' tegnet med oktal kode 000" - -#: src/diff.c:886 -msgid "-l --paginate Pass the output through `pr' to paginate it." -msgstr "-l --paginate Led uddata gennem 'pr' for at sideinddele det." - -#: src/diff.c:887 src/sdiff.c:198 -msgid "-t --expand-tabs Expand tabs to spaces in output." -msgstr "-t --expand-tabs Lav tabulatorer om til mellemrum i output." - -#: src/diff.c:888 src/diff3.c:452 -msgid "-T --initial-tab Make tabs line up by prepending a tab." -msgstr "" -"-T --initial-tab F tabulatorer p linje ved at forudstille en tabulator." - -#: src/diff.c:890 -msgid "-r --recursive Recursively compare any subdirectories found." -msgstr "-r --recursive Sammenlign alle fundne underkataloger rekursivt." - -#: src/diff.c:891 -msgid "-N --new-file Treat absent files as empty." -msgstr "-N --new-file Behandl manglende filer som var de tomme." - -#: src/diff.c:892 -msgid "--unidirectional-new-file Treat absent first files as empty." -msgstr "" -"--unidirectional-new-file Behandl frste manglende filer som var de tomme." - -#: src/diff.c:893 -msgid "-s --report-identical-files Report when two files are the same." -msgstr "-s --report-identical-files Rapportr hvis to filer er ens." - -#: src/diff.c:894 -msgid "-x PAT --exclude=PAT Exclude files that match PAT." -msgstr "-x MNSTER --exclude=MNSTER Udelad filer, det matcher MNSTER." - -#: src/diff.c:895 -msgid "" -"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." -msgstr "" -"-X FIL --exclude-from=FIL Udelad filer, der matcher ethvert mnster i FIL." - -#: src/diff.c:896 -msgid "" -"-S FILE --starting-file=FILE Start with FILE when comparing directories." -msgstr "-S FIL --starting-file=FIL Star med FIL, nr kataloger sammenlignes." - -#: src/diff.c:897 -msgid "" -"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." -msgstr "" -"--from-file=FIL1 Sammenlign FIL1 med alle operanter. FIL1 m godt vre et " -"katalog." - -#: src/diff.c:898 -msgid "" -"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." -msgstr "" -"--to-file=FIL1 Sammenlign alle operanter med FIL2. FIL2 m godt vre et " -"katalog." - -#: src/diff.c:900 -msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." -msgstr "" -"--horizon-lines=ANTAL Behold ANTAL linjer af flles prfix og suffiks." - -#: src/diff.c:901 src/sdiff.c:200 -msgid "-d --minimal Try hard to find a smaller set of changes." -msgstr "-d --minimal Grundigt forsg p at finde et mindre antal ndringer." - -#: src/diff.c:902 -msgid "" -"--speed-large-files Assume large files and many scattered small changes." -msgstr "" -"--speed-large-files Antag store filer og mange spredte, sm ndringer." - -#: src/diff.c:907 -msgid "" -"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." -msgstr "" -"FILER er 'FIL1 FIL2' eller 'KATALOG1 KATALOG2' eller 'KATALOG FIL...' eller " -"'FIL... KATALOG'." - -#: src/diff.c:908 -msgid "" -"If --from-file or --to-file is given, there are no restrictions on FILES." -msgstr "" -"hvis --from-file eller --to-file er angivet, er der ingen restriktioner p " -"FILER." - -#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 -msgid "If a FILE is `-', read standard input." -msgstr "Sfremt en FIL er '-', lses fra standard-ind." - -#: src/diff.c:920 -#, c-format -msgid "Usage: %s [OPTION]... FILES\n" -msgstr "Brug: %s [TILVALG]... FILER\n" - -#: src/diff.c:949 -#, c-format -msgid "conflicting %s option value `%s'" -msgstr "modstridende vrdi for %s-tilvalget: '%s'" - -#: src/diff.c:962 -msgid "conflicting output style options" -msgstr "modstridende valg af uddata-stil" - -#: src/diff.c:976 -msgid "regular empty file" -msgstr "almindelig tom fil" - -#: src/diff.c:976 -msgid "regular file" -msgstr "almindelig fil" - -#: src/diff.c:978 -msgid "directory" -msgstr "katalog" - -#: src/diff.c:981 -msgid "block special file" -msgstr "blok-specialfil" - -#: src/diff.c:984 -msgid "character special file" -msgstr "tegn-specialfil" - -#: src/diff.c:987 -msgid "fifo" -msgstr "fifo" - -#: src/diff.c:991 -msgid "socket" -msgstr "stik" - -#: src/diff.c:994 -msgid "message queue" -msgstr "meddelelsesk" - -#: src/diff.c:997 -msgid "semaphore" -msgstr "signal" - -#: src/diff.c:1000 -msgid "shared memory object" -msgstr "delt hukommelses-objekt" - -#: src/diff.c:1003 -msgid "typed memory object" -msgstr "typeangivet hukommelses-objekt" - -#: src/diff.c:1006 -msgid "weird file" -msgstr "mystisk fil" - -#: src/diff.c:1070 src/diff.c:1256 -#, c-format -msgid "Only in %s: %s\n" -msgstr "Kun i %s: %s\n" - -#: src/diff.c:1193 -msgid "cannot compare `-' to a directory" -msgstr "kan ikke sammenligne '-' med et katalog" - -#: src/diff.c:1220 -msgid "-D option not supported with directories" -msgstr "-D tilvalg understttes ikke for kataloger" - -#: src/diff.c:1229 -#, c-format -msgid "Common subdirectories: %s and %s\n" -msgstr "Identiske underkataloger: %s og %s\n" - -#: src/diff.c:1266 -#, c-format -msgid "File %s is a %s while file %s is a %s\n" -msgstr "Filen %s er en %s mens filen %s er en %s\n" - -#: src/diff.c:1345 -#, c-format -msgid "Files %s and %s are identical\n" -msgstr "Filerne %s og %s er identiske\n" - -#: src/diff3.c:26 -msgid "Written by Randy Smith." -msgstr "Skrevet af Randy Smith." - -#: src/diff3.c:328 -msgid "incompatible options" -msgstr "inkompatible tilvalg" - -#: src/diff3.c:368 -msgid "`-' specified for more than one input file" -msgstr "'-' angiver mere en n ind-fil" - -#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 -#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 -msgid "read failed" -msgstr "lsning mislykkedes" - -#: src/diff3.c:441 -msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." -msgstr "" -"-e --ed Udls uflettede ndringer mellem GAMMELFIL og DINFIL til MINFIL." - -#: src/diff3.c:442 -msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." -msgstr "-E --show-overlap Udls uflettede ndringer, konflikter i paranteser" - -#: src/diff3.c:443 -msgid "-A --show-all Output all changes, bracketing conflicts." -msgstr "-A --show-all Udls alle ndringer, konflikter i paranteser." - -#: src/diff3.c:444 -msgid "-x --overlap-only Output overlapping changes." -msgstr "-x --overlap-only Vis kun overlappende ndringer." - -#: src/diff3.c:445 -msgid "-X Output overlapping changes, bracketing them." -msgstr "-X Udls overlappende ndringer, i paranteser." - -#: src/diff3.c:446 -msgid "-3 --easy-only Output unmerged nonoverlapping changes." -msgstr "-3 --easy-only Udls ikke-flettede, ikke-overlappende ndringer." - -#: src/diff3.c:448 -msgid "-m --merge Output merged file instead of ed script (default -A)." -msgstr "-m --merge Udls flettet fil i stedet for ed skript (standard -A)." - -#: src/diff3.c:449 -msgid "-L LABEL --label=LABEL Use LABEL instead of file name." -msgstr "-L MRKE --label=MRKE Brug MRKE i stedet for filnavn." - -#: src/diff3.c:450 -msgid "-i Append `w' and `q' commands to ed scripts." -msgstr "-i Tilfj 'w' og 'q'-kommandoer til ed skripter." - -#: src/diff3.c:453 src/sdiff.c:202 -msgid "--diff-program=PROGRAM Use PROGRAM to compare files." -msgstr "--diff-program=PROGRAM Brug PROGRAM til at sammenligne filerne." - -#: src/diff3.c:465 -#, c-format -msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" -msgstr "Brug: %s [TILVALG]... MINFIL GAMMELFIL DINFIL\n" - -#: src/diff3.c:467 -msgid "Compare three files line by line." -msgstr "Sammenlign tre filer linje for linje." - -#: src/diff3.c:673 -msgid "internal error: screwup in format of diff blocks" -msgstr "intern fejl: rod i formatet p diff blokke" - -#: src/diff3.c:971 -#, c-format -msgid "%s: diff failed: " -msgstr "%s: diff fejlede: " - -#: src/diff3.c:993 -msgid "internal error: invalid diff type in process_diff" -msgstr "intern fejl: ugyldig diff type i process_diff" - -#: src/diff3.c:1018 -msgid "invalid diff format; invalid change separator" -msgstr "ugyldigt diff format; ugyldig ndrings-separator" - -#: src/diff3.c:1242 -msgid "invalid diff format; incomplete last line" -msgstr "ugyldigt diff format; uafsluttet sidste linje" - -#: src/diff3.c:1265 src/sdiff.c:273 -#, c-format -msgid "subsidiary program `%s' not executable" -msgstr "hjlpeprogram '%s' er ikke eksekverbart" - -#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 -#, c-format -msgid "subsidiary program `%s' not found" -msgstr "hjlpeprogram '%s' blev ikke fundet" - -#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 -#, c-format -msgid "subsidiary program `%s' failed" -msgstr "hjlpeprogram '%s' fejlede" - -#: src/diff3.c:1294 -msgid "invalid diff format; incorrect leading line chars" -msgstr "ugyldigt diff format; forkerte linje-begyndelses-tegn" - -#: src/diff3.c:1370 -msgid "internal error: invalid diff type passed to output" -msgstr "intern fejl: ugyldig diff type sendt til uddata" - -#: src/diff3.c:1647 src/diff3.c:1704 -msgid "input file shrank" -msgstr "ind-fil formindskedes" - -#: src/dir.c:162 -#, c-format -msgid "cannot compare file names `%s' and `%s'" -msgstr "kan ikke sammenligne filnavnene '%s' og '%s'" - -#: src/sdiff.c:35 -msgid "Written by Thomas Lord." -msgstr "Skrevet af Thomas Lord." - -#: src/sdiff.c:183 -msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." -msgstr "-o FIL --output=FIL Arbejd interaktivt, send uddata til FIL." - -#: src/sdiff.c:185 -msgid "-i --ignore-case Consider upper- and lower-case to be the same." -msgstr "-e --ignore-case Anse store og sm bogstaver for at vre ens." - -#: src/sdiff.c:188 -msgid "-W --ignore-all-space Ignore all white space." -msgstr "-W --ignore-all-space Ignorer alle mellemrumskarakterer." - -#: src/sdiff.c:194 -msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." -msgstr "" -"-w ANTAL --width=ANTAL Udls hjst ANTAL (standard 130) sjler per linje." - -#: src/sdiff.c:195 -msgid "-l --left-column Output only the left column of common lines." -msgstr "-l --left-column Vis kun venstre kolonne af identiske linjer." - -#: src/sdiff.c:196 -msgid "-s --suppress-common-lines Do not output common lines." -msgstr "-s --suppress-common-lines Udls ingen identiske linjer." - -#: src/sdiff.c:201 -msgid "" -"-H --speed-large-files Assume large files and many scattered small changes." -msgstr "" -"-H --speed-large-files Antag store filer og mange spredte, sm ndringer." - -#: src/sdiff.c:214 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 FILE2\n" -msgstr "Brug: %s [TILVALG]... FIL1 FIL2\n" - -#: src/sdiff.c:215 -msgid "Side-by-side merge of file differences." -msgstr "Ved-siden-af-hinanden-sammenfletning af filforskelle." - -#: src/sdiff.c:327 -msgid "cannot interactively merge standard input" -msgstr "kan ikke indflette standard input interaktivt" - -#: src/sdiff.c:588 -msgid "both files to be compared are directories" -msgstr "begge filer der sammenlignes er kataloger" - -#: src/sdiff.c:853 -msgid "" -"ed:\tEdit then use both versions, each decorated with a header.\n" -"eb:\tEdit then use both versions.\n" -"el:\tEdit then use the left version.\n" -"er:\tEdit then use the right version.\n" -"e:\tEdit a new version.\n" -"l:\tUse the left version.\n" -"r:\tUse the right version.\n" -"s:\tSilently include common lines.\n" -"v:\tVerbosely include common lines.\n" -"q:\tQuit.\n" -msgstr "" -"ed:\tRedigr og brug s begge udgaver, hver udstyret med et hoved.\n" -"eb:\tRedigr og brug s begge udgaver.\n" -"el:\tRedigr og brug s venstre udgave.\n" -"er:\tRedigr og brug s hjre udgave.\n" -"e:\tRedigr en ny udgave.\n" -"l:\tBrug venstre udgave.\n" -"r:\tBrug hjre udgave.\n" -"s:\tMedtag tavst flles linjer.\n" -"v:\tMedtag og vis flles linjer.\n" -"q:\tAfslut.\n" diff --git a/src/bin/diffutils/po/de.gmo b/src/bin/diffutils/po/de.gmo deleted file mode 100644 index 1c33b98773048916d464ddb1e4849e4cd6060637..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24021 zcmb`P4Uk;fRo|b%2JhI;+H3E6y^h(t@=CMXo!6Qft-bPSwYwu}B+Y8Rc4j15U$%Ot zU(d9s`}OSWZjGdk0h`zaf(;n_0R|gLFbTrJHjo5VHbrGCp^~@)A#q6I3WO4_n0yc? zRU1M!MSlNt?|a=nA6jLLF5UU}d-wa?bI&>V+|&B_EARRbk^lS}@Ykd0RnLRpilW!l z{p&l2!S9ZuJ4d4E73<&^c>V`b^o9q(W8m+AlTmcno5B0RGDw}fJ^;P}{1W&UQ0)rU z-w^oc;M=0;jk`h88;|(+Z>)ha&z}GtsCs+AKLKg~O|K0|8_^Wcr08kzCqU}G=_dG& zD7yPD@FDO7NSV8z1?m6puYgCv-v^(JqI(!abQrwo-{12yApP8<{+QRBUj-flXF>XT z^GCw7>K}-rd+!0?1uCC8-1`F{bh-DdApO7PP2f`?ZK$8OK+9+v{4MZg6y0|xNIUnP z2bt4-KMvB*eaffZx4stK2hyhK`qs-J_1^jm;Dg}*1dp?H_kw%DORUpr@CSLO{@eZ| z_+9*aD@eKT8Ux3{4}y<_qHl>QzXD|Z_tS^Qaeo_xKKK7DNV)sf&IC(BTbhTffV)AB z1A05nmoYx@?I7(vz#O6{z^eiOF-X4;{4bFC?qY1welP>y4t@?~p1b}z$T)ZXg@1lK zeMOH_MCHB#sz1i?;77p+z|Vus?ZJN)p8qq*`t5!l$olP$!9CyxNWI;k0pZo%Uk>^I z7KFF=P)FtVJOi?(d#-@&hdnw?XK>=Z`@6draJHZcu%y;nPpz8fPILN<$1AY;F5rkJBVvp(lL;nT*PL}pf;5R|W6v5jM ze+LNtAEu9pyoXsUjpyOTfa*`rn#XHF@xw0gli;J^Z-BJ*@SlOK*CUjP7Qllbb9qGb z7K+{@;BSJ|f8<*rd_AP`JPeAj8PCuv2>%T|2eK|hKMykgp??a4w48 z`C$;+yz}3IwEq}$kH)}vgYdy)KNj!{ApJe|RS-Ho_D#^SW$9b%dEilybw6++;P->j z_rRAx_~O9VK<07aFFn4C@6jxxNPIF4egqr^{{TF}5TJn;b4>Gk7F2r<{NLcoC^`tu zqYSKqQ{cY`HxNn8LG*w8Ga%(2mmHg6>#$}~9egiH`9uE_WUNn!j!%KmOXGL~I!RtV z`6{pkQdZ-9@;MONJ^3#{+ItF~jXnq_;9*dF2o1&`@%iJIz)7Be8RXr##yw0?#ui-y zPlH3C`gLBZN;w#`mQ0qy%lNujwPpbYC;C1jR@K3=BifDdM zf~<+?^z;`&-aY;2ApM?v5Tx8mjUV}c@{=I*IQdoZFBrm`!M%|BE|C7G8JqZHnz`8f z9{~q>)_l)_8uth!7oY3`n;?D6d<=vhGol}Pv)b>_VRiwekJ%4{l%EwJ+z0*^2>;HC zevETgYuScYQ2xR^Xp8(;(1&xn+E&PGUML^Gs8sFQ%r$N3i zu7Zz&9|c*<#eWKpf!_enMA0dDMf>*D)qraMojj}G{otR12cqaSbC!HNO&!UN(;5%? zr$vA0efoKjwK@F)2wl&Rr*WRCf^Pu77i9crJ_a)XGhYTB_}{?SMA5sU)hnRgyP=Wj zdiLkRSAtsCd%)iWq5s*hf$+)MKLeS^In7si31r^qJ`L^xe;s6A=l%#}+~@u;$eNuO zKeF%6zYnDR`OkuPfnNsc_x$gGw0ZtdKRtG| z;l28WJ{Nu)gvT!Y9>{uL_$K%|@LM2rz3`VH>v56q;^&L|K=|*X)*o75d=7*b7k?6@ z%*B5Q((gsB-z!KNX@jJG_0hbbw|%r%-$?p)lIZ!}q<4|tOL{*^pD&OW?3@4dH-KkJ zUnGfVzLz9k)j0H-A)O^@-Wt=JNhQ)W=`!gMsZ9Df>C+^A{*H&}Z-E~nG5+Y6Nzg;Q zB6%M@MfwEkM@jmyw$XW#Bb_4UAJ)P?>-_bXsLZ=AJ*AESNO}? zMc+n(HzaTD^8kN;EPNMVZvK3T7x1ioPV@ICNZ&{LVbaf$ev0%%q~6b$c+ejC+u`Ln zI1;{3fm-Jiq{qU$3*buleiZDGmPz8X<0O54!GriW`uimK#y&sJ-w%>1{?Y#46~3PX zXM5i3>yxBk+Vt+TJd5WRN&87BN!Ll2NWV&Ik|s$XC4E0hpVyEYr0>uJpU;!Nhx8!n zX_7u`9-eRg3Mv1L@?|gSbEG>+2S|gY zze)Nq>1Ro8(%mF|K1Di6x`*^W((6h2=P+M>&>ozdsI^y<%pE^Az37^mn-Vt4SKV?m zZI^55*ns1+dpF5{TOK?z=p1!itCp_R6Surt&dSSe+BlMzxG+0A8wz!EH|WSUm)qq! zZC4UUnaKHmxAynAbM;!9v|Kf7Hr%nvsfiKa_!C<)Mt#PiJY%`pXf#vTZu)AjoL1~x zD0e=-c>c`f(Zv%N&zH{6%}*S;c=5SP^UAy5KQ*zqI5F?sdR9x@)wtEZ%H&$>$+D}8 zE|zOux$w|(7VYAtKE zZLTiuG?tPqbU`OfsJuhoj0>e*vl<9>$W6t^9`RIC+Y>Y&cOR!|@R5;-zuPY`y=ldh zwB5?v^mMIn%@}gYmF0S;!umtqtFE1uYpm9aCa+cV6?Y_bx)Y6S>3XM+78>s2*|`Z< zYq?9%Z*a(6q7MK{U+SbVSGtl^221c!Ud~rgevwNv3v0D?V_Hw|g_DzWBW~$x8xDhl z#$U!L;_Gga(f%T%rD%7{@vl;=R+DVZa(QN{nKfSqULs%f*uB50COoLZm^J6B&@ict zIeSy9*OL`CN^`wkgO}sj?Oyg}Yw6{3y;j*KCzQRkdwF+j&{djAD;;dRvRIR;!K*8s z2FvT4DGF1RL6sXzwUth@V>1}b8^5H6vgFxLErU)wwh_nwA05VLnEh=JFO=SKgxd|S zms*`POO~4}Y3*84kjxXvlVRI@o6kTL$Hr5!?dF)h-6*#YnV577wMMO8&W79){OWUZ z1~eA7DlKOcPc=$3W_%foQS!EICvMwTVESS^gr-zMO)b^Za(30Z`J`MiuHDFL?Zj2e z?Xs(-E@U?lvMMcRjn}j0N>*+hnwy_JK0l5yIE7To9}txY&2>q$Doof?Ey>+jPu4*k zx10WHsfiSqRIF8NNu{^oA-{{XOEeDivqbG?c2&Ku zCiQjaW;<;Og7zxwt~Zv`%xc$~sS&VsXyz1CIGH5tPTxdS+sE3yLHw_0Nws#x2H)yb z`Km^0D`_)>{!A-Q%Z(&9;p`^uwU^Wzt4SKDA&F)bP*Eew?X8~X+ZAP-)-G-CG>Rk5 zv{kF*8snDZU=|IeLr$o&3oo?PnkVa%RAM-E#ZR{7+<2?S_D7@e&abl3rXl&=S}wQI z-)xZ<&7z)7tlErQ?X0#Q=K?-n&Jd+~)s^|nGo;HrUnel1#I1N=RN%fF_ z3WE)|UoB}xvG2<7k#>10 zPOhw%;Yn6>^QbGGL<>hDOo32{o~!{QS0HCWvVzoswmZ`8gi-vjihn2FeD9=?;LEG5 zRFERd%lH0v%fV7u4H{u`Q*LVf@C0^J%+6X$>W9LkB&q*eOIvM;WGsq8ZcuSXRd!@p z331B)Y4kJ#)i>Sx#{v6>&9O3 z21{oh3kG{PSx-`L%qf$aXRM}Y1ehIpQeI99T8aHPR;6+5J>}nBtn)V8sBfu}&<(3# z!)JWnl0;0QZ^9%e%(%>@RC|@}?UzBaYTZPYWQ-Atw#pi8JGs(!xh!COg$Pgvg_wM? z9c|RHXT)MsfiKmrv`D$p>>y8A$^MyIJ9a{dz4hqkbX*7)p@e|FrpIM^JYwpJp3Str z(mpT6b+I6pbk{>{>~g2xcKi2s_1JQA9p&l`a)v(;cWCTX-WZ}#y7zV)3&p#wi4?}c zIYYk$2V>61XyqUXm*Xmix0$7GK|%)tEw8#Gu6Ui4c@E@7gV)lMS~wQAqKSvRtZl?Y z+K1MZDBoyu=D{S8IG0%TYcI;$F05!E4Y=AA;38%a$Ips{QMJZFuk2MATC|ne@`ZI} zL119mjru`=qGot%Eu+oEA)B)|ODum9ot-*roJ)UaXHU)Bch9sPSiyBwa>sz^o={@{^mdJWe-|;?l;T zb#>|4K{JYEeu+-Sq@^2bPDi1hAqRPJ$iLp^*wj4|UeunlFrk+cV{;=1yjF88@FE0zs?1Z_j{-V zPm>^3XJvsiQ@E8cY~agD{pt|g#Ebr%e!ezCd{!+iWwoSQ4APbel>@!AAYnaqD2`#s zjFRO})}m#dO~O~~Etb#@7iMdAmU^@l6YiuHszZr5=Ag-@HxB!Ay63muUbp~$&kRItV>v2YeLG?d_lQX$d6Ov7J(YWHh`}aNSSs?` zt67rUN~SNjmMD1ML>>9UQY3}7U_Q)C`Z{6;)##x4){aijk2wBxA1$|3D*1d4(x|oM$R45&raNLKt;nDV%58Ivor(po z+!AL&8p1g!1szR>*BBweMZSznx8>we=w{+QE}K176zj<|m#pm23(sA6fAJnEwVasA zo+T?C4)r>QNpf*mD+=Lo;aHA*@4neucsgm|d!hPjxx?wD!bP>Wxb!9Xa~%Ri7DYJM zD2L82*YFoI*)9Fg>Ws}kmTOa7JeMWd?;TbqG_p;d`7O;LIx&oDD^U>NOPv)Hr;qa` zUP(J~r(LVJp5j}nnXNogip*jOx?2|t7**aej~0gKCF}jOba?}lySC0@9m=Dwyo)Gl zjSZ|Fb|b^X!$a;QIQr<2o94xk-q_n|Jv@3~=pB!}b783>FzlNq}TWe!cyH|XA zb0jQKuZ>8#&N8-QiyL^DKKKEpl9S+>nwfQH#^>k9XBN-0i#XIX0uD`5z^H{r4cCwn zuwLFM4V-OuV2`UTd!?o=h67YCH;ya80oUzg0L_kCQFB-vjlw~9eCCupo}?HdbvM^p zVh!9>4RgPhlm?DLB=}KQig&BZ`A}X$ajG4RHW-P<@VK`SdTQE)jP_H-9hsdwJ2`W_ z6fNfW5!#L|cHAnjuDVNz9PeTrwAI+$Q7Jl=uBFWlMDkU(Lc=9l*35Wmr%yU~NTQJo z`0ks%_GWL-oAY{e{yjZ!E<6{VYT+O=$$oxzZgFyU<|2aB1W^#W1Gg-4Ueb2dofnsk zco@BS@#3v2E$o!(&nYfH$K;2Yf#?iAWENdpWsU=>n^;*%vNrr*!)I`!%=e@|5 z*fWO3X14UcCjP|Zh_O1XWc$Q-KV4ovnWWchY=TSiZmxxL2N%rOTxvDzNjo{{n)Kyr z?OPS;z)`fY?9>Pa2fLo_E{EWNkXKVYDX+8`E?TNL5%lH;hl~9yImY$Pq!hx3Ehgp7 zz~Sc}n>WJ2DRVO9GXOiO^mxKImne7~rKQUg2^D?G%k`P`&WnP6MHUsRrGL=NjrB1% zF?&n`N}`&BqH)-F~2%2aFBW>ia!tJ<}to+at>EnZ@F(;CGPqPWq$gd2miSz`9J zEH2l+x-MRqs*v7zuU_6pjdctg)(QpU`C>~IJT1uvE=QUUS7xXy>(O>oiwb@e96Rk| zwukMyS>Z$!d<*`p?g@~W3BESgJ6&N*+D6IqtUKTPK?WjXNmz6*+KWMKDVbq%;gNy| zwK>ev)~4zXds7WR7mCOTYbA(+GPhhs`>XywYui!!ePaV}Y&OqO+fpX(*-p|)qF}rh zoKUW^uzt#6Lpq!uk{6t?C5L($Bnr+E>Dd0O0bcmaH@pi`ZZddnXjZbntBwjgPS-46 z3g)j&B(|{o)|qG$wV)Kt5oXg|dLOimTFB4@Xv=8U;j)TXOpo3I4{XHoh=XEH7oPb@ zM45139_^H^2_;u>LU0U6VBe~k`5+>hn|2#!($@P&bD^d!v3c|xNe$I!^YquRfhcoX zQ?rXFD>3_72Kkti$s_hKlhuuu9xIIu56sOj#z%B{MUnU@f^N)>4iAsU!;i+p?{FiJ zj*Se*!v}^{FrLTSR#ScD_Qxap-N=El(a}eSu~`SEh!%;leNs#wSZxeD!gV650`D7?oj$y4>3nbrf-lhYI3$&8eS z2XJZ1K#Uh5%oyg~mG-{%dbyS!l;1bQ^?GP>VKzQ+;2rNG1f?jfp>Z^dC)jw}MPu#& zciBWF;QnoHG*|0B8mL@{S3CHS?Sg#mg)~J=V7jkxd_cR>?`pYD_eE$@Uu056_kOkX zT2e=4pGz=NsNIcB!b~SJNrmz}nF$rFz1cO)7>i7z3`4T3{xx*d=NB*fjEka)`(*&VRMsrBR83scn@64i^rjqux z9rL*)J6DDSbYut=3=vJ;HYO~jsl?iN&e(2kxSyL$#UI_40{w9QZq6Z&XcaD*@nK6` z`nU;LER^4w-gs~Q5d9=wt&vlEfitO%&!Ulxd2SH5bbZL(z=F8$2+7FYjUsUAI*Nho zkvw)pu3W3=i+SBqxvmC}!ZAn_Esj409QG=btsU4$CbIadr_`w1R7xRmFA`(c5_7Pf z`s0~u@>+~p9gIH?sp4_IVQ*jy@=qcx!6R(N$hEE2TN1ZQd%FOq8>)HTa#s?#DB6o@giQbj)p^>4SGd@f!+wy3V}o<<3&utwB*Y9)g`hD@94lX^4$v zHLD~@kMiO=WLq{*|!LIa?h`(9Mo5bJgdeNu#Y6o`;tl%StAi@;xZiC#UXfkcZ_)| zTJu3s+q7mId{b+A*pqZ67r+gNfAwZYm=kU&j$ORd9tc9p4?ujkIrfRjp%C~qjjU}r zv@~I?o|&a8)qIV{AoYecj?JX&epDY_|0AwLoFfUY7_6)nWGzxuGcU>?3fnW^rXm%m zW!kq38MUvT@)2}}ozzMG32k^~1XnWTYZ`HiPB#fck3MwD&2%z}0gfjpYV~U3C}$g; z0(}uw=f+PUD&674bg8pP+wiHa=1S6l!*n5;a>Jd(M%sm!3Zy!va|H{)?KDSTMBVYM z`G@;9>yCoRa@(Y)H}i@1p_%$7ZA4L7-2IVrU8aN;rH+tRftBK(scgqeJ4a#N{uFi| zII}P&viZRssAD)*lgI4oEJgtIxwh7;wz*(0dvry5HG%1)=+<2K= zvBW(OD`kjF&rc2fa=P&(jCo4{*BOkxG<$J*4S`v84;`7`E6wLACWaS3qX}!N-&ELJ zNPTQDHJ3+p8Ao#2J1(MkIa%BtvR;CzL#bP`^o}uKJ=(CEtg@Lzn0(*Lj;bdx#8Sc` zIVb)8A=eiI=4RMG?f6;;9)}B8lIn}AxVYRygcbYS+`+vrRT(KvMTQw^dZ^s9Vw=Lm zj40cb#Edfc$r}B@04M9}Iul(FYjojg+ZQcniod5R4F%0B!E}ix_d@kX|8#?7e05SkDAtxfR$H zu0_;hbV9{SvYL9v?c4EKd$6x!@503+L948jA73xKmofGwNr-a!ry_hf9EyahIgW8@tsZ8r;CR6;3Ia$OoI|ZZpKs3%-cx&02 zIxlraQL9g<%|H~4(hx>@EbOC~*hUL}d)w0V#i!YRmOepr^r)vo3K--0LQ4tJ8(y9) zitT$N)Q~!oOr9MooebmRGG0K|-DbqbfoHhz;(QA!r3O1*y(wfZY#+geXP8$xFaZlFqeWyWIxUyN6D5pNB>tBP34dP~4&4 zQ^f#^=(imQu*-^YJ)lAC`l}j6f5@EQpuKdG@QNX9jlnZzliplj zWv}@a#i-3?s|h3eM+#l*U{qAAvM>6>@y0t^`(e7z#BXzyjm{^_)WVb2ZY!n)i^c4+85djz?X%MW_A7``H`ukd-{vb?dLUAGh6 zg8U1*M9<_!)QEG_+A5=yd;p+?op<5*qvIJ#3=_Lquy*Vyqk}K&zgaZKy>Wo&HrtW5 zkWfA-Vp%&|nYxg5ZgW`RcyQ&3C3J>8WghgA8;urtcYn#)`kVBLo_7{ecA45KiTg46f(cGGy6+YM(J=kmC z;0l)NHX1MuRzO=Z=M88r)7d7Yh(gg=cR5lK`U0JU2ZfjU!a(>PA`6e<+udp_ZFv2T z!0>T}rtP^|xMBg=x$d_O!u3qh8eJ8xC_}p3CaCc1J6K>n1HIy=Pc7&-xrNnrD7?rQ zqibY^3~x~ph|p=lZ}nR8hejU78}^4APKH(Wa;Jwr(vxRi&ZP5!Z<@T?>kmELBJ{c( zQuw~}#!PKvGi)E2dK(O8KC()1Y3-ISu+Tg6TZv)3vxYl{=y>7s;hcpWAh)~uEOl zL@w`*n_PJ??IJI{rwAm=r5go3ZTzr&Oe3V-xd?OWA^jN%nI5O1pGe_tVbOwXF*t#S z2ztcTonUO6z#EwGmoqohaB>on1Eq+nQS0{PZp7XJZu6Jxga99@CeaP~Xcw=vXqw)< zKik!Q$toPvgGYa!vs?&=yr%G~@IG@hGL8c)NO*ASB7C5yNQ)~$ZZ8Yr*OQgy_c$84 z!XiT+K7dT8MO2fyNHi(CkG`4lZ5(NdJ+Ri(P>bU#42r^(Z>J|?`+5sO?};J#)gQJ6 z7O>xf5@yh?)vh%fs15(xvw2~M;A0E?qP|q`b_Oe9VXUYf2tRQ+Vpr?EL{k~ zWR_ffgjw?24sQNB^}ea=YEkY(0(N!UN5c~%i))fFOG3ZkGIz`1%GldSl^3%rJ?Six zU&`V$4)K(07Ej4IyvfOrb8v|75LH>?o>ghc5mi|tsRpwbfo2beXQI#d4DoYks zsm(@IB_cz95wX#>k(DauBP+F|%~_UTF`8NAwFlJY8iRKH9uEdCtH>n1&$SfI$gj_e zu|wFnZ8_j%SL9Y7Ka;TH5B2F7b0hAxy=6`3#{_xDOVLCo>LDWKtZ(6Dw;yOX_;DX$ z1$HfYJdyO_^werI8r{wEV+>4Gf*%R5)2%gC2Vev&8ri5UZ~Z1Az$+49B@@iy@|^aq zbH;)lYk|XlewsGH2?NKsjmHcG_QtatIGXSug5ZXzl;I=Y!r#;_YcBq~;g=H@oOC#k zy(~pHcISbY*S+AHl+|LlaBStmMvDH;ipo}1g9 zXQve5o|`lKVm`NIZVCL~>norITo3E&2;5w%c`EANvwSfN#u((O>zbq9}Z> z_VQ*cz{i%_k+8TKzrSl87cBks`vO-(;MiXo<7fQsFR4m@{kB;t05t=%Jf}PA{~HI+Z61 z!LM0!!ew+F&D*}s7MX}plncs_ z|E;KdA~1_RHD5}atm0)W5wJ=x<&J`}_z})6i#|)y!-;JzOc-3k1h3{H8e#D*e04I# zSIIBDEqvAAKS?P}c#G6;G|8_{W1T=pe$S(G3cf|>?U^xM5P8c}m*BWfh) zWxdT>7(;>AdL2kxIt+dpF|l=cxc&k`jdp^t+l$<0C`E|td}txS)$FM-{l46O*IaM0 zVt%<-yDrCGXrsvVSIWU>bkJ3~9+u)H(zS@c>M?dVm4d;R6Nr8fP-MCjJ{Y0x$3I9wXLm&Yj?zTJwkG!szGZK?Dk4o0I2Z*t z`T}FG@AW3G4LDp+d!MuyHIkS)em{0^cy7qd_hgB01(BuN*jua, 1996 -# Martin von Lwis , 1997, 2001, 2002 -# -msgid "" -msgstr "" -"Project-Id-Version: GNU diffutils 2.7.10\n" -"POT-Creation-Date: 2002-04-05 14:10-0800\n" -"PO-Revision-Date: 2002-03-13 18:22+0100\n" -"Last-Translator: Martin von Lwis \n" -"Language-Team: German \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8-bit\n" - -#: lib/c-stack.c:188 -msgid "program error" -msgstr "Programmfehler" - -#: lib/c-stack.c:189 -msgid "stack overflow" -msgstr "Stackberlauf" - -#: lib/error.c:128 lib/error.c:156 -msgid "Unknown system error" -msgstr "Unbekannter Systemfehler." - -#: lib/freesoft.c:27 -msgid "" -"This program comes with NO WARRANTY, to the extent permitted by law.\n" -"You may redistribute copies of this program\n" -"under the terms of the GNU General Public License.\n" -"For more information about these matters, see the file named COPYING." -msgstr "" -"Dieses Programm wird ohne Gewhrleistung geliefert, soweit dies\n" -"gesetzlich zulssig ist. Sie knnen es unter den Bedingungen der GNU\n" -"General Public License weitergeben. \n" -"Details dazu enthlt die Datei COPYING." - -#: lib/getopt.c:693 -#, c-format -msgid "%s: option `%s' is ambiguous\n" -msgstr "%s: Option %s ist mehrdeutig.\n" - -#: lib/getopt.c:718 -#, c-format -msgid "%s: option `--%s' doesn't allow an argument\n" -msgstr "%s: Option --%s verlangt kein Argument.\n" - -#: lib/getopt.c:723 -#, c-format -msgid "%s: option `%c%s' doesn't allow an argument\n" -msgstr "%s: Option %c%s erlaubt kein Argument.\n" - -#: lib/getopt.c:741 lib/getopt.c:914 -#, c-format -msgid "%s: option `%s' requires an argument\n" -msgstr "%s: Option %s verlangt ein Argument.\n" - -#: lib/getopt.c:770 -#, c-format -msgid "%s: unrecognized option `--%s'\n" -msgstr "%s: Unbekannte Option --%s.\n" - -#: lib/getopt.c:774 -#, c-format -msgid "%s: unrecognized option `%c%s'\n" -msgstr "%s: Unbekannte Option %c%s.\n" - -#: lib/getopt.c:800 -#, c-format -msgid "%s: illegal option -- %c\n" -msgstr "%s: ungltige Option -- %c.\n" - -#: lib/getopt.c:803 -#, c-format -msgid "%s: invalid option -- %c\n" -msgstr "%s: ungltige Option -- %c\n" - -#: lib/getopt.c:833 lib/getopt.c:963 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "%s: Option verlangt ein Argument -- %c.\n" - -#: lib/getopt.c:880 -#, c-format -msgid "%s: option `-W %s' is ambiguous\n" -msgstr "%s: Option -W %s ist mehrdeutig.\n" - -#: lib/getopt.c:898 -#, c-format -msgid "%s: option `-W %s' doesn't allow an argument\n" -msgstr "%s: Option -W %s erlaubt kein Argument.\n" - -#: lib/regex.c:1367 -msgid "Success" -msgstr "Erfolg." - -#: lib/regex.c:1370 -msgid "No match" -msgstr "Keine bereinstimmung." - -#: lib/regex.c:1373 -msgid "Invalid regular expression" -msgstr "Ungltiger regulrer Ausdruck." - -#: lib/regex.c:1376 -msgid "Invalid collation character" -msgstr "Ungltiges Sortierzeichen." - -#: lib/regex.c:1379 -msgid "Invalid character class name" -msgstr "Ungltiger Name fr Zeichenklasse." - -#: lib/regex.c:1382 -msgid "Trailing backslash" -msgstr "Extra Backslash." - -#: lib/regex.c:1385 -msgid "Invalid back reference" -msgstr "Ungltige Rckreferenz." - -#: lib/regex.c:1388 -msgid "Unmatched [ or [^" -msgstr "ffnende [ oder [^ ohne schlieende." - -#: lib/regex.c:1391 -msgid "Unmatched ( or \\(" -msgstr "ffnende ( oder \\( ohne schlieende." - -#: lib/regex.c:1394 -msgid "Unmatched \\{" -msgstr "ffnende \\{ ohne schlieende." - -#: lib/regex.c:1397 -msgid "Invalid content of \\{\\}" -msgstr "Ungltiger Inhalt von \\{\\}." - -#: lib/regex.c:1400 -msgid "Invalid range end" -msgstr "Ungltiges Bereichsende." - -#: lib/regex.c:1403 -msgid "Memory exhausted" -msgstr "Speicher verbraucht." - -#: lib/regex.c:1406 -msgid "Invalid preceding regular expression" -msgstr "Ungliger vorhergehender regulrer Ausdruck." - -#: lib/regex.c:1409 -msgid "Premature end of regular expression" -msgstr "Vorzeitiges Ende des regulren Ausdrucks." - -#: lib/regex.c:1412 -msgid "Regular expression too big" -msgstr "Regulrer Ausdruck zu gro." - -#: lib/regex.c:1415 -msgid "Unmatched ) or \\)" -msgstr "Schlieende ) oder \\) ohne ffnende." - -#: lib/regex.c:8034 -msgid "No previous regular expression" -msgstr "Kein vorhergehender regulrer Ausdruck." - -#: lib/xmalloc.c:63 -msgid "memory exhausted" -msgstr "Speicher verbraucht." - -#: src/analyze.c:809 src/diff.c:1283 -#, c-format -msgid "Files %s and %s differ\n" -msgstr "Dateien %s und %s sind verschieden.\n" - -#: src/analyze.c:812 -#, c-format -msgid "Binary files %s and %s differ\n" -msgstr "Binrdateien %s and %s sind verschieden.\n" - -#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 -msgid "No newline at end of file" -msgstr "Kein Zeilenumbruch am Dateiende." - -#: src/cmp.c:43 -msgid "Written by Torbjorn Granlund and David MacKenzie." -msgstr "Geschrieben von Torbjorn Granlund und David MacKenzie." - -#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 -#, c-format -msgid "Try `%s --help' for more information." -msgstr "%s --help gibt Ihnen mehr Informationen." - -#: src/cmp.c:137 -#, c-format -msgid "invalid --ignore-initial value `%s'" -msgstr "ungltiger --ignore-initial-Wert %s." - -#: src/cmp.c:146 -msgid "options -l and -s are incompatible" -msgstr "Die Optionen -l und -s sind inkompatibel." - -#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 -#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 -#: src/util.c:286 src/util.c:293 -msgid "write failed" -msgstr "Schreibfehler." - -#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 -#: src/sdiff.c:179 -msgid "standard output" -msgstr "Standardausgabe" - -#: src/cmp.c:160 -msgid "-b --print-bytes Print differing bytes." -msgstr "-b --print-bytes Verschiedene Bytes ausgeben." - -#: src/cmp.c:161 -msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." -msgstr "" -"-i SKIP --ignore-initial=SKIP Die ersten SKIP Bytes der Eingabe " -"berspringen." - -#: src/cmp.c:162 -msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" -msgstr "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" - -#: src/cmp.c:163 -msgid "" -" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." -msgstr "" -" Die ersten SKIP1 Bytes von DATEI1 und die ersten SKIP2 Bytes von DATEI2\n" -" berspringen." - -#: src/cmp.c:164 -msgid "-l --verbose Output byte numbers and values of all differing bytes." -msgstr "" -"-l --verbose Bytenummern und Werte aller unterschiedlichen Bytes ausgeben." - -#: src/cmp.c:165 -msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." -msgstr "-n LIMIT --bytes=LIMIT Hchstens LIMIT Bytes vergleichen." - -#: src/cmp.c:166 -msgid "-s --quiet --silent Output nothing; yield exit status only." -msgstr "-s -quiet --silent Keine Ausgabe; nur den Exit-Status setzen." - -#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 -msgid "-v --version Output version info." -msgstr "-v -version Versionsinformation ausgeben." - -#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 -msgid "--help Output this help." -msgstr "--help Nur diese Hilfe zeigen." - -#: src/cmp.c:177 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" -msgstr "Aufruf: %s [OPTION]... DATEI1 [DATEI2 [SKIP1 [SKIP2]]]\n" - -#: src/cmp.c:179 -msgid "Compare two files byte by byte." -msgstr "Zwei Dateien Byte fr Byte vergleichen." - -#: src/cmp.c:183 -msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." -msgstr "" -"SKIP1 und SKIP2 ist die Zahl der Bytes, die in jeder Datei bersprungen " -"werden." - -#: src/cmp.c:184 -msgid "" -"SKIP values may be followed by the following multiplicative suffixes:\n" -"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" -"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." -msgstr "" -"SKIP-Werte drfen die folgenden multiplikativen Anhnge haben:\n" -"kB 1000, K 1024, MB 1.000.000, M 1.048.576,\n" -"GB 1.000.000.000, G 1.073.741.824, und so weiter fr T, P, E, Z, Y." - -#: src/cmp.c:187 -msgid "If a FILE is `-' or missing, read standard input." -msgstr "Wenn DATEI - ist oder fehlt, von der Standardeingabe lesen." - -#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 -msgid "Report bugs to ." -msgstr "Fehlerberichte bitte an ." - -#: src/cmp.c:231 -#, c-format -msgid "invalid --bytes value `%s'" -msgstr "ungltiger --bytes-Wert %s." - -#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 -#, c-format -msgid "missing operand after `%s'" -msgstr "Fehlender Operand nach %s." - -#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 -#, c-format -msgid "extra operand `%s'" -msgstr "extra Argument %s." - -#: src/cmp.c:477 -#, c-format -msgid "%s %s differ: byte %s, line %s\n" -msgstr "%s %s differieren: Byte %s, Zeile %s.\n" - -#: src/cmp.c:495 -#, c-format -msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" -msgstr "%s %s differieren: Zeichen %s, Zeile %s ist %3o %s %3o %s\n" - -#: src/cmp.c:543 -#, c-format -msgid "cmp: EOF on %s\n" -msgstr "cmp: EOF auf %s.\n" - -#: src/diff.c:41 -msgid "" -"Written by Paul Eggert, Mike Haertel, David Hayes,\n" -"Richard Stallman, and Len Tower." -msgstr "" -"Geschrieben von Paul Eggert, Mike Haertel, David Hayes,\n" -"Richard Stallman und Len Tower." - -#: src/diff.c:322 -#, c-format -msgid "invalid context length `%s'" -msgstr "Ungltige Kontextlnge %s." - -#: src/diff.c:405 -msgid "pagination not supported on this host" -msgstr "Seitenumbruch ist auf diesem System nicht untersttzt." - -#: src/diff.c:420 src/diff3.c:315 -msgid "too many file label options" -msgstr "Zu viele Datei-Label-Optionen." - -#: src/diff.c:498 -#, c-format -msgid "invalid width `%s'" -msgstr "Ungltig mit %s." - -#: src/diff.c:502 -msgid "conflicting width options" -msgstr "Widersprchliche Breitenoptionen" - -#: src/diff.c:526 -#, c-format -msgid "invalid horizon length `%s'" -msgstr "ungltige Horizontlnge '%s'." - -#: src/diff.c:629 -#, c-format -msgid "`-%ld' option is obsolete; use `-%c %ld'" -msgstr "Die Option -%ld ist veraltet; verwenden Sie -%c %ld." - -#: src/diff.c:641 -#, c-format -msgid "`-%ld' option is obsolete; omit it" -msgstr "Die Option -%ld ist veraltet; lassen Sie sie weg." - -#: src/diff.c:709 -msgid "--from-file and --to-file both specified" -msgstr "--from-file und --to-file sind beide angegeben." - -#: src/diff.c:832 -msgid "Compare files line by line." -msgstr "Vergleichen Sie Dateien Zeile fr Zeile." - -#: src/diff.c:834 -msgid "-i --ignore-case Ignore case differences in file contents." -msgstr "" -"-i --ignore-case Unterschiede der Gro/Kleinschreibung im Dateiinhalt \n" -" ignorieren." - -#: src/diff.c:835 -msgid "--ignore-file-name-case Ignore case when comparing file names." -msgstr "" -"--ignore-file-name-case Unterschiede der Gro/Kleinschreibung von " -"Dateinamen\n" -" ignorieren." - -#: src/diff.c:836 -msgid "--no-ignore-file-name-case Consider case when comparing file names." -msgstr "" -"--no-ignore-file-name-case Unterschiede der Gro/Kleinschreibung von \n" -" Dateinamen beachten." - -#: src/diff.c:837 src/sdiff.c:186 -msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." -msgstr "" -"-E --ignore-tab-expansion nderungen aufgrund von Tabausdehnungen " -"ignorieren." - -#: src/diff.c:838 src/sdiff.c:187 -msgid "-b --ignore-space-change Ignore changes in the amount of white space." -msgstr "-b --ignore-space-change Ignoriere nderungen im Leerraum." - -#: src/diff.c:839 -msgid "-w --ignore-all-space Ignore all white space." -msgstr "-w --ignore-all-space Freiraum ignorieren." - -#: src/diff.c:840 src/sdiff.c:189 -msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." -msgstr "" -"-B, --ignore-blank-lines Die nderungen bergehen, wo die Zeilen leer sind." - -#: src/diff.c:841 src/sdiff.c:190 -msgid "" -"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." -msgstr "" -"-I RE --ignore-matching-lines=RE nderungen ignorieren, deren Zeilen \n" -" auf das Muster RE passen." - -#: src/diff.c:842 src/sdiff.c:191 -msgid "--strip-trailing-cr Strip trailing carriage return on input." -msgstr "" -"--strip-trailing-cr Wagenrcklauf (CR) am Zeilenende beim Einlesen " -"entfernen." - -#: src/diff.c:844 -msgid "--binary Read and write data in binary mode." -msgstr "--binary Daten im Binrmodus lesen und schreiben." - -#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 -msgid "-a --text Treat all files as text." -msgstr "-a --text Betrachte alle Dateien als Text." - -#: src/diff.c:848 -msgid "" -"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " -"context.\n" -"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " -"context.\n" -" --label LABEL Use LABEL instead of file name.\n" -" -p --show-c-function Show which C function each change is in.\n" -" -F RE --show-function-line=RE Show the most recent line matching RE." -msgstr "" -" -c, -C ZAHL, --context[=ZAHL] ZAHL Zeilen des kopierten Kontextes " -"ausgeben\n" -" (Vorgabe: 3).\n" -" -u, -U ZAHL, --unified[=ZAHL] ZAHL Zeilen des \"unifizierten\" " -"Kontextes ausgeben\n" -" (Vorgabe: 3).\n" -" --label LABEL LABEL statt Dateiname verwenden.\n" -" -p, --show-c-function Anzeigen, in welcher C-Funktion die " -"Vernderung\n" -" vorkommt.\n" -" -F RE, --show-function-line=RE Die nchste Zeile anzeigen, auf die RE " -"zutrifft." - -#: src/diff.c:853 -msgid "-q --brief Output only whether files differ." -msgstr "-q --brief Nur ausgeben ob die Dateien verschieden sind." - -#: src/diff.c:854 -msgid "-e --ed Output an ed script." -msgstr "-e --ed Ein ed-Skript ausgeben." - -#: src/diff.c:855 -msgid "--normal Output a normal diff." -msgstr "--normal Ein normales Diff ausgeben." - -#: src/diff.c:856 -msgid "-n --rcs Output an RCS format diff." -msgstr "-n --rcs Ausgabe im Diff-Format von RCS." - -#: src/diff.c:857 -msgid "" -"-y --side-by-side Output in two columns.\n" -" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" -" --left-column Output only the left column of common lines.\n" -" --suppress-common-lines Do not output common lines." -msgstr "" -"-y -side-by-side In zwei Spalten ausgeben.\n" -" -W ZAHL --width=ZAHL Maximal ZAHL Zeichen pro Zeile ausgeben(Vorgabe: " -"130).\n" -" --left-column Nur linke Spalte gemeinsamer Zeilen ausgeben.\n" -" ---suppress-common-lines Keine gemeinsamen Zeilen ausgeben." - -#: src/diff.c:861 -msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." -msgstr "-D NAME --ifdef=NAME Datei mit #ifdef NAME in die Ausgabe mischen." - -#: src/diff.c:862 -msgid "" -"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." -msgstr "" -"--GTYPE-group-format=GFMT hnlich, GTYPE-Eingabe jedoch mit GFMT " -"formatieren." - -#: src/diff.c:863 -msgid "--line-format=LFMT Similar, but format all input lines with LFMT." -msgstr "" -"--line-format=LFMT hnlich, aber alle Eingabe-Zeilen mit LFMT formatieren." - -#: src/diff.c:864 -msgid "" -"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." -msgstr "" -"--LTYPE-line-format=LFMT hnlich, LTYPE-Eingabe jedoch mit LFMT formatieren." - -#: src/diff.c:865 -msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." -msgstr "" -" LTYPE kann old, new oder unchanged sein. GTYPE ist LTYPE oder " -"changed." - -#: src/diff.c:866 -msgid "" -" GFMT may contain:\n" -" %< lines from FILE1\n" -" %> lines from FILE2\n" -" %= lines common to FILE1 and FILE2\n" -" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" -" LETTERs are as follows for new group, lower case for old group:\n" -" F first line number\n" -" L last line number\n" -" N number of lines = L-F+1\n" -" E F-1\n" -" M L+1" -msgstr "" -" GFMT kann enthalten:\n" -" %< Zeilen von DATEI1.\n" -" %> Zeilen von DATEI2.\n" -" %= Zeilen, die sowohl zu DATEI1 als auc zu DATEI2 gehren.\n" -" %[-][BREITE][.[PRZ]]{doxX}BUCHST Ausgabe nach printf-Regeln fr " -"BUCHST.\n" -" Folgende BUCHTSTaben gelten fr neue Gruppen, Kleinschreibung fr " -"alte:\n" -" F Erste Zeilennummer.\n" -" L Letzte Zeilennummer.\n" -" N Zahl der Zeilen = L-F+1.\n" -" E F-1." - -#: src/diff.c:877 -msgid "" -" LFMT may contain:\n" -" %L contents of line\n" -" %l contents of line, excluding any trailing newline\n" -" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" -msgstr "" -" LFMT kann enthalten:\n" -" %L Inhalt der Zeile.\n" -" %l Inhalt der Zeile, ohne Newline am Ende.\n" -" %[-][BREITE][.[PRZ]]{doxX}n Zeilennummer im printf-Stil." - -#: src/diff.c:881 -msgid "" -" Either GFMT or LFMT may contain:\n" -" %% %\n" -" %c'C' the single character C\n" -" %c'\\OOO' the character with octal code OOO" -msgstr "" -" Sowohl GFMT als auch LFMT knnen folgendes enthalten:\n" -" %% %\n" -" %c'C' das einzelne Zeichen C\n" -" %c'\\000' das Zeichen mit dem Oktalcode 000" - -#: src/diff.c:886 -msgid "-l --paginate Pass the output through `pr' to paginate it." -msgstr "-l --paginate Ausgabe an pr zum Seitenumbruch bergeben." - -#: src/diff.c:887 src/sdiff.c:198 -msgid "-t --expand-tabs Expand tabs to spaces in output." -msgstr "-t -expand-tabs Tabulatoren zu Leerzeichen in der Ausgabe ausdehnen." - -#: src/diff.c:888 src/diff3.c:452 -msgid "-T --initial-tab Make tabs line up by prepending a tab." -msgstr "" -"-T --initial-tab Einrckungen durch vorangestellte Tabulatoren erzeugen." - -#: src/diff.c:890 -msgid "-r --recursive Recursively compare any subdirectories found." -msgstr "-r --recursive Rekursiv alle Unterverzeichnisse vergleichen." - -#: src/diff.c:891 -msgid "-N --new-file Treat absent files as empty." -msgstr "-N --new-file Fehlende Dateien als leer betrachten." - -#: src/diff.c:892 -msgid "--unidirectional-new-file Treat absent first files as empty." -msgstr "" -"--unidirectional-new-file Die ersten fehlenden Dateien als leer betrachten." - -#: src/diff.c:893 -msgid "-s --report-identical-files Report when two files are the same." -msgstr "-s --report-identical-files Meldung, wenn zwei Dateien gleich sind." - -#: src/diff.c:894 -msgid "-x PAT --exclude=PAT Exclude files that match PAT." -msgstr "" -"-x MUSTER --exclude=MUSTER Dateien, die auf MUSTER passen, ausschlieen." - -#: src/diff.c:895 -msgid "" -"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." -msgstr "" -"-X DATEI --exclude-from=DATEI Dateien berspringen, die auf eines der " -"Muster in DATEI passen." - -#: src/diff.c:896 -msgid "" -"-S FILE --starting-file=FILE Start with FILE when comparing directories." -msgstr "" -"-S DATEI --starting-file=DATEI Beim Verzeichnisvergleich mit DATEI " -"beginnen." - -#: src/diff.c:897 -msgid "" -"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." -msgstr "" -"--from-file=DATEI1 DATEI1 mit allen Operanden vergleichen.\n" -" DATEI1 kann ein Verzeichnis sein." - -#: src/diff.c:898 -msgid "" -"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." -msgstr "" -"--to-file=DATEI2 Alle Operanden mit DATEI2 vergleichen.\n" -" DATEI2 kann ein Verzeichnis sein." - -#: src/diff.c:900 -msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." -msgstr "" -"--horizon-lines=ZAHL Behalte ZAHL Zeilen mit gemeinsamen Pre- und Suffix." - -#: src/diff.c:901 src/sdiff.c:200 -msgid "-d --minimal Try hard to find a smaller set of changes." -msgstr "" -"-d --minimal Aufwendig nach einem kleineren Satz von nderungen suchen." - -#: src/diff.c:902 -msgid "" -"--speed-large-files Assume large files and many scattered small changes." -msgstr "" -"--speed-large-files Es werden groe Dateien und viele nderungen vermutet." - -#: src/diff.c:907 -msgid "" -"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." -msgstr "" -"DATEIEN sind 'DATEI1 DATEI2' oder 'VERZ1 VERZ2' oder \"VERZ DATEI...\" \n" -"oder \"DATEI... VERZ;" - -#: src/diff.c:908 -msgid "" -"If --from-file or --to-file is given, there are no restrictions on FILES." -msgstr "" -"Wenn --from-file oder --to-file angegeben werden, gibt es keine \n" -"Einschrnkungen fr DATEIEN." - -#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 -msgid "If a FILE is `-', read standard input." -msgstr "Wenn DATEI - ist, von der Standardeingabe lesen." - -#: src/diff.c:920 -#, c-format -msgid "Usage: %s [OPTION]... FILES\n" -msgstr "Aufruf: %s [OPTION]... DATEIEN\n" - -#: src/diff.c:949 -#, c-format -msgid "conflicting %s option value `%s'" -msgstr "Widersprchlicher Optionswert %s fr %s." - -#: src/diff.c:962 -msgid "conflicting output style options" -msgstr "Widersprchliche Optionenen fr den Ausgabestil." - -#: src/diff.c:976 -msgid "regular empty file" -msgstr "Normale leere Datei." - -#: src/diff.c:976 -msgid "regular file" -msgstr "Normale Datei." - -#: src/diff.c:978 -msgid "directory" -msgstr "Verzeichnis" - -#: src/diff.c:981 -msgid "block special file" -msgstr "Blockgert" - -#: src/diff.c:984 -msgid "character special file" -msgstr "Zeichenorientiertes Gert" - -#: src/diff.c:987 -msgid "fifo" -msgstr "fifo" - -#: src/diff.c:991 -msgid "socket" -msgstr "Socket." - -#: src/diff.c:994 -msgid "message queue" -msgstr "Nachrichtenschlange (message queue)" - -#: src/diff.c:997 -msgid "semaphore" -msgstr "Semaphore." - -#: src/diff.c:1000 -msgid "shared memory object" -msgstr "Shared-Memory-Objekt." - -# XXX was ist das? -#: src/diff.c:1003 -msgid "typed memory object" -msgstr "Typisiertes Speicherobjekt." - -#: src/diff.c:1006 -msgid "weird file" -msgstr "Seltsame Datei." - -#: src/diff.c:1070 src/diff.c:1256 -#, c-format -msgid "Only in %s: %s\n" -msgstr "Nur in %s: %s.\n" - -#: src/diff.c:1193 -msgid "cannot compare `-' to a directory" -msgstr "- kann nicht mit Verzeichnis verglichen werden." - -#: src/diff.c:1220 -msgid "-D option not supported with directories" -msgstr "Option -D nicht untersttzt bei Verzeichnissen" - -#: src/diff.c:1229 -#, c-format -msgid "Common subdirectories: %s and %s\n" -msgstr "Gemeinsame Unterverzeichnisse: %s und %s.\n" - -#: src/diff.c:1266 -#, c-format -msgid "File %s is a %s while file %s is a %s\n" -msgstr "Datei %s ist ein %s whrend Datei %s ein %s ist.\n" - -#: src/diff.c:1345 -#, c-format -msgid "Files %s and %s are identical\n" -msgstr "Dateien %s und %s sind identisch.\n" - -#: src/diff3.c:26 -msgid "Written by Randy Smith." -msgstr "Geschrieben von Randy Smith." - -#: src/diff3.c:328 -msgid "incompatible options" -msgstr "Inkompatible Optionen." - -#: src/diff3.c:368 -msgid "`-' specified for more than one input file" -msgstr "- fr mehr als eine Eingabedatei angegeben." - -#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 -#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 -msgid "read failed" -msgstr "Lesefehler." - -#: src/diff3.c:441 -msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." -msgstr "" -"-e --ed Nicht in DEINEDATEI bernommene nderungen aus ALTEDATEI in " -"MEINEDATEI abspeichern." - -#: src/diff3.c:442 -msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." -msgstr "" -"-E --show-overlap Ungemische nderungen anzeigen, Konflikte in Klammern." - -#: src/diff3.c:443 -msgid "-A --show-all Output all changes, bracketing conflicts." -msgstr "-A --show-all Alle nderungen ausgeben, Konflikte in Klammern." - -#: src/diff3.c:444 -msgid "-x --overlap-only Output overlapping changes." -msgstr "-x --overlap-only berlappende nderungen ausgeben." - -#: src/diff3.c:445 -msgid "-X Output overlapping changes, bracketing them." -msgstr "-X berlappende nderungen geklammert ausgeben." - -#: src/diff3.c:446 -msgid "-3 --easy-only Output unmerged nonoverlapping changes." -msgstr "" -"-3, --easy-only Nicht-zusammengefhrte (`unmerged') nichtberlappende " -"nderungen ausgeben." - -#: src/diff3.c:448 -msgid "-m --merge Output merged file instead of ed script (default -A)." -msgstr "" -"-m --merge Zusammengefhrte Datei anstelle von ed-Skript ausgeben (Vorgabe " -"-A)." - -#: src/diff3.c:449 -msgid "-L LABEL --label=LABEL Use LABEL instead of file name." -msgstr "-L LABEL --label=LABEL LABEL anstelle des Dateinamens verwenden." - -#: src/diff3.c:450 -msgid "-i Append `w' and `q' commands to ed scripts." -msgstr "-i An ed-Skripte w- und q-Kommandos anhngen." - -#: src/diff3.c:453 src/sdiff.c:202 -msgid "--diff-program=PROGRAM Use PROGRAM to compare files." -msgstr "" -"--diff-program=PROGRAMM PROGRAMM zum Vergleichen von Dateien verwenden." - -#: src/diff3.c:465 -#, c-format -msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" -msgstr "Benutzung: %s [OPTION]... MEINEDATEI ALTEDATEI DEINEDATEI\n" - -#: src/diff3.c:467 -msgid "Compare three files line by line." -msgstr "Drei Dateien Zeile fr Zeile vergleichen." - -#: src/diff3.c:673 -msgid "internal error: screwup in format of diff blocks" -msgstr "Interner Fehler: Format fr diff-Blcke ist durcheinander." - -#: src/diff3.c:971 -#, c-format -msgid "%s: diff failed: " -msgstr "%s: diff ist gescheitert: " - -#: src/diff3.c:993 -msgid "internal error: invalid diff type in process_diff" -msgstr "Interner Fehler: Ungltiger diff-Typ in process_diff." - -#: src/diff3.c:1018 -msgid "invalid diff format; invalid change separator" -msgstr "Ungltiges Diff-Format; ungltiger nderungstrenner." - -#: src/diff3.c:1242 -msgid "invalid diff format; incomplete last line" -msgstr "Ungltiges Diff-Format; felende letzte Zeile." - -#: src/diff3.c:1265 src/sdiff.c:273 -#, c-format -msgid "subsidiary program `%s' not executable" -msgstr "Unterprogramm %s ist nicht ausfhrbar." - -#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 -#, c-format -msgid "subsidiary program `%s' not found" -msgstr "Unterprogramm %s nicht gefunden." - -#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 -#, c-format -msgid "subsidiary program `%s' failed" -msgstr "Unterprogramm %s schlug fehl." - -#: src/diff3.c:1294 -msgid "invalid diff format; incorrect leading line chars" -msgstr "Ungltiges Diff-Format; inkorrektes Zeichen in fhrender Zeile" - -#: src/diff3.c:1370 -msgid "internal error: invalid diff type passed to output" -msgstr "Interner Fehler: Ungltiger diff-Typ an Ausgabe bergeben." - -#: src/diff3.c:1647 src/diff3.c:1704 -msgid "input file shrank" -msgstr "Eingabedatei schrumpfte." - -#: src/dir.c:162 -#, c-format -msgid "cannot compare file names `%s' and `%s'" -msgstr "Die Dateinamen %s und %s knnen nicht verglichen werden." - -#: src/sdiff.c:35 -msgid "Written by Thomas Lord." -msgstr "Geschrieben von Thomas Lord." - -#: src/sdiff.c:183 -msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." -msgstr "" -"-o DATEI --output=DATEI Interaktiv arbeiten, Ausgabe in DATEI speichern." - -#: src/sdiff.c:185 -msgid "-i --ignore-case Consider upper- and lower-case to be the same." -msgstr "" -"-i --ignore-case Nicht zwischen Gro- und Kleinschreibung unterscheiden." - -#: src/sdiff.c:188 -msgid "-W --ignore-all-space Ignore all white space." -msgstr "-W -ignore-all-space Leerraum ignorieren." - -#: src/sdiff.c:194 -msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." -msgstr "-w ZAHL --width=ZAHL Maximal ZAHL Zeichen pro Zeile (Vorgabe: 130)." - -#: src/sdiff.c:195 -msgid "-l --left-column Output only the left column of common lines." -msgstr "-l --left-column Nur linke Spalte der gemeinsamen Zeilen ausgeben." - -#: src/sdiff.c:196 -msgid "-s --suppress-common-lines Do not output common lines." -msgstr "-s --suppress-common-lines Keine gemeinsamen Zeilen ausgeben." - -#: src/sdiff.c:201 -msgid "" -"-H --speed-large-files Assume large files and many scattered small changes." -msgstr "" -"-H --speed-large-files Es werden groe Dateien und viele nderungen " -"vermutet." - -#: src/sdiff.c:214 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 FILE2\n" -msgstr "Aufruf: %s [OPTION]... DATEI1 DATEI2\n" - -# XXX Was ist das? -#: src/sdiff.c:215 -msgid "Side-by-side merge of file differences." -msgstr "" -"Nebeneinanderstehenden Zusammenbringen (side-by-side merge) der " -"Dateiunterschiede." - -#: src/sdiff.c:327 -msgid "cannot interactively merge standard input" -msgstr "Kann nicht die Standardeingabe interaktiv mischen." - -#: src/sdiff.c:588 -msgid "both files to be compared are directories" -msgstr "Beide zu vergleichenden Dateien sind Verzeichnisse." - -#: src/sdiff.c:853 -msgid "" -"ed:\tEdit then use both versions, each decorated with a header.\n" -"eb:\tEdit then use both versions.\n" -"el:\tEdit then use the left version.\n" -"er:\tEdit then use the right version.\n" -"e:\tEdit a new version.\n" -"l:\tUse the left version.\n" -"r:\tUse the right version.\n" -"s:\tSilently include common lines.\n" -"v:\tVerbosely include common lines.\n" -"q:\tQuit.\n" -msgstr "" -"ed:\\tEdieren, dann beide Versionen benutzen, jede mit einem Kopf " -"dekoriert.\n" -"eb:\\tEdieren, dann beide Versionen benutzen.\n" -"el:\\tEdieren, dann linke Version benutzen.\n" -"er:\\tEdieren, dann rechte Version benutzen.\n" -"e:\\t Neue Version edieren.\n" -"l:\\tLinke Version benutzen.\n" -"r:\\tRechte Version benutzen.\n" -"s:\\tSchweigend gemeinsame Zeilen bernehmen.\n" -"v:\\tLauthals gemeinsame Zeilen bernehmen.\n" -"q:\\tBeenden.\n" - -#~ msgid "--inhibit-hunk-merge Do not merge hunks." -#~ msgstr "--inhibit-hunk-merge Blcke (hunks) nicht vermischen." - -#~ msgid "" -#~ "SKIP values may be followed by the following multiplicative suffixes:\n" -#~ msgstr "nicht gefunden" - -#~ msgid "kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" -#~ msgstr "kB 1000, K 1024, MB 1.000.000, M 1.048.576,\n" - -#~ msgid "GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y.\n" -#~ msgstr "" -#~ "GB 1.000.000.000, G 1.073.741.824, und so weiter fr T, P, E, Z, Y.\n" - -#~ msgid "Report bugs to .\n" -#~ msgstr "Fehlerberichte bitte an .\n" - -#~ msgid "context length specified twice" -#~ msgstr "Kontextlnge zweimal angegeben." - -#~ msgid "multiple `--from-file' options" -#~ msgstr "mehrere Optionen '--from-file'." - -#~ msgid "multiple `--to-file' options" -#~ msgstr "mehrere Optionen '--to-file'." - -#~ msgid "regular empty executable file" -#~ msgstr "Normale leere ausfhrbare Datei." - -#~ msgid "regular executable file" -#~ msgstr "Normale ausfhrbare Datei." - -#~ msgid "If a FILE is `-', read standard input.\n" -#~ msgstr "Wenn DATEI - ist, von der Standardeingabe lesen.\n" diff --git a/src/bin/diffutils/po/diffutils.pot b/src/bin/diffutils/po/diffutils.pot deleted file mode 100644 index 0325b1e192..0000000000 --- a/src/bin/diffutils/po/diffutils.pot +++ /dev/null @@ -1,841 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR Free Software Foundation, Inc. -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2002-04-05 14:10-0800\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: lib/c-stack.c:188 -msgid "program error" -msgstr "" - -#: lib/c-stack.c:189 -msgid "stack overflow" -msgstr "" - -#: lib/error.c:128 lib/error.c:156 -msgid "Unknown system error" -msgstr "" - -#: lib/freesoft.c:27 -msgid "" -"This program comes with NO WARRANTY, to the extent permitted by law.\n" -"You may redistribute copies of this program\n" -"under the terms of the GNU General Public License.\n" -"For more information about these matters, see the file named COPYING." -msgstr "" - -#: lib/getopt.c:693 -#, c-format -msgid "%s: option `%s' is ambiguous\n" -msgstr "" - -#: lib/getopt.c:718 -#, c-format -msgid "%s: option `--%s' doesn't allow an argument\n" -msgstr "" - -#: lib/getopt.c:723 -#, c-format -msgid "%s: option `%c%s' doesn't allow an argument\n" -msgstr "" - -#: lib/getopt.c:741 lib/getopt.c:914 -#, c-format -msgid "%s: option `%s' requires an argument\n" -msgstr "" - -#: lib/getopt.c:770 -#, c-format -msgid "%s: unrecognized option `--%s'\n" -msgstr "" - -#: lib/getopt.c:774 -#, c-format -msgid "%s: unrecognized option `%c%s'\n" -msgstr "" - -#: lib/getopt.c:800 -#, c-format -msgid "%s: illegal option -- %c\n" -msgstr "" - -#: lib/getopt.c:803 -#, c-format -msgid "%s: invalid option -- %c\n" -msgstr "" - -#: lib/getopt.c:833 lib/getopt.c:963 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "" - -#: lib/getopt.c:880 -#, c-format -msgid "%s: option `-W %s' is ambiguous\n" -msgstr "" - -#: lib/getopt.c:898 -#, c-format -msgid "%s: option `-W %s' doesn't allow an argument\n" -msgstr "" - -#: lib/regex.c:1367 -msgid "Success" -msgstr "" - -#: lib/regex.c:1370 -msgid "No match" -msgstr "" - -#: lib/regex.c:1373 -msgid "Invalid regular expression" -msgstr "" - -#: lib/regex.c:1376 -msgid "Invalid collation character" -msgstr "" - -#: lib/regex.c:1379 -msgid "Invalid character class name" -msgstr "" - -#: lib/regex.c:1382 -msgid "Trailing backslash" -msgstr "" - -#: lib/regex.c:1385 -msgid "Invalid back reference" -msgstr "" - -#: lib/regex.c:1388 -msgid "Unmatched [ or [^" -msgstr "" - -#: lib/regex.c:1391 -msgid "Unmatched ( or \\(" -msgstr "" - -#: lib/regex.c:1394 -msgid "Unmatched \\{" -msgstr "" - -#: lib/regex.c:1397 -msgid "Invalid content of \\{\\}" -msgstr "" - -#: lib/regex.c:1400 -msgid "Invalid range end" -msgstr "" - -#: lib/regex.c:1403 -msgid "Memory exhausted" -msgstr "" - -#: lib/regex.c:1406 -msgid "Invalid preceding regular expression" -msgstr "" - -#: lib/regex.c:1409 -msgid "Premature end of regular expression" -msgstr "" - -#: lib/regex.c:1412 -msgid "Regular expression too big" -msgstr "" - -#: lib/regex.c:1415 -msgid "Unmatched ) or \\)" -msgstr "" - -#: lib/regex.c:8034 -msgid "No previous regular expression" -msgstr "" - -#: lib/xmalloc.c:63 -msgid "memory exhausted" -msgstr "" - -#: src/analyze.c:809 src/diff.c:1283 -#, c-format -msgid "Files %s and %s differ\n" -msgstr "" - -#: src/analyze.c:812 -#, c-format -msgid "Binary files %s and %s differ\n" -msgstr "" - -#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 -msgid "No newline at end of file" -msgstr "" - -#: src/cmp.c:43 -msgid "Written by Torbjorn Granlund and David MacKenzie." -msgstr "" - -#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 -#, c-format -msgid "Try `%s --help' for more information." -msgstr "" - -#: src/cmp.c:137 -#, c-format -msgid "invalid --ignore-initial value `%s'" -msgstr "" - -#: src/cmp.c:146 -msgid "options -l and -s are incompatible" -msgstr "" - -#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 -#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 -#: src/util.c:286 src/util.c:293 -msgid "write failed" -msgstr "" - -#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 -#: src/sdiff.c:179 -msgid "standard output" -msgstr "" - -#: src/cmp.c:160 -msgid "-b --print-bytes Print differing bytes." -msgstr "" - -#: src/cmp.c:161 -msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." -msgstr "" - -#: src/cmp.c:162 -msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" -msgstr "" - -#: src/cmp.c:163 -msgid "" -" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." -msgstr "" - -#: src/cmp.c:164 -msgid "-l --verbose Output byte numbers and values of all differing bytes." -msgstr "" - -#: src/cmp.c:165 -msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." -msgstr "" - -#: src/cmp.c:166 -msgid "-s --quiet --silent Output nothing; yield exit status only." -msgstr "" - -#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 -msgid "-v --version Output version info." -msgstr "" - -#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 -msgid "--help Output this help." -msgstr "" - -#: src/cmp.c:177 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" -msgstr "" - -#: src/cmp.c:179 -msgid "Compare two files byte by byte." -msgstr "" - -#: src/cmp.c:183 -msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." -msgstr "" - -#: src/cmp.c:184 -msgid "" -"SKIP values may be followed by the following multiplicative suffixes:\n" -"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" -"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." -msgstr "" - -#: src/cmp.c:187 -msgid "If a FILE is `-' or missing, read standard input." -msgstr "" - -#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 -msgid "Report bugs to ." -msgstr "" - -#: src/cmp.c:231 -#, c-format -msgid "invalid --bytes value `%s'" -msgstr "" - -#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 -#, c-format -msgid "missing operand after `%s'" -msgstr "" - -#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 -#, c-format -msgid "extra operand `%s'" -msgstr "" - -#: src/cmp.c:477 -#, c-format -msgid "%s %s differ: byte %s, line %s\n" -msgstr "" - -#: src/cmp.c:495 -#, c-format -msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" -msgstr "" - -#: src/cmp.c:543 -#, c-format -msgid "cmp: EOF on %s\n" -msgstr "" - -#: src/diff.c:41 -msgid "" -"Written by Paul Eggert, Mike Haertel, David Hayes,\n" -"Richard Stallman, and Len Tower." -msgstr "" - -#: src/diff.c:322 -#, c-format -msgid "invalid context length `%s'" -msgstr "" - -#: src/diff.c:405 -msgid "pagination not supported on this host" -msgstr "" - -#: src/diff.c:420 src/diff3.c:315 -msgid "too many file label options" -msgstr "" - -#: src/diff.c:498 -#, c-format -msgid "invalid width `%s'" -msgstr "" - -#: src/diff.c:502 -msgid "conflicting width options" -msgstr "" - -#: src/diff.c:526 -#, c-format -msgid "invalid horizon length `%s'" -msgstr "" - -#: src/diff.c:629 -#, c-format -msgid "`-%ld' option is obsolete; use `-%c %ld'" -msgstr "" - -#: src/diff.c:641 -#, c-format -msgid "`-%ld' option is obsolete; omit it" -msgstr "" - -#: src/diff.c:709 -msgid "--from-file and --to-file both specified" -msgstr "" - -#: src/diff.c:832 -msgid "Compare files line by line." -msgstr "" - -#: src/diff.c:834 -msgid "-i --ignore-case Ignore case differences in file contents." -msgstr "" - -#: src/diff.c:835 -msgid "--ignore-file-name-case Ignore case when comparing file names." -msgstr "" - -#: src/diff.c:836 -msgid "--no-ignore-file-name-case Consider case when comparing file names." -msgstr "" - -#: src/diff.c:837 src/sdiff.c:186 -msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." -msgstr "" - -#: src/diff.c:838 src/sdiff.c:187 -msgid "-b --ignore-space-change Ignore changes in the amount of white space." -msgstr "" - -#: src/diff.c:839 -msgid "-w --ignore-all-space Ignore all white space." -msgstr "" - -#: src/diff.c:840 src/sdiff.c:189 -msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." -msgstr "" - -#: src/diff.c:841 src/sdiff.c:190 -msgid "" -"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." -msgstr "" - -#: src/diff.c:842 src/sdiff.c:191 -msgid "--strip-trailing-cr Strip trailing carriage return on input." -msgstr "" - -#: src/diff.c:844 -msgid "--binary Read and write data in binary mode." -msgstr "" - -#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 -msgid "-a --text Treat all files as text." -msgstr "" - -#: src/diff.c:848 -msgid "" -"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " -"context.\n" -"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " -"context.\n" -" --label LABEL Use LABEL instead of file name.\n" -" -p --show-c-function Show which C function each change is in.\n" -" -F RE --show-function-line=RE Show the most recent line matching RE." -msgstr "" - -#: src/diff.c:853 -msgid "-q --brief Output only whether files differ." -msgstr "" - -#: src/diff.c:854 -msgid "-e --ed Output an ed script." -msgstr "" - -#: src/diff.c:855 -msgid "--normal Output a normal diff." -msgstr "" - -#: src/diff.c:856 -msgid "-n --rcs Output an RCS format diff." -msgstr "" - -#: src/diff.c:857 -msgid "" -"-y --side-by-side Output in two columns.\n" -" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" -" --left-column Output only the left column of common lines.\n" -" --suppress-common-lines Do not output common lines." -msgstr "" - -#: src/diff.c:861 -msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." -msgstr "" - -#: src/diff.c:862 -msgid "" -"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." -msgstr "" - -#: src/diff.c:863 -msgid "--line-format=LFMT Similar, but format all input lines with LFMT." -msgstr "" - -#: src/diff.c:864 -msgid "" -"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." -msgstr "" - -#: src/diff.c:865 -msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." -msgstr "" - -#: src/diff.c:866 -msgid "" -" GFMT may contain:\n" -" %< lines from FILE1\n" -" %> lines from FILE2\n" -" %= lines common to FILE1 and FILE2\n" -" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" -" LETTERs are as follows for new group, lower case for old group:\n" -" F first line number\n" -" L last line number\n" -" N number of lines = L-F+1\n" -" E F-1\n" -" M L+1" -msgstr "" - -#: src/diff.c:877 -msgid "" -" LFMT may contain:\n" -" %L contents of line\n" -" %l contents of line, excluding any trailing newline\n" -" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" -msgstr "" - -#: src/diff.c:881 -msgid "" -" Either GFMT or LFMT may contain:\n" -" %% %\n" -" %c'C' the single character C\n" -" %c'\\OOO' the character with octal code OOO" -msgstr "" - -#: src/diff.c:886 -msgid "-l --paginate Pass the output through `pr' to paginate it." -msgstr "" - -#: src/diff.c:887 src/sdiff.c:198 -msgid "-t --expand-tabs Expand tabs to spaces in output." -msgstr "" - -#: src/diff.c:888 src/diff3.c:452 -msgid "-T --initial-tab Make tabs line up by prepending a tab." -msgstr "" - -#: src/diff.c:890 -msgid "-r --recursive Recursively compare any subdirectories found." -msgstr "" - -#: src/diff.c:891 -msgid "-N --new-file Treat absent files as empty." -msgstr "" - -#: src/diff.c:892 -msgid "--unidirectional-new-file Treat absent first files as empty." -msgstr "" - -#: src/diff.c:893 -msgid "-s --report-identical-files Report when two files are the same." -msgstr "" - -#: src/diff.c:894 -msgid "-x PAT --exclude=PAT Exclude files that match PAT." -msgstr "" - -#: src/diff.c:895 -msgid "" -"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." -msgstr "" - -#: src/diff.c:896 -msgid "" -"-S FILE --starting-file=FILE Start with FILE when comparing directories." -msgstr "" - -#: src/diff.c:897 -msgid "" -"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." -msgstr "" - -#: src/diff.c:898 -msgid "" -"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." -msgstr "" - -#: src/diff.c:900 -msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." -msgstr "" - -#: src/diff.c:901 src/sdiff.c:200 -msgid "-d --minimal Try hard to find a smaller set of changes." -msgstr "" - -#: src/diff.c:902 -msgid "" -"--speed-large-files Assume large files and many scattered small changes." -msgstr "" - -#: src/diff.c:907 -msgid "" -"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." -msgstr "" - -#: src/diff.c:908 -msgid "" -"If --from-file or --to-file is given, there are no restrictions on FILES." -msgstr "" - -#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 -msgid "If a FILE is `-', read standard input." -msgstr "" - -#: src/diff.c:920 -#, c-format -msgid "Usage: %s [OPTION]... FILES\n" -msgstr "" - -#: src/diff.c:949 -#, c-format -msgid "conflicting %s option value `%s'" -msgstr "" - -#: src/diff.c:962 -msgid "conflicting output style options" -msgstr "" - -#: src/diff.c:976 -msgid "regular empty file" -msgstr "" - -#: src/diff.c:976 -msgid "regular file" -msgstr "" - -#: src/diff.c:978 -msgid "directory" -msgstr "" - -#: src/diff.c:981 -msgid "block special file" -msgstr "" - -#: src/diff.c:984 -msgid "character special file" -msgstr "" - -#: src/diff.c:987 -msgid "fifo" -msgstr "" - -#: src/diff.c:991 -msgid "socket" -msgstr "" - -#: src/diff.c:994 -msgid "message queue" -msgstr "" - -#: src/diff.c:997 -msgid "semaphore" -msgstr "" - -#: src/diff.c:1000 -msgid "shared memory object" -msgstr "" - -#: src/diff.c:1003 -msgid "typed memory object" -msgstr "" - -#: src/diff.c:1006 -msgid "weird file" -msgstr "" - -#: src/diff.c:1070 src/diff.c:1256 -#, c-format -msgid "Only in %s: %s\n" -msgstr "" - -#: src/diff.c:1193 -msgid "cannot compare `-' to a directory" -msgstr "" - -#: src/diff.c:1220 -msgid "-D option not supported with directories" -msgstr "" - -#: src/diff.c:1229 -#, c-format -msgid "Common subdirectories: %s and %s\n" -msgstr "" - -#: src/diff.c:1266 -#, c-format -msgid "File %s is a %s while file %s is a %s\n" -msgstr "" - -#: src/diff.c:1345 -#, c-format -msgid "Files %s and %s are identical\n" -msgstr "" - -#: src/diff3.c:26 -msgid "Written by Randy Smith." -msgstr "" - -#: src/diff3.c:328 -msgid "incompatible options" -msgstr "" - -#: src/diff3.c:368 -msgid "`-' specified for more than one input file" -msgstr "" - -#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 -#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 -msgid "read failed" -msgstr "" - -#: src/diff3.c:441 -msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." -msgstr "" - -#: src/diff3.c:442 -msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." -msgstr "" - -#: src/diff3.c:443 -msgid "-A --show-all Output all changes, bracketing conflicts." -msgstr "" - -#: src/diff3.c:444 -msgid "-x --overlap-only Output overlapping changes." -msgstr "" - -#: src/diff3.c:445 -msgid "-X Output overlapping changes, bracketing them." -msgstr "" - -#: src/diff3.c:446 -msgid "-3 --easy-only Output unmerged nonoverlapping changes." -msgstr "" - -#: src/diff3.c:448 -msgid "-m --merge Output merged file instead of ed script (default -A)." -msgstr "" - -#: src/diff3.c:449 -msgid "-L LABEL --label=LABEL Use LABEL instead of file name." -msgstr "" - -#: src/diff3.c:450 -msgid "-i Append `w' and `q' commands to ed scripts." -msgstr "" - -#: src/diff3.c:453 src/sdiff.c:202 -msgid "--diff-program=PROGRAM Use PROGRAM to compare files." -msgstr "" - -#: src/diff3.c:465 -#, c-format -msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" -msgstr "" - -#: src/diff3.c:467 -msgid "Compare three files line by line." -msgstr "" - -#: src/diff3.c:673 -msgid "internal error: screwup in format of diff blocks" -msgstr "" - -#: src/diff3.c:971 -#, c-format -msgid "%s: diff failed: " -msgstr "" - -#: src/diff3.c:993 -msgid "internal error: invalid diff type in process_diff" -msgstr "" - -#: src/diff3.c:1018 -msgid "invalid diff format; invalid change separator" -msgstr "" - -#: src/diff3.c:1242 -msgid "invalid diff format; incomplete last line" -msgstr "" - -#: src/diff3.c:1265 src/sdiff.c:273 -#, c-format -msgid "subsidiary program `%s' not executable" -msgstr "" - -#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 -#, c-format -msgid "subsidiary program `%s' not found" -msgstr "" - -#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 -#, c-format -msgid "subsidiary program `%s' failed" -msgstr "" - -#: src/diff3.c:1294 -msgid "invalid diff format; incorrect leading line chars" -msgstr "" - -#: src/diff3.c:1370 -msgid "internal error: invalid diff type passed to output" -msgstr "" - -#: src/diff3.c:1647 src/diff3.c:1704 -msgid "input file shrank" -msgstr "" - -#: src/dir.c:162 -#, c-format -msgid "cannot compare file names `%s' and `%s'" -msgstr "" - -#: src/sdiff.c:35 -msgid "Written by Thomas Lord." -msgstr "" - -#: src/sdiff.c:183 -msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." -msgstr "" - -#: src/sdiff.c:185 -msgid "-i --ignore-case Consider upper- and lower-case to be the same." -msgstr "" - -#: src/sdiff.c:188 -msgid "-W --ignore-all-space Ignore all white space." -msgstr "" - -#: src/sdiff.c:194 -msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." -msgstr "" - -#: src/sdiff.c:195 -msgid "-l --left-column Output only the left column of common lines." -msgstr "" - -#: src/sdiff.c:196 -msgid "-s --suppress-common-lines Do not output common lines." -msgstr "" - -#: src/sdiff.c:201 -msgid "" -"-H --speed-large-files Assume large files and many scattered small changes." -msgstr "" - -#: src/sdiff.c:214 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 FILE2\n" -msgstr "" - -#: src/sdiff.c:215 -msgid "Side-by-side merge of file differences." -msgstr "" - -#: src/sdiff.c:327 -msgid "cannot interactively merge standard input" -msgstr "" - -#: src/sdiff.c:588 -msgid "both files to be compared are directories" -msgstr "" - -#: src/sdiff.c:853 -msgid "" -"ed:\tEdit then use both versions, each decorated with a header.\n" -"eb:\tEdit then use both versions.\n" -"el:\tEdit then use the left version.\n" -"er:\tEdit then use the right version.\n" -"e:\tEdit a new version.\n" -"l:\tUse the left version.\n" -"r:\tUse the right version.\n" -"s:\tSilently include common lines.\n" -"v:\tVerbosely include common lines.\n" -"q:\tQuit.\n" -msgstr "" diff --git a/src/bin/diffutils/po/en@boldquot.header b/src/bin/diffutils/po/en@boldquot.header deleted file mode 100644 index fedb6a06d1..0000000000 --- a/src/bin/diffutils/po/en@boldquot.header +++ /dev/null @@ -1,25 +0,0 @@ -# All this catalog "translates" are quotation characters. -# The msgids must be ASCII and therefore cannot contain real quotation -# characters, only substitutes like grave accent (0x60), apostrophe (0x27) -# and double quote (0x22). These substitutes look strange; see -# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html -# -# This catalog translates grave accent (0x60) and apostrophe (0x27) to -# left single quotation mark (U+2018) and right single quotation mark (U+2019). -# It also translates pairs of apostrophe (0x27) to -# left single quotation mark (U+2018) and right single quotation mark (U+2019) -# and pairs of quotation mark (0x22) to -# left double quotation mark (U+201C) and right double quotation mark (U+201D). -# -# When output to an UTF-8 terminal, the quotation characters appear perfectly. -# When output to an ISO-8859-1 terminal, the single quotation marks are -# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to -# grave/acute accent (by libiconv), and the double quotation marks are -# transliterated to 0x22. -# When output to an ASCII terminal, the single quotation marks are -# transliterated to apostrophes, and the double quotation marks are -# transliterated to 0x22. -# -# This catalog furthermore displays the text between the quotation marks in -# bold face, assuming the VT100/XTerm escape sequences. -# diff --git a/src/bin/diffutils/po/en@quot.header b/src/bin/diffutils/po/en@quot.header deleted file mode 100644 index a9647fc35c..0000000000 --- a/src/bin/diffutils/po/en@quot.header +++ /dev/null @@ -1,22 +0,0 @@ -# All this catalog "translates" are quotation characters. -# The msgids must be ASCII and therefore cannot contain real quotation -# characters, only substitutes like grave accent (0x60), apostrophe (0x27) -# and double quote (0x22). These substitutes look strange; see -# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html -# -# This catalog translates grave accent (0x60) and apostrophe (0x27) to -# left single quotation mark (U+2018) and right single quotation mark (U+2019). -# It also translates pairs of apostrophe (0x27) to -# left single quotation mark (U+2018) and right single quotation mark (U+2019) -# and pairs of quotation mark (0x22) to -# left double quotation mark (U+201C) and right double quotation mark (U+201D). -# -# When output to an UTF-8 terminal, the quotation characters appear perfectly. -# When output to an ISO-8859-1 terminal, the single quotation marks are -# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to -# grave/acute accent (by libiconv), and the double quotation marks are -# transliterated to 0x22. -# When output to an ASCII terminal, the single quotation marks are -# transliterated to apostrophes, and the double quotation marks are -# transliterated to 0x22. -# diff --git a/src/bin/diffutils/po/en_GB.gmo b/src/bin/diffutils/po/en_GB.gmo deleted file mode 100644 index 00aeb8173104e469b69f2d39d627545b0fab6a2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 617 zcmaKp%}yIJ6orQXn^|^;R26SVsEa!|QxMSrQK}GCBS9OLq$?JfnLEa4u!HR>Kd->L zPr;+`4m?ZmBtZ$Ns-;iI@;N$|um7xlcnM}}jpQS7K&%sIM6)Ku2601d5|49z3WAj` z?VpKHLC^|k=dI6k%}7^>Rif!`5kU~Sl&PvhDJo_rUKz~*Sd@oTr`8s8BeiPYPlS?4kW6774w`aLy;XI72(5@2R*pv-LU9o|bXgxc? zsrLM>(yrEVZmzrGvCy&>5@CemI%NYbE9EXJt9yRlgK=pQORG>9E;d$n!;|b}uy|TK z=3(DxkD4yOpU^8j-udlGC6wN0`K7Q9{o(i&zMl58Y!PkxOSCZ1xha&EDeGJ)|8Bf) UY5Wl7@29_P|Lb>_{rT_w1^3ITH~;_u diff --git a/src/bin/diffutils/po/en_GB.po b/src/bin/diffutils/po/en_GB.po deleted file mode 100644 index 57d715ba07..0000000000 --- a/src/bin/diffutils/po/en_GB.po +++ /dev/null @@ -1,843 +0,0 @@ -# British English messages for GNU diffutils -# Copyright (C) 1998, 2001, 2002 Free Software Foundation, Inc. -# Paul Eggert , 1998 -# -msgid "" -msgstr "" -"Project-Id-Version: GNU diffutils 2.7.8\n" -"POT-Creation-Date: 2002-04-05 14:10-0800\n" -"PO-Revision-Date: 2002-02-27 23:01-0800\n" -"Last-Translator: Paul Eggert \n" -"Language-Team: English \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=US-ASCII\n" -"Content-Transfer-Encoding: 8bit\n" - -#: lib/c-stack.c:188 -msgid "program error" -msgstr "" - -#: lib/c-stack.c:189 -msgid "stack overflow" -msgstr "" - -#: lib/error.c:128 lib/error.c:156 -msgid "Unknown system error" -msgstr "" - -#: lib/freesoft.c:27 -msgid "" -"This program comes with NO WARRANTY, to the extent permitted by law.\n" -"You may redistribute copies of this program\n" -"under the terms of the GNU General Public License.\n" -"For more information about these matters, see the file named COPYING." -msgstr "" - -#: lib/getopt.c:693 -#, c-format -msgid "%s: option `%s' is ambiguous\n" -msgstr "" - -#: lib/getopt.c:718 -#, c-format -msgid "%s: option `--%s' doesn't allow an argument\n" -msgstr "" - -#: lib/getopt.c:723 -#, c-format -msgid "%s: option `%c%s' doesn't allow an argument\n" -msgstr "" - -#: lib/getopt.c:741 lib/getopt.c:914 -#, c-format -msgid "%s: option `%s' requires an argument\n" -msgstr "" - -# `Thou whoreson zed! Thou unnecessary letter!' -- Kent in _King Lear_ -#: lib/getopt.c:770 -#, c-format -msgid "%s: unrecognized option `--%s'\n" -msgstr "%s: unrecognised option `--%s'\n" - -#: lib/getopt.c:774 -#, c-format -msgid "%s: unrecognized option `%c%s'\n" -msgstr "%s: unrecognised option `%c%s'\n" - -# POSIX requires the word "illegal" in the POSIX locale, but the error -# is not really against the law. This is not the POSIX locale, so fix -# the wording. -#: lib/getopt.c:800 -#, c-format -msgid "%s: illegal option -- %c\n" -msgstr "%s: unrecognised option `-%c'\n" - -#: lib/getopt.c:803 -#, c-format -msgid "%s: invalid option -- %c\n" -msgstr "" - -#: lib/getopt.c:833 lib/getopt.c:963 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "" - -#: lib/getopt.c:880 -#, c-format -msgid "%s: option `-W %s' is ambiguous\n" -msgstr "" - -#: lib/getopt.c:898 -#, c-format -msgid "%s: option `-W %s' doesn't allow an argument\n" -msgstr "" - -#: lib/regex.c:1367 -msgid "Success" -msgstr "" - -#: lib/regex.c:1370 -msgid "No match" -msgstr "" - -#: lib/regex.c:1373 -msgid "Invalid regular expression" -msgstr "" - -#: lib/regex.c:1376 -msgid "Invalid collation character" -msgstr "" - -#: lib/regex.c:1379 -msgid "Invalid character class name" -msgstr "" - -#: lib/regex.c:1382 -msgid "Trailing backslash" -msgstr "" - -#: lib/regex.c:1385 -msgid "Invalid back reference" -msgstr "" - -#: lib/regex.c:1388 -msgid "Unmatched [ or [^" -msgstr "" - -#: lib/regex.c:1391 -msgid "Unmatched ( or \\(" -msgstr "" - -#: lib/regex.c:1394 -msgid "Unmatched \\{" -msgstr "" - -#: lib/regex.c:1397 -msgid "Invalid content of \\{\\}" -msgstr "" - -#: lib/regex.c:1400 -msgid "Invalid range end" -msgstr "" - -#: lib/regex.c:1403 -msgid "Memory exhausted" -msgstr "" - -#: lib/regex.c:1406 -msgid "Invalid preceding regular expression" -msgstr "" - -#: lib/regex.c:1409 -msgid "Premature end of regular expression" -msgstr "" - -#: lib/regex.c:1412 -msgid "Regular expression too big" -msgstr "" - -#: lib/regex.c:1415 -msgid "Unmatched ) or \\)" -msgstr "" - -#: lib/regex.c:8034 -msgid "No previous regular expression" -msgstr "" - -#: lib/xmalloc.c:63 -msgid "memory exhausted" -msgstr "" - -#: src/analyze.c:809 src/diff.c:1283 -#, c-format -msgid "Files %s and %s differ\n" -msgstr "" - -#: src/analyze.c:812 -#, c-format -msgid "Binary files %s and %s differ\n" -msgstr "" - -#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 -msgid "No newline at end of file" -msgstr "" - -#: src/cmp.c:43 -msgid "Written by Torbjorn Granlund and David MacKenzie." -msgstr "" - -#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 -#, c-format -msgid "Try `%s --help' for more information." -msgstr "" - -#: src/cmp.c:137 -#, c-format -msgid "invalid --ignore-initial value `%s'" -msgstr "" - -#: src/cmp.c:146 -msgid "options -l and -s are incompatible" -msgstr "" - -#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 -#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 -#: src/util.c:286 src/util.c:293 -msgid "write failed" -msgstr "" - -#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 -#: src/sdiff.c:179 -msgid "standard output" -msgstr "" - -#: src/cmp.c:160 -msgid "-b --print-bytes Print differing bytes." -msgstr "" - -#: src/cmp.c:161 -msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." -msgstr "" - -#: src/cmp.c:162 -msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" -msgstr "" - -#: src/cmp.c:163 -msgid "" -" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." -msgstr "" - -#: src/cmp.c:164 -msgid "-l --verbose Output byte numbers and values of all differing bytes." -msgstr "" - -#: src/cmp.c:165 -msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." -msgstr "" - -#: src/cmp.c:166 -msgid "-s --quiet --silent Output nothing; yield exit status only." -msgstr "" - -#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 -msgid "-v --version Output version info." -msgstr "" - -#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 -msgid "--help Output this help." -msgstr "" - -#: src/cmp.c:177 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" -msgstr "" - -#: src/cmp.c:179 -msgid "Compare two files byte by byte." -msgstr "" - -#: src/cmp.c:183 -msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." -msgstr "" - -#: src/cmp.c:184 -msgid "" -"SKIP values may be followed by the following multiplicative suffixes:\n" -"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" -"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." -msgstr "" - -#: src/cmp.c:187 -msgid "If a FILE is `-' or missing, read standard input." -msgstr "" - -#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 -msgid "Report bugs to ." -msgstr "" - -#: src/cmp.c:231 -#, c-format -msgid "invalid --bytes value `%s'" -msgstr "" - -#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 -#, c-format -msgid "missing operand after `%s'" -msgstr "" - -#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 -#, c-format -msgid "extra operand `%s'" -msgstr "" - -#: src/cmp.c:477 -#, c-format -msgid "%s %s differ: byte %s, line %s\n" -msgstr "" - -#: src/cmp.c:495 -#, c-format -msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" -msgstr "" - -#: src/cmp.c:543 -#, c-format -msgid "cmp: EOF on %s\n" -msgstr "" - -#: src/diff.c:41 -msgid "" -"Written by Paul Eggert, Mike Haertel, David Hayes,\n" -"Richard Stallman, and Len Tower." -msgstr "" - -#: src/diff.c:322 -#, c-format -msgid "invalid context length `%s'" -msgstr "" - -#: src/diff.c:405 -msgid "pagination not supported on this host" -msgstr "" - -#: src/diff.c:420 src/diff3.c:315 -msgid "too many file label options" -msgstr "" - -#: src/diff.c:498 -#, c-format -msgid "invalid width `%s'" -msgstr "" - -#: src/diff.c:502 -msgid "conflicting width options" -msgstr "" - -#: src/diff.c:526 -#, c-format -msgid "invalid horizon length `%s'" -msgstr "" - -#: src/diff.c:629 -#, c-format -msgid "`-%ld' option is obsolete; use `-%c %ld'" -msgstr "" - -#: src/diff.c:641 -#, c-format -msgid "`-%ld' option is obsolete; omit it" -msgstr "" - -#: src/diff.c:709 -msgid "--from-file and --to-file both specified" -msgstr "" - -#: src/diff.c:832 -msgid "Compare files line by line." -msgstr "" - -#: src/diff.c:834 -msgid "-i --ignore-case Ignore case differences in file contents." -msgstr "" - -#: src/diff.c:835 -msgid "--ignore-file-name-case Ignore case when comparing file names." -msgstr "" - -#: src/diff.c:836 -msgid "--no-ignore-file-name-case Consider case when comparing file names." -msgstr "" - -#: src/diff.c:837 src/sdiff.c:186 -msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." -msgstr "" - -#: src/diff.c:838 src/sdiff.c:187 -msgid "-b --ignore-space-change Ignore changes in the amount of white space." -msgstr "" - -#: src/diff.c:839 -msgid "-w --ignore-all-space Ignore all white space." -msgstr "" - -#: src/diff.c:840 src/sdiff.c:189 -msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." -msgstr "" - -#: src/diff.c:841 src/sdiff.c:190 -msgid "" -"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." -msgstr "" - -#: src/diff.c:842 src/sdiff.c:191 -msgid "--strip-trailing-cr Strip trailing carriage return on input." -msgstr "" - -#: src/diff.c:844 -msgid "--binary Read and write data in binary mode." -msgstr "" - -#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 -msgid "-a --text Treat all files as text." -msgstr "" - -#: src/diff.c:848 -msgid "" -"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " -"context.\n" -"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " -"context.\n" -" --label LABEL Use LABEL instead of file name.\n" -" -p --show-c-function Show which C function each change is in.\n" -" -F RE --show-function-line=RE Show the most recent line matching RE." -msgstr "" - -#: src/diff.c:853 -msgid "-q --brief Output only whether files differ." -msgstr "" - -#: src/diff.c:854 -msgid "-e --ed Output an ed script." -msgstr "" - -#: src/diff.c:855 -msgid "--normal Output a normal diff." -msgstr "" - -#: src/diff.c:856 -msgid "-n --rcs Output an RCS format diff." -msgstr "" - -#: src/diff.c:857 -msgid "" -"-y --side-by-side Output in two columns.\n" -" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" -" --left-column Output only the left column of common lines.\n" -" --suppress-common-lines Do not output common lines." -msgstr "" - -#: src/diff.c:861 -msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." -msgstr "" - -#: src/diff.c:862 -msgid "" -"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." -msgstr "" - -#: src/diff.c:863 -msgid "--line-format=LFMT Similar, but format all input lines with LFMT." -msgstr "" - -#: src/diff.c:864 -msgid "" -"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." -msgstr "" - -#: src/diff.c:865 -msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." -msgstr "" - -#: src/diff.c:866 -msgid "" -" GFMT may contain:\n" -" %< lines from FILE1\n" -" %> lines from FILE2\n" -" %= lines common to FILE1 and FILE2\n" -" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" -" LETTERs are as follows for new group, lower case for old group:\n" -" F first line number\n" -" L last line number\n" -" N number of lines = L-F+1\n" -" E F-1\n" -" M L+1" -msgstr "" - -#: src/diff.c:877 -msgid "" -" LFMT may contain:\n" -" %L contents of line\n" -" %l contents of line, excluding any trailing newline\n" -" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" -msgstr "" - -#: src/diff.c:881 -msgid "" -" Either GFMT or LFMT may contain:\n" -" %% %\n" -" %c'C' the single character C\n" -" %c'\\OOO' the character with octal code OOO" -msgstr "" - -#: src/diff.c:886 -msgid "-l --paginate Pass the output through `pr' to paginate it." -msgstr "" - -#: src/diff.c:887 src/sdiff.c:198 -msgid "-t --expand-tabs Expand tabs to spaces in output." -msgstr "" - -#: src/diff.c:888 src/diff3.c:452 -msgid "-T --initial-tab Make tabs line up by prepending a tab." -msgstr "" - -#: src/diff.c:890 -msgid "-r --recursive Recursively compare any subdirectories found." -msgstr "" - -#: src/diff.c:891 -msgid "-N --new-file Treat absent files as empty." -msgstr "" - -#: src/diff.c:892 -msgid "--unidirectional-new-file Treat absent first files as empty." -msgstr "" - -#: src/diff.c:893 -msgid "-s --report-identical-files Report when two files are the same." -msgstr "" - -#: src/diff.c:894 -msgid "-x PAT --exclude=PAT Exclude files that match PAT." -msgstr "" - -#: src/diff.c:895 -msgid "" -"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." -msgstr "" - -#: src/diff.c:896 -msgid "" -"-S FILE --starting-file=FILE Start with FILE when comparing directories." -msgstr "" - -#: src/diff.c:897 -msgid "" -"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." -msgstr "" - -#: src/diff.c:898 -msgid "" -"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." -msgstr "" - -#: src/diff.c:900 -msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." -msgstr "" - -#: src/diff.c:901 src/sdiff.c:200 -msgid "-d --minimal Try hard to find a smaller set of changes." -msgstr "" - -#: src/diff.c:902 -msgid "" -"--speed-large-files Assume large files and many scattered small changes." -msgstr "" - -#: src/diff.c:907 -msgid "" -"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." -msgstr "" - -#: src/diff.c:908 -msgid "" -"If --from-file or --to-file is given, there are no restrictions on FILES." -msgstr "" - -#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 -msgid "If a FILE is `-', read standard input." -msgstr "" - -#: src/diff.c:920 -#, c-format -msgid "Usage: %s [OPTION]... FILES\n" -msgstr "" - -#: src/diff.c:949 -#, c-format -msgid "conflicting %s option value `%s'" -msgstr "" - -#: src/diff.c:962 -msgid "conflicting output style options" -msgstr "" - -#: src/diff.c:976 -msgid "regular empty file" -msgstr "" - -#: src/diff.c:976 -msgid "regular file" -msgstr "" - -#: src/diff.c:978 -msgid "directory" -msgstr "" - -#: src/diff.c:981 -msgid "block special file" -msgstr "" - -#: src/diff.c:984 -msgid "character special file" -msgstr "" - -#: src/diff.c:987 -msgid "fifo" -msgstr "" - -#: src/diff.c:991 -msgid "socket" -msgstr "" - -#: src/diff.c:994 -msgid "message queue" -msgstr "" - -#: src/diff.c:997 -msgid "semaphore" -msgstr "" - -#: src/diff.c:1000 -msgid "shared memory object" -msgstr "" - -#: src/diff.c:1003 -msgid "typed memory object" -msgstr "" - -#: src/diff.c:1006 -msgid "weird file" -msgstr "" - -#: src/diff.c:1070 src/diff.c:1256 -#, c-format -msgid "Only in %s: %s\n" -msgstr "" - -#: src/diff.c:1193 -msgid "cannot compare `-' to a directory" -msgstr "" - -#: src/diff.c:1220 -msgid "-D option not supported with directories" -msgstr "" - -#: src/diff.c:1229 -#, c-format -msgid "Common subdirectories: %s and %s\n" -msgstr "" - -#: src/diff.c:1266 -#, c-format -msgid "File %s is a %s while file %s is a %s\n" -msgstr "" - -#: src/diff.c:1345 -#, c-format -msgid "Files %s and %s are identical\n" -msgstr "" - -#: src/diff3.c:26 -msgid "Written by Randy Smith." -msgstr "" - -#: src/diff3.c:328 -msgid "incompatible options" -msgstr "" - -#: src/diff3.c:368 -msgid "`-' specified for more than one input file" -msgstr "" - -#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 -#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 -msgid "read failed" -msgstr "" - -#: src/diff3.c:441 -msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." -msgstr "" - -#: src/diff3.c:442 -msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." -msgstr "" - -#: src/diff3.c:443 -msgid "-A --show-all Output all changes, bracketing conflicts." -msgstr "" - -#: src/diff3.c:444 -msgid "-x --overlap-only Output overlapping changes." -msgstr "" - -#: src/diff3.c:445 -msgid "-X Output overlapping changes, bracketing them." -msgstr "" - -#: src/diff3.c:446 -msgid "-3 --easy-only Output unmerged nonoverlapping changes." -msgstr "" - -#: src/diff3.c:448 -msgid "-m --merge Output merged file instead of ed script (default -A)." -msgstr "" - -#: src/diff3.c:449 -msgid "-L LABEL --label=LABEL Use LABEL instead of file name." -msgstr "" - -#: src/diff3.c:450 -msgid "-i Append `w' and `q' commands to ed scripts." -msgstr "" - -#: src/diff3.c:453 src/sdiff.c:202 -msgid "--diff-program=PROGRAM Use PROGRAM to compare files." -msgstr "" - -#: src/diff3.c:465 -#, c-format -msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" -msgstr "" - -#: src/diff3.c:467 -msgid "Compare three files line by line." -msgstr "" - -#: src/diff3.c:673 -msgid "internal error: screwup in format of diff blocks" -msgstr "" - -#: src/diff3.c:971 -#, c-format -msgid "%s: diff failed: " -msgstr "" - -#: src/diff3.c:993 -msgid "internal error: invalid diff type in process_diff" -msgstr "" - -#: src/diff3.c:1018 -msgid "invalid diff format; invalid change separator" -msgstr "" - -#: src/diff3.c:1242 -msgid "invalid diff format; incomplete last line" -msgstr "" - -#: src/diff3.c:1265 src/sdiff.c:273 -#, c-format -msgid "subsidiary program `%s' not executable" -msgstr "" - -#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 -#, c-format -msgid "subsidiary program `%s' not found" -msgstr "" - -#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 -#, c-format -msgid "subsidiary program `%s' failed" -msgstr "" - -#: src/diff3.c:1294 -msgid "invalid diff format; incorrect leading line chars" -msgstr "" - -#: src/diff3.c:1370 -msgid "internal error: invalid diff type passed to output" -msgstr "" - -#: src/diff3.c:1647 src/diff3.c:1704 -msgid "input file shrank" -msgstr "" - -#: src/dir.c:162 -#, c-format -msgid "cannot compare file names `%s' and `%s'" -msgstr "" - -#: src/sdiff.c:35 -msgid "Written by Thomas Lord." -msgstr "" - -#: src/sdiff.c:183 -msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." -msgstr "" - -#: src/sdiff.c:185 -msgid "-i --ignore-case Consider upper- and lower-case to be the same." -msgstr "" - -#: src/sdiff.c:188 -msgid "-W --ignore-all-space Ignore all white space." -msgstr "" - -#: src/sdiff.c:194 -msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." -msgstr "" - -#: src/sdiff.c:195 -msgid "-l --left-column Output only the left column of common lines." -msgstr "" - -#: src/sdiff.c:196 -msgid "-s --suppress-common-lines Do not output common lines." -msgstr "" - -#: src/sdiff.c:201 -msgid "" -"-H --speed-large-files Assume large files and many scattered small changes." -msgstr "" - -#: src/sdiff.c:214 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 FILE2\n" -msgstr "" - -#: src/sdiff.c:215 -msgid "Side-by-side merge of file differences." -msgstr "" - -#: src/sdiff.c:327 -msgid "cannot interactively merge standard input" -msgstr "" - -#: src/sdiff.c:588 -msgid "both files to be compared are directories" -msgstr "" - -#: src/sdiff.c:853 -msgid "" -"ed:\tEdit then use both versions, each decorated with a header.\n" -"eb:\tEdit then use both versions.\n" -"el:\tEdit then use the left version.\n" -"er:\tEdit then use the right version.\n" -"e:\tEdit a new version.\n" -"l:\tUse the left version.\n" -"r:\tUse the right version.\n" -"s:\tSilently include common lines.\n" -"v:\tVerbosely include common lines.\n" -"q:\tQuit.\n" -msgstr "" diff --git a/src/bin/diffutils/po/eo.gmo b/src/bin/diffutils/po/eo.gmo deleted file mode 100644 index 14f7cd982cb454577dbe134c10e51562f4d3d8e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22734 zcmb`P3v^}IS>I2{gIGy0@hgs9$J=&hG`4j$lE%)AH6DB98O@Al^s=ORF`h6-x<}HH z?!D*wK1L(EfyQYlq!1v55NHS_kU(1k1VW!cR~wqrc6CwG(&etUY1&o1pzqMG;?gFo zzyG)QIrm<@GV$Ur@A;o|_WRr4{=RR2`;&k44Yz$c^1ojL{!A3T@wdRQM$ua;{`0Lv z;CDsQt;13Dx;psFy#Hbpz5N036!_1;i72}59pL?73{vN|_k(W-e+7IesCI?wZvcE1 zyf2Dw-v^RzKjFXMo`NObKMFcf_4b3m57Pb}Zw*Kr(IoGr=q&i-AocF}kKp4`bmwj0 z0q_h+nLD2c>Hp5(1W$r5gHK1%U5p`m2E6LO-}TcV{oJMgnAbbr2p$7xK>B&d4}^Es zKN3ZE-vvGaDxW#r{e2*Gx%;1j^#9H~z~dlosGoO2%V-Mxd*Hb!y60AqcJ8?XGN*ff z1f-vPlux_&z7;$O(x&Ko?{$!R_x>FCZt#DCr&+qY!H2ukQPekpFuiyuF_~ zD!2bxkTu{QBcS-2@eHhj@ZZ3TAnP*lX^`;`{KN2F{Xo}}#tR)v;xh*x4;X{w zm0kjG0Y45OkAa`zo%RR+0DJ@Ze?j^_2xxu>?*tj&LHdfI{lUv1Z6Ex85c(d}Iz#V+ zFN3V(LD83S4&4n>Z%F(Fj|{bZ{?MmD`WyO9ko6q;T@YRx`VS!O4gC-BL8`t5g#N?O zPWi(NAm4@;LFy0JKxjJrevtVLe;8!k!yf}#yW!7*-v)jjgdW3R0O6D2e-7>k{|J15 zDT!W;d*mp1J9rW71J^;?A3+|x?h^O`-k)bn{TtplS>kElf0C{F+u+$KdXM@b3r>Rn1ROzB-3>DLCn;n26Cm}T{6mk&2EbEvt?@$3V}BiVh$_}X z^6sgFAmeyS`Lm$-p0#}%UeI`-PQWL@p8@IP>96?j$JH+K?D$&1Pk@Z^xaL2M=zA0# z1+RjG;Kx`e)@w}r;|QYn2@pD;Xn<$HkATO)e+`bIvPAFqfbRvF&q>J-2fhqa{-o9g z9vLT3^cw#z5IT(i7D(Tx;GO6&$Q+e_Y6GObQ@;T+u2cUDr2c8m|0K8$QvS5oU*G=# zEYTHfta+Z916kKI-vd4d{w{ceC3_S2M<97x*R#+}e0+8lr0&@dfd{}}0^y&t8b5S6 z_bnjppKF28;oPUd2f@D&o(6v(gie!`5&b5Y!FPb7!@Z#R2;P|dMeC?Op87nFvk(E(ac ze+fkP%-jZkD+nzkXgTu?NISF8P<%Rj3cLfXf|Q+oDWJx$_n!yf2L2t8_GUE?=sf#X zka;}252XKRSsTgeXB!~%dG?C|zYGrZuJO^|95fbv=Vn0a&TWFsd+w(|_+jpIAoHI4 zxBi_bt^IlNG2@y44)9h`<9!Hx9|%3>KM6vo`7eOCfM0=+S@-$>#5?ml&)P^%pXZy} zIe!Mc9lQdLfLXv#fz0Rp?}5pFaycPttm>lKvctc}6di^qVGKCTadZ zL4s#QSJ|M^b<#0XOcEddWs-hB<01N9@CQiWMiSlNZ^=IKLv)<pD+o4vzi`2|l;qkMQqHq_Tgte{T!V+IKTu-}U%3=@+(q`zhWpkrqgY zNaDl4M!H7&JSihhkUmWM3ncyCLaLJ9q!)glC4D#P-K4W5{nkB1?+4#Z8XzU4H;~}t z=&zDCN&5X7>5U}u`U|A)-+RN$&x1ck`f1V+ksc)JSMs2}s{L!fX22nEk(82VN%xVS zCB2QbkF-qEkNvAXCb=UW7X2zI|BdkQFzGX-TS!Mp{iHun`X16JNiEWyB>g@{I!d~W zv_|@NQvQ2}hY#6{bK_}iHEFohr=}KM)^L-;YP{)|vRW%nYomRR-@bh$|FqP9qTe~{ zxMo^gsU&V`HEzU9E!sGdmw0YwW+oKsibt5&m`Yh}Kgi)&?j3gxbpu3ot~adP3z)hmNnX6MFF zT)p~YIlFP`eUsx03*&Rn)f;K8wOnepHkn+ro-Da#(ZzDDD;HjxE^Z_)W{g>-l5GeZ zu9j@Ll}6UC4>-O-l%=?tSWZ?c`y5YFk@b{w%W0$8vbnliySkV(LKk$xgyLQDrd=rQ zvgJUiV{Wo^>QPT6wLMPrrOxXV4L&*?@$b$HOmAB8q}FQYZF;&^wr32uk2?F3Rw~H~8zrl^Qh2#ka{HEi z*|c^&uB7E1azfc_`tJQ;S( zxB2u%rIPVf$#!#zyLhmgkOD5&Va_kR;B4o;;F_UjTv8-#3*@N zwi9=3D=>Yr9YRy8pr#hnTHM%lZZ3(-#A5k4!Fi-o{(`7PXx1gomSMuCYDw;v^kyBDO0CSlEoMk@NyT(IP0HN`kNI8X zPK2iXD{aGqa8%Mj5I5PW{`(T_v`FJHKTFig8k_2MHL28{n`yTs2wJPGyS`XX)<|E- zYDU23vFYi>pb=gtMEl z&t6h*tR}TU4M{YkfQlMXZf^B7-;OBTvUas>w^5wPYR$BqYm7a|!7Qpshn!Hc3m>%9 znkVa%luK~vil1!Lxv^%G?T<#`n_p$4O;z%{xfHk1-)xa4&7z)7tlEs5twvfe9D!+!Ge%s&8Qlz#>*X37#QW7^eOIfYL#t978u2mDrQHFfA z?0V9u#Pzxsy)*wYRcx+i8zqf7uh&H*L;%LmdeX9bS#7zJF119tXH+xr+hQfIt$WUO z1+#e?yN%V1o#;8(%nACj^0aZ%O^;2X$7yJ}oGc&nZ(;CZ=*FOIG7ZvQd&mk}HDoN@ zprM@1<#{b@xn{dw&l)WzZPF>+DY;RP;Yn6>>!{1^L<>hDOo32{ zo~!{QS0HCWvVzosw!6~pj8Xhgi+?BFT=%4q;7hBlRFERd%lH0H%fV7u4H{u`lWubC znQ`o-5<6=#sT>QhlBE7Ituzu^`z#FIb~AwqSf?_ z0J9@c;-#dZmDqn{RT{^>Q~px1&O2th{dD=U#eYck+_<*kteKV z?@X;7J0X<3_2_1GTnHASgn)gf$0d3^Vd{yV&9uJJx+2AOwIG&s*8w(m+^)3Tp@%zq zY$>awT)jcg@cT+_8atmihA5Qoz1hY>@lIi7s(BFWAG3QHY|LZPiuo};Z)d)CLZ##wh@nMA6iqQd^O|DgGnH9F0ts>UX-<6 zSk^$QaJ4DG1{S?Aw3*oQg>_{?U|`sd`ayuAW_W8Zq0Pi0TeG)H zEPoQ6nLKHnOMjPV&d=F1>z}!)%X+4rRNVx@@6C%su_JnuM#=Q9oejPDL1hdfO}&Yo zv11FlkctsC{_K&|mXI4Ts|lL?4wzlDAYCN zATN&j&pRBOI!B^h&HFZnM^yzaU(CL{sgN6$(4uf(vfN@%RN7TkOIQxm%%Xxa8L(xt z|AIYd8j=B9{d&BD35)=8vvHG2Q7g-BM$XGPw(!XUDXs!{T6L>E8{LLP>{N_%}ZksGZ3a-Dm9j{%R0I7QM<)|&IOP6d#D3XlOR=RWPvkNxRnPs@b#p!IlwmY zqCcmfugwsjR||`cG+8bNX-kC4f!>WEVLf#yj$z1*lBIT|Ny|E$gh%Wxme39tW^1+= zyR;M&Zr93GhZ3a{2Te9D4^0eowtr3>>=tS5qi!=zaH1qPQtX&k+-hU=W6$N)(PLOP zC2Z(gD_uh8c_qM5^xf;q)`kRy>0C}bU7OAZAmfOmZWG>=4=Fd`9Fx?R=wXzI~pxn0B*sWOb$}Mshq#>MxQqa*v_>2(}T;xl* zbem2Ng-#~k9|rIr#i*&E49n?t>hVUk=N)`~(nTsW2^ z-#cHn7oJM0_+F^K8n-#Ul%wg)TU>ew{#=Iukwp>CHOis0>nZ+1CcCZw8J)4&$8v3o zi)R}N_IsO^361PfXKq_Fh)xWnbR`Pnd$GM@;`B)#N-MQ?sohE|&Eq@`W{s7n1|zdr zg6`IZ0!Ed0%%g?jdC7YJE?r*5nUrI*K!3_O1LJp+BGyR$6&w6YH$8aVve@W2t(7N<8ev7jyo76#nxfEyoh-!b4W z`wA#PB$eY|1~r<+gclo+TG&Qn!vQLn z8^@L4fa~GtPHGq-6*t>nWDVS8in-rR2K!DyB=}KQig&BZ z`4BInIMohD8;nF_c-)%^JvD7YM*FGkPRz_+o|ry87%k-Y5!#MTcHAnTHr+Kuj(0Kk z+iGm>XfQfoTd!psh~!PSLe(XWM%Lh?oj&Q{fJEbS2fDsIY+oMk`f^2IuDrMF%X2SA z=bJdlOtN2@nO&HenZAl3H9-`FZr`3ou1MOBxGUn4VGko$uU_4&()@0j{+#0Sb4-4S z>5DGnLuS#nRc1Mmy785jq|t)^Q+x(zVxE)AfIAsq=kno9yqPoy`sO(JNmk;Os8sMI zdUl_rkp*3S4R*IV$4=OE^RUxu&-aDZtcs^@GHYN4c8y^nYb>s1_!Cbf#wxIq?GxYq zRJ?R9slAZ039gm)aV?ZPxM03)v6)qpR&vy3^ySjlUPan)6fG<{HA2Duj%T~WAvhr9 z)f7+4D=mhL7AqNo-rV4DvHv8;xSmW(A$-_kQr-+4e(th)BOIJECqq61u#-xcCwyy( zg2z!>x;&9k(L-LY$E0^&6!a>xs8B7vgI=oEN8R|$DG4ZvY7Ua-!IX$(w}e|F6RM%d zt^(eiMP=%u)E8~`v|yHKk&}~PGvb=-mhm#H!v?N7ErQ)D1Ou4OZBnkx&5ceh!BZJ? z6%Zp(2K$o5J*!iovbBIDg`F!yACzhARHl)xthQXIP$+|goon6VGtJ9ovb|B-%rmyM z)EvEK9^R<6Of~BAw79A8C)>X3qqkh}C(~VvJU@ENvuzHteG&4x5kpzKRPigboGxck zS~IR{rHfrl(&1aY#O$VZiXlXCqk9QA3TLy#>}y$EuC-YguS-=(Z+xdd-b9T$h7D_l z0`YvYtqPu&WCNEYO@}Kp)RpyUyQxV9KMIbWb}`$Mu}3g!s2$rjh3 zWzOVM48P`JGix`N61LJxGFVGmPxVbrOpSMD zJUlqmhu>3HWN88Fjba1dXdSFq;D&fy0B*<)!lD;+uV_!Ff=oxW*;XP1ph#zVVum7h31RZqMu4bzSq-RxwM8NTr@YrAqADwRTp=F)Y#16{7^nh*2Wn zXRNo;^6Twt?AEh#=DMPjcId>1C#Bh%ODgW<%>2ao+)Ph^Qg2pIh?26_GggL4AcFJS zPLm2RU7<>oV{OPvEm6NJ!#1Fd!parBW30zc+`3QgLPu=r(* z@UL!~hSB?Z7g0%`qWwNFsUH&o)9h=mzdJ6;hb8%fKB_|{yjCD?iKZrW&6bJ}Mc%cV zn*u zQr-4C213dypY}#Ek#t<-15qeheTkkdYzb?{=bA$7$;v~KRJPxTEn#N+R$$dUVkxWj z7DV`ag4Qc|n{l+nHX+|PJ=_JQO`hVA-8(#~wRKsHC{!u4kp<%}gc(fFAk|KDP)?m5y%@B;&35*h0I5T`(mI|ZO$Be1p4Cw> zcV%X5i&#oIIw7;McM*MoL@}xhq2cL-=w&9fLYF&5o%JrOD4>?om3)Nak9<{kk6Sty z;+AfHI3ZfejaO1w#J_RI#zHc`Y25Hs+$o9)7J`g~vSA}iKIZ&jbdyuhzNSsV*W=o& zNh>hR4uMRkkh}CBR09JzG3Q>9lQLZ~+UL;`v{Os$q_>`3Z=|n= zwnY_BlP$qbz6C$KP-wvBhFroaunr}~XYy%a*S%nzwReh}gb?YIy(OV3@SpI$59-(&z(G0)zW zGNH)wqc8&TLL}7q!o)eYL>>thUM08nn3NGonDJcEB8U-k9dX2BV-xm>iWrrd>Z2Va# zhRV0uiJ`jbHWAA3MsK6V7BIf|mdo}X(8d0`O5Qn^${Q25{;Z)pp)jj;*^S<$WNo}O z?GC2eC6+4KC2TzO#hN*{;6jtWCW_m=46;L9)hzcj7>^B18?g|Q04&5mox6%?(y>F405p8JWkl2f&t z1hT)d`$VK*%LR#ZjBla;u2WsH2}BXT=f((443AFl6kTQCcZ#bDTu^Hh+7W9R%i76U zPOQFytF(>@&)yT^bu)wA9$;lg5<|gSqYf>&ennTwE>CLp_*LbO4Z>Cj+(cAYfd6gAH+IuZ^%s^6|vMrqAb;T`ws5#odapRF z-Sj-MSYFM9SS-ExemX3)MSod1mU$u>16*nQk?wa0$I3?xPwisa-*8_ZGt)ee$+Fj6 z+T~}aos0zv%2J@?9YVBx#}bRuASOfB@(8Uzo%u>V_Qq-XKEF93X03elOl9F(i1FM2 zl8a1Y9q8S2eGwAD{I@+D$}aeQ1uN0(u?YGXvFZP&Q_PhM7WrrLUUNmgW5KSCl-o-> z4AG(&MuQQ8N6zTn-P<4D3Fh({1a!#*>EF(uoyjwJ^jSqtUc+L(I(23gx=<9tg?ZBR zQ-@4)HJ01#`t2Egd1<3+4{=Q*?2(@fyuN5Yfk`^fABNWP{rH8F$ZEv{cJ4E2S>X@% zR*;?Ooj`}P1jZCEVSW3#iKjI?h|66n2Nt5Ba8Q^sM$he3agXBDNpOAg7g7Y2gy^s= zD!$84qoLXMU+0|Kl}B7ex)SavIyDNrR@E#rtZ2**EOCg-Vq(a%YFB%5f~(RBf8o$+ z&tKaWr7b87%d_%I(x|7ercFxL(pb8mOXev#D*S2QTEl0Ow;Gl_FS5&6q)R&CVbffJ z$*Y59oj0>(ICB;pmX9th7NiV*plHsNP1{8G60@~?m0jb+E|><>9f;i>$+y=`*01Yu zFT$|k_KG2iJ1HYRX@!j7l3Uv)K+JKOq(r!k8+HVUxgtO;&+^#>h&ckp906j^0>rcj zS~62{W;3L1F=E^Xs0gN?XKmxh{6-~MAkJHsa*2tsIx2*P7>vG{ELXH%Its}#)a4%J zdM$UBC`wGu{4DySIWr-p{k>?09;}6<|Md9u#F#rhrbw}g8Tg&8!f5ct(P(hmvxbmx zt&KU;cOi9+cujXsonSE>!ko+s3s8R3qN~2pAcxm-`ikGIwEwaX6^nhW7!#SJQB2N? z&4ioP!M<6@#yL>Ol3b4)FPLK%n#4>KM*xva-If&ozC2*8|G9p7{^(5{NWfxtz0Hk8 zCtOSmv!#bY_5?$f$DTV7!o{%g8ro74`*uz|AYnqdSl6eA?bE~EpRVW=0b^aI6fyP! zRLvvCPE5>Lz*rDnxyYUwA;@dba#unPV#na4E7KurY>zr;cWH9hurcnq*X@sw`E%me z95yBnpM-Nm*jQJabFgd?HrDmMCv2?y`?jz#wY@EDEZi0O;ITrv>(=uqQV$8-)`=$C zt62L5Sfq#@lj`tV$2PHeC9BAf%Z5x>aK;#U5}-&J@^9U;hALr!kz`&aW; z>K4jmmM@;tJ?BoG&qbMNTM?gS7Xh48bvGt@=%G_KKb_#Eq;ePdC89&_S{AKTzR+5@0Szbjh|rvc0N= zeI!qc*kWrh%k8gQvp$T=>ofJI&4o|D7)0PfV|o}dM3wE4-|L_06y!j(q6=y^5A77D zSEqnYHw@>fmQ@>+xH7^H2+8rm2iYFQU&ZYlOg!oDU^UqZaJO2;EagBeX_{!XrKr?4dzV%B5qafu(liqBvvi;8P5re#*29X4z$+s@|RwPGTL__7YuG$W$J z%`>FGA?Uh$@mHlmVP;Y8DKyQAx$RYGu(#Eo-FM|8G0HQ%6v!gQmqGR{^83Jtm+1{B zqsbD;x=uiQ$5PB&@QlUjt*~=!dFe3^YEZ;jZzdCIv@5zt+A%M9St9j@A>zl#{}*7L m+YsIVuSNX9fs9-Wf+G%sAUN*Sh<9T@W8oK*(rvjX#Qz7k6I#&# diff --git a/src/bin/diffutils/po/eo.po b/src/bin/diffutils/po/eo.po deleted file mode 100644 index f3de52c061..0000000000 --- a/src/bin/diffutils/po/eo.po +++ /dev/null @@ -1,923 +0,0 @@ -# Esperantaj mesaoj por GNU diffutils. -# Copyright (C) 1996 Free Software Foundation, Inc. -# Edmund GRIMLEY EVANS , 2001-2002. -# -msgid "" -msgstr "" -"Project-Id-Version: GNU diffutils 2.7.10\n" -"POT-Creation-Date: 2002-04-05 14:10-0800\n" -"PO-Revision-Date: 2002-03-13 21:19+0000\n" -"Last-Translator: Edmund GRIMLEY EVANS \n" -"Language-Team: Esperanto \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=iso-8859-3\n" -"Content-Transfer-Encoding: 8-bit\n" - -#: lib/c-stack.c:188 -msgid "program error" -msgstr "programeraro" - -#: lib/c-stack.c:189 -msgid "stack overflow" -msgstr "stako tro granda" - -#: lib/error.c:128 lib/error.c:156 -msgid "Unknown system error" -msgstr "Nekonata sistemeraro" - -#: lib/freesoft.c:27 -msgid "" -"This program comes with NO WARRANTY, to the extent permitted by law.\n" -"You may redistribute copies of this program\n" -"under the terms of the GNU General Public License.\n" -"For more information about these matters, see the file named COPYING." -msgstr "" -"i tiu programo venas kun NENIA GARANTIO, la la grado permesata de juro.\n" -"Vi rajtas redistribui kopiojn de i tiu programo\n" -"la la kondioj de la enerala Publika Rajtigilo de GNU.\n" -"Por pli da informoj pri i tiaj afero, vidu la dosieron COPYING." - -#: lib/getopt.c:693 -#, c-format -msgid "%s: option `%s' is ambiguous\n" -msgstr "%s: opcio '%s' estas plursenca\n" - -#: lib/getopt.c:718 -#, c-format -msgid "%s: option `--%s' doesn't allow an argument\n" -msgstr "%s: opcio '--%s' ne permesas argumenton\n" - -#: lib/getopt.c:723 -#, c-format -msgid "%s: option `%c%s' doesn't allow an argument\n" -msgstr "%s: opcio '%c%s' ne permesas argumenton\n" - -#: lib/getopt.c:741 lib/getopt.c:914 -#, c-format -msgid "%s: option `%s' requires an argument\n" -msgstr "%s opcio '%s' postulas argumenton\n" - -#: lib/getopt.c:770 -#, c-format -msgid "%s: unrecognized option `--%s'\n" -msgstr "%s: nekonata opcio '--%s'\n" - -#: lib/getopt.c:774 -#, c-format -msgid "%s: unrecognized option `%c%s'\n" -msgstr "%s: nekonata opcio '%c%s'\n" - -#: lib/getopt.c:800 -#, c-format -msgid "%s: illegal option -- %c\n" -msgstr "%s: nepermesita opcio -- %c.\n" - -#: lib/getopt.c:803 -#, c-format -msgid "%s: invalid option -- %c\n" -msgstr "%s: nevalida opcio -- %c\n" - -#: lib/getopt.c:833 lib/getopt.c:963 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "%s: opcio postulas argumenton -- %c\n" - -#: lib/getopt.c:880 -#, c-format -msgid "%s: option `-W %s' is ambiguous\n" -msgstr "%s: opcio '-W %s' estas plursenca\n" - -#: lib/getopt.c:898 -#, c-format -msgid "%s: option `-W %s' doesn't allow an argument\n" -msgstr "%s: opcio '-W %s' ne permesas argumenton\n" - -#: lib/regex.c:1367 -msgid "Success" -msgstr "Sukceso" - -#: lib/regex.c:1370 -msgid "No match" -msgstr "Nenia trafo" - -#: lib/regex.c:1373 -msgid "Invalid regular expression" -msgstr "Nevalida regula esprimo" - -#: lib/regex.c:1376 -msgid "Invalid collation character" -msgstr "Nevalida ordiga signo" - -#: lib/regex.c:1379 -msgid "Invalid character class name" -msgstr "Nevalida nomo de signoklaso" - -#: lib/regex.c:1382 -msgid "Trailing backslash" -msgstr "'\\' e la fino" - -#: lib/regex.c:1385 -msgid "Invalid back reference" -msgstr "Nevalida retroreferenco" - -#: lib/regex.c:1388 -msgid "Unmatched [ or [^" -msgstr "Neparigita [ a [^" - -#: lib/regex.c:1391 -msgid "Unmatched ( or \\(" -msgstr "Neparigita ( a \\(" - -#: lib/regex.c:1394 -msgid "Unmatched \\{" -msgstr "Neparigita \\{" - -#: lib/regex.c:1397 -msgid "Invalid content of \\{\\}" -msgstr "Nevalida kunteksto de \\{\\}" - -#: lib/regex.c:1400 -msgid "Invalid range end" -msgstr "Nevalida fino de gamo" - -#: lib/regex.c:1403 -msgid "Memory exhausted" -msgstr "Memoro elerpiis" - -#: lib/regex.c:1406 -msgid "Invalid preceding regular expression" -msgstr "Nevalida antaa regula esprimo" - -#: lib/regex.c:1409 -msgid "Premature end of regular expression" -msgstr "Neatendita fino de regula esprimo" - -#: lib/regex.c:1412 -msgid "Regular expression too big" -msgstr "Regula esprimo estas tro granda" - -#: lib/regex.c:1415 -msgid "Unmatched ) or \\)" -msgstr "Neparigita ) a \\)" - -#: lib/regex.c:8034 -msgid "No previous regular expression" -msgstr "Mankas antaa regula esprimo" - -#: lib/xmalloc.c:63 -msgid "memory exhausted" -msgstr "memoro elerpiis" - -#: src/analyze.c:809 src/diff.c:1283 -#, c-format -msgid "Files %s and %s differ\n" -msgstr "Dosieroj %s kaj %s estas malsamaj\n" - -#: src/analyze.c:812 -#, c-format -msgid "Binary files %s and %s differ\n" -msgstr "Binaraj dosieroj %s kaj %s estas malsamaj\n" - -#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 -msgid "No newline at end of file" -msgstr "Mankas linifino e fino de dosiero" - -#: src/cmp.c:43 -msgid "Written by Torbjorn Granlund and David MacKenzie." -msgstr "Verkite de Torbjorn Granlund kaj David MacKenzie." - -#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 -#, c-format -msgid "Try `%s --help' for more information." -msgstr "Provu '%s --help' por pli da informoj." - -#: src/cmp.c:137 -#, c-format -msgid "invalid --ignore-initial value `%s'" -msgstr "nevalida valoro '%s' de --ignore-initial" - -#: src/cmp.c:146 -msgid "options -l and -s are incompatible" -msgstr "opcioj -l kaj -s malkongruas" - -#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 -#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 -#: src/util.c:286 src/util.c:293 -msgid "write failed" -msgstr "skriberaro" - -#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 -#: src/sdiff.c:179 -msgid "standard output" -msgstr "normala eligo" - -#: src/cmp.c:160 -msgid "-b --print-bytes Print differing bytes." -msgstr "-b --print-bytes Eligi diferencajn bitokojn." - -#: src/cmp.c:161 -msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." -msgstr "-i N --ignore-initial=N Ignori la unuajn N bitokojn de la enigo." - -#: src/cmp.c:162 -msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" -msgstr "-i N1:N2 --ignore-initial=N1:N2" - -#: src/cmp.c:163 -msgid "" -" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." -msgstr "" -" Ignori la unuajn N1 bitokojn de DOSIERO1 kaj la unuajn N2 bitokojn de " -"DOSIERO2." - -#: src/cmp.c:164 -msgid "-l --verbose Output byte numbers and values of all differing bytes." -msgstr "-l --verbose Eligi indeksojn kaj kodojn de iuj diferencaj bitokoj." - -#: src/cmp.c:165 -msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." -msgstr "-n LIMO --bytes=LIMO Kompari maksimume LIMO bitokojn." - -#: src/cmp.c:166 -msgid "-s --quiet --silent Output nothing; yield exit status only." -msgstr "-s --quiet --silent Eligi nenion; doni nur elig-valoron." - -#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 -msgid "-v --version Output version info." -msgstr "-v --version Eligi informojn pri la versio." - -#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 -msgid "--help Output this help." -msgstr "--help Montri i tiun helpon." - -#: src/cmp.c:177 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" -msgstr "Uzado: %s [OPCIO]... DOSIERO1 [DOSIERO2 [N1 [N2]]]\n" - -#: src/cmp.c:179 -msgid "Compare two files byte by byte." -msgstr "Kompari du dosierojn bitokon post bitoko." - -#: src/cmp.c:183 -msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." -msgstr "N1 kaj N2 estas la nombro de bitokoj ignorendaj en iu dosiero." - -#: src/cmp.c:184 -msgid "" -"SKIP values may be followed by the following multiplicative suffixes:\n" -"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" -"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." -msgstr "" -"Valoroj povas esti sekvataj de la sekvaj multobligaj sufiksoj:\n" -"kB 1000, K 1024, MB 1 000 000, M 1 048 576,\n" -"GB 1 000 000 000, G 1 073 741 824, kaj tiel plu por T, P, E, Z, Y." - -#: src/cmp.c:187 -msgid "If a FILE is `-' or missing, read standard input." -msgstr "Se DOSIERO estas '-' a mankas, legi la normalan enigon." - -#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 -msgid "Report bugs to ." -msgstr "Raportu pri cimoj al ." - -#: src/cmp.c:231 -#, c-format -msgid "invalid --bytes value `%s'" -msgstr "nevalida valoro '%s' de --bytes" - -#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 -#, c-format -msgid "missing operand after `%s'" -msgstr "argumento mankas post '%s'" - -#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 -#, c-format -msgid "extra operand `%s'" -msgstr "kroma argumento '%s'" - -#: src/cmp.c:477 -#, c-format -msgid "%s %s differ: byte %s, line %s\n" -msgstr "%s %s malsamaj: bitoko %s, linio %s\n" - -#: src/cmp.c:495 -#, c-format -msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" -msgstr "%s %s malsamaj: bitoko %s, linio %s estas %3o %s %3o %s\n" - -#: src/cmp.c:543 -#, c-format -msgid "cmp: EOF on %s\n" -msgstr "cmp: EOF e %s\n" - -#: src/diff.c:41 -msgid "" -"Written by Paul Eggert, Mike Haertel, David Hayes,\n" -"Richard Stallman, and Len Tower." -msgstr "" -"Verkite de Paul Eggert, Mike Haertel, David Hayes,\n" -"Richard Stallman, kaj Len Tower." - -#: src/diff.c:322 -#, c-format -msgid "invalid context length `%s'" -msgstr "nevalida longo '%s' de kunteksto" - -#: src/diff.c:405 -msgid "pagination not supported on this host" -msgstr "dispaigo ne eblas kun i tiu sistemo" - -#: src/diff.c:420 src/diff3.c:315 -msgid "too many file label options" -msgstr "tro da dosieretikedopcioj" - -#: src/diff.c:498 -#, c-format -msgid "invalid width `%s'" -msgstr "nevalida laro '%s'" - -#: src/diff.c:502 -msgid "conflicting width options" -msgstr "malkongruaj opcioj pri laro" - -#: src/diff.c:526 -#, c-format -msgid "invalid horizon length `%s'" -msgstr "nevalida horizonta longo '%s'" - -#: src/diff.c:629 -#, c-format -msgid "`-%ld' option is obsolete; use `-%c %ld'" -msgstr "opcio '-%ld' estas malnova; uzu '-%c %ld'" - -#: src/diff.c:641 -#, c-format -msgid "`-%ld' option is obsolete; omit it" -msgstr "opcio '-%ld' estas malnova; ellasu in" - -#: src/diff.c:709 -msgid "--from-file and --to-file both specified" -msgstr "--from-file kaj --to-file amba specifitaj" - -#: src/diff.c:832 -msgid "Compare files line by line." -msgstr "Kompari dosierojn linion post linio." - -#: src/diff.c:834 -msgid "-i --ignore-case Ignore case differences in file contents." -msgstr "-i --ignore-case Ignori diferencojn en uskleco en dosierenhavo." - -#: src/diff.c:835 -msgid "--ignore-file-name-case Ignore case when comparing file names." -msgstr "--ignore-file-name-case Ignori usklecon en komparado de dosiernomoj." - -#: src/diff.c:836 -msgid "--no-ignore-file-name-case Consider case when comparing file names." -msgstr "" -"--no-ignore-file-name-case Konsideri usklecon en komparado de dosiernomoj." - -#: src/diff.c:837 src/sdiff.c:186 -msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." -msgstr "-E --ignore-tab-expansion Ignori anojn kazatajn de TAB-oj." - -#: src/diff.c:838 src/sdiff.c:187 -msgid "-b --ignore-space-change Ignore changes in the amount of white space." -msgstr "-b --ignore-space-change Ignori anojn en blanka spaco." - -#: src/diff.c:839 -msgid "-w --ignore-all-space Ignore all white space." -msgstr "-w --ignore-all-space Ignori ian blankan spacon." - -#: src/diff.c:840 src/sdiff.c:189 -msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." -msgstr "-B --ignore-blank-lines Ignori anojn, kies linioj estas malplenaj." - -#: src/diff.c:841 src/sdiff.c:190 -msgid "" -"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." -msgstr "" -"-I RE --ignore-matching-lines=RE Ignori anojn, kies linioj iuj kongruas " -"kun RE." - -#: src/diff.c:842 src/sdiff.c:191 -msgid "--strip-trailing-cr Strip trailing carriage return on input." -msgstr "--strip-trailing-cr Forigi linifinan CR e enigo." - -#: src/diff.c:844 -msgid "--binary Read and write data in binary mode." -msgstr "--binary Legi kaj skribi datenojn binare." - -#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 -msgid "-a --text Treat all files as text." -msgstr "-a --text Trakti iujn dosierojn kiel tekstajn." - -#: src/diff.c:848 -msgid "" -"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " -"context.\n" -"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " -"context.\n" -" --label LABEL Use LABEL instead of file name.\n" -" -p --show-c-function Show which C function each change is in.\n" -" -F RE --show-function-line=RE Show the most recent line matching RE." -msgstr "" -"-c -C NOM --context[=NOM] Eligi NOM (implicite 3) liniojn da kopiita " -"kunteksto.\n" -"-u -U NOM --unified[=NOM] Eligi NOM (implicite 3) liniojn da unuigita " -"kunteksto.\n" -" --label ETIK Uzi ETIKedon anstata dosiernomo.\n" -" -p --show-c-function Montri, en kiu C-funkcio estas iu ano.\n" -" -F RE -show-function-line=RE Montri la plej lastan linion, kiu kongruas " -"kun RE." - -#: src/diff.c:853 -msgid "-q --brief Output only whether files differ." -msgstr "-q --brief Eligi nur, u la dosieroj estas malsamaj." - -#: src/diff.c:854 -msgid "-e --ed Output an ed script." -msgstr "-e --ed Eligi ed-programeton." - -#: src/diff.c:855 -msgid "--normal Output a normal diff." -msgstr "--normal Eligi normalan diferencaron." - -#: src/diff.c:856 -msgid "-n --rcs Output an RCS format diff." -msgstr "-n --rcs Eligi diferencaron en RCS-formo." - -#: src/diff.c:857 -msgid "" -"-y --side-by-side Output in two columns.\n" -" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" -" --left-column Output only the left column of common lines.\n" -" --suppress-common-lines Do not output common lines." -msgstr "" -"-y --side-by-side Eligi en du kolumnoj.\n" -" -W NOM --width=NOM Eligi maksimume NOM (implicite 130) signojn en " -"linio.\n" -" --left-column Eligi nur la maldekstran kolumnon de komunaj linioj.\n" -" --suppress-common-lines Ne eligi komunajn liniojn." - -#: src/diff.c:861 -msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." -msgstr "" -"-D NOMO --ifdef=NOMO Eligi kunfanditan dosieron por montri '#ifdef NOMO'-" -"diferencojn." - -#: src/diff.c:862 -msgid "" -"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." -msgstr "" -"--GTYPE-group-format=GFMT Simile, sed montri GTYPE-enig-grupojn per GFMT." - -#: src/diff.c:863 -msgid "--line-format=LFMT Similar, but format all input lines with LFMT." -msgstr "--line-format=LFMT Simile, sed montri iujn enigliniojn per LFMT." - -#: src/diff.c:864 -msgid "" -"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." -msgstr "" -"--LTYPE-line-format=LFMT Simile, sed montri LTYPE-enig-grupojn per LFMT." - -#: src/diff.c:865 -msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." -msgstr "" -" LTYPE estas 'old', 'new' a 'unchanged'. GTYPE estas LTYPE a 'changed'." - -#: src/diff.c:866 -msgid "" -" GFMT may contain:\n" -" %< lines from FILE1\n" -" %> lines from FILE2\n" -" %= lines common to FILE1 and FILE2\n" -" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" -" LETTERs are as follows for new group, lower case for old group:\n" -" F first line number\n" -" L last line number\n" -" N number of lines = L-F+1\n" -" E F-1\n" -" M L+1" -msgstr "" -" GFMT povas enhavi:\n" -" %< linioj el DOSIERO1\n" -" %> linioj el DOSIERO2\n" -" %= linioj komunaj al DOSIERO1 kaj DOSIERO2\n" -" %[-][LARO][.[PREC]]{doxX}LITERO printf-stila specifo por LITERO\n" -" LITEROJ estas jenaj por nova grupo, minuskle por malnova grupo:\n" -" F unua lininumero\n" -" L lasta lininumero\n" -" N nombro de linioj = L-F+1\n" -" E F-1\n" -" M L+1" - -#: src/diff.c:877 -msgid "" -" LFMT may contain:\n" -" %L contents of line\n" -" %l contents of line, excluding any trailing newline\n" -" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" -msgstr "" -" LFMT povas enhavi:\n" -" %L enhavo de linio\n" -" %l enhavo linio, sen eventuala linifino\n" -" %[-][LARO][.[PREC]]{doxX}n printf-stila specifo de lininumero" - -#: src/diff.c:881 -msgid "" -" Either GFMT or LFMT may contain:\n" -" %% %\n" -" %c'C' the single character C\n" -" %c'\\OOO' the character with octal code OOO" -msgstr "" -" Kaj GFMT kaj LFMT povas enhavi:\n" -" %% %\n" -" %c'C' la unuopa signo C\n" -" %c'\\000' la signo kun okuma kodo OOO" - -#: src/diff.c:886 -msgid "-l --paginate Pass the output through `pr' to paginate it." -msgstr "-l --paginate Pasigi la eligon tra 'pr' por enpaigi in." - -#: src/diff.c:887 src/sdiff.c:198 -msgid "-t --expand-tabs Expand tabs to spaces in output." -msgstr "-t --expand-tabs Konverti TABojn al spacetoj en la eligo." - -#: src/diff.c:888 src/diff3.c:452 -msgid "-T --initial-tab Make tabs line up by prepending a tab." -msgstr "-T --initial-tab ustigi TABojn per antametado de spaceto." - -#: src/diff.c:890 -msgid "-r --recursive Recursively compare any subdirectories found." -msgstr "-r --recursive Rekurse kompari trovitajn subdosierujojn." - -#: src/diff.c:891 -msgid "-N --new-file Treat absent files as empty." -msgstr "-N --new-file Trakti mankantajn dosierojn kiel malplenajn." - -#: src/diff.c:892 -msgid "--unidirectional-new-file Treat absent first files as empty." -msgstr "" -"--unidirectional-new-file Trakti mankantajn unuajn dosierojn kiel " -"malplenajn." - -#: src/diff.c:893 -msgid "-s --report-identical-files Report when two files are the same." -msgstr "-s --report-identical-files Raporti, kiam du dosieroj estas samaj." - -#: src/diff.c:894 -msgid "-x PAT --exclude=PAT Exclude files that match PAT." -msgstr "-x AB --exclude=AB Ignori dosierojn, kiuj kongruas kun ABlono." - -#: src/diff.c:895 -msgid "" -"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." -msgstr "" -"-X DOS --exclude-from=DOS Ignori dosierojn, kiuj kongruas kun iu ablono " -"en DOSiero." - -#: src/diff.c:896 -msgid "" -"-S FILE --starting-file=FILE Start with FILE when comparing directories." -msgstr "" -"-S DOS --starting-file=DOS Komenci per DOSiero, komparante dosierujojn." - -#: src/diff.c:897 -msgid "" -"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." -msgstr "" -"--from-file=DOS1 Kompari DOS1 kun iuj argumentoj. DOS1 povas esti " -"dosierujo." - -#: src/diff.c:898 -msgid "" -"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." -msgstr "" -"--to-file=DOS2 Kompari iujn argumentoj kun DOS2. DOS2 povas esti " -"dosierujo." - -#: src/diff.c:900 -msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." -msgstr "" -"--horizon-lines=NOM Gardi NOM liniojn de la komuna prefikso kaj sufikso." - -#: src/diff.c:901 src/sdiff.c:200 -msgid "-d --minimal Try hard to find a smaller set of changes." -msgstr "-d --minimal Pene seri malpli grandan aron da anoj." - -#: src/diff.c:902 -msgid "" -"--speed-large-files Assume large files and many scattered small changes." -msgstr "" -"--speed-large-files Atendi grandajn dosierojn kaj multajn disajn anetojn." - -#: src/diff.c:907 -msgid "" -"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." -msgstr "" -"DOSIEROJ estas 'DOSIERO1 DOSIERO2' a 'DOSIERUJO1 DOSIERUJO2' a DOSIERUJO " -"DOSIERO...' a 'DOSIERO... DOSIERUJO'." - -#: src/diff.c:908 -msgid "" -"If --from-file or --to-file is given, there are no restrictions on FILES." -msgstr "" -"Se --from-file a --to-file estas donita, ne estas limigoj de DOSIEROJ." - -#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 -msgid "If a FILE is `-', read standard input." -msgstr "Se DOSIERO estas '-', legi la normalan enigon." - -#: src/diff.c:920 -#, c-format -msgid "Usage: %s [OPTION]... FILES\n" -msgstr "Uzado: %s [OPCIO]... DOSIEROJ\n" - -#: src/diff.c:949 -#, c-format -msgid "conflicting %s option value `%s'" -msgstr "malkongrua valoro de opcio %s: '%s'" - -#: src/diff.c:962 -msgid "conflicting output style options" -msgstr "malkongruaj opcioj pri eligostilo" - -#: src/diff.c:976 -msgid "regular empty file" -msgstr "normala malplena dosiero" - -#: src/diff.c:976 -msgid "regular file" -msgstr "normala dosiero" - -#: src/diff.c:978 -msgid "directory" -msgstr "dosierujo" - -#: src/diff.c:981 -msgid "block special file" -msgstr "blokaparatdosiero" - -#: src/diff.c:984 -msgid "character special file" -msgstr "signoaparatdosiero" - -#: src/diff.c:987 -msgid "fifo" -msgstr "fifo" - -#: src/diff.c:991 -msgid "socket" -msgstr "konektilo" - -#: src/diff.c:994 -msgid "message queue" -msgstr "mesaovico" - -#: src/diff.c:997 -msgid "semaphore" -msgstr "semaforo" - -#: src/diff.c:1000 -msgid "shared memory object" -msgstr "komuna memoro" - -#: src/diff.c:1003 -msgid "typed memory object" -msgstr "tipita memora objekto" - -#: src/diff.c:1006 -msgid "weird file" -msgstr "stranga dosiero" - -#: src/diff.c:1070 src/diff.c:1256 -#, c-format -msgid "Only in %s: %s\n" -msgstr "Nur en %s: %s\n" - -#: src/diff.c:1193 -msgid "cannot compare `-' to a directory" -msgstr "ne povas kompari '-' kun dosierujo" - -#: src/diff.c:1220 -msgid "-D option not supported with directories" -msgstr "opcio -D ne eblas kun dosierujoj" - -#: src/diff.c:1229 -#, c-format -msgid "Common subdirectories: %s and %s\n" -msgstr "Komunaj subdosierujoj: %s kaj %s\n" - -#: src/diff.c:1266 -#, c-format -msgid "File %s is a %s while file %s is a %s\n" -msgstr "Dosiero %s estas %s, dum dosiero %s estas %s\n" - -#: src/diff.c:1345 -#, c-format -msgid "Files %s and %s are identical\n" -msgstr "Dosieroj %s kaj %s estas samaj\n" - -#: src/diff3.c:26 -msgid "Written by Randy Smith." -msgstr "Verkite de Randy Smith." - -#: src/diff3.c:328 -msgid "incompatible options" -msgstr "malkongruaj opcioj" - -#: src/diff3.c:368 -msgid "`-' specified for more than one input file" -msgstr "'-' donita por pli ol unu enigdosiero" - -#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 -#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 -msgid "read failed" -msgstr "legeraro" - -#: src/diff3.c:441 -msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." -msgstr "" -"-e --ed Eligi nekunfanditajn anojn de OLDFILE al YOURFILE en MYFILE." - -#: src/diff3.c:442 -msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." -msgstr "" -"-E --show-overlap Eligi nekunfanditajn anojn, kun konfliktoj en " -"parentezoj." - -#: src/diff3.c:443 -msgid "-A --show-all Output all changes, bracketing conflicts." -msgstr "-A --show-all Eligi iujn anojn, kun konfliktoj en parentezoj." - -#: src/diff3.c:444 -msgid "-x --overlap-only Output overlapping changes." -msgstr "-x --overlap-only Eligi interkovriantajn anojn." - -#: src/diff3.c:445 -msgid "-X Output overlapping changes, bracketing them." -msgstr "-X Eligi interkovriantajn anojn, en parentezoj." - -#: src/diff3.c:446 -msgid "-3 --easy-only Output unmerged nonoverlapping changes." -msgstr "-3 --easy-only Eligi nekunfanditajn neinterkovriantajn anojn." - -#: src/diff3.c:448 -msgid "-m --merge Output merged file instead of ed script (default -A)." -msgstr "" -"-m --merge Eligi kunfanditan dosieron anstata ed-programeto (implicite -" -"A)." - -#: src/diff3.c:449 -msgid "-L LABEL --label=LABEL Use LABEL instead of file name." -msgstr "-L ETIK --label=ETIK Uzi ETIKedon anstata la dosiernomo." - -#: src/diff3.c:450 -msgid "-i Append `w' and `q' commands to ed scripts." -msgstr "-i Aldoni la komandojn 'w' kaj 'q' al ed-programetoj." - -#: src/diff3.c:453 src/sdiff.c:202 -msgid "--diff-program=PROGRAM Use PROGRAM to compare files." -msgstr "--diff-program=PROGRAMO Uzi PROGRAMOn por kompari dosierojn." - -#: src/diff3.c:465 -#, c-format -msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" -msgstr "Uzado: %s [OPCIO]... MYFILE OLDFILE YOURFILE\n" - -#: src/diff3.c:467 -msgid "Compare three files line by line." -msgstr "Kompari tri dosierojn linion post linio." - -#: src/diff3.c:673 -msgid "internal error: screwup in format of diff blocks" -msgstr "interna eraro: fuo en formato de diff-blokoj" - -#: src/diff3.c:971 -#, c-format -msgid "%s: diff failed: " -msgstr "%s: diff malsukcesis: " - -#: src/diff3.c:993 -msgid "internal error: invalid diff type in process_diff" -msgstr "interna eraro: nevalida diff-speco en process_diff" - -#: src/diff3.c:1018 -msgid "invalid diff format; invalid change separator" -msgstr "nevalida diff-formato; nevalida an-apartigilo" - -#: src/diff3.c:1242 -msgid "invalid diff format; incomplete last line" -msgstr "nevalida diff-formato; malkompleta lasta linio" - -#: src/diff3.c:1265 src/sdiff.c:273 -#, c-format -msgid "subsidiary program `%s' not executable" -msgstr "subprogramo '%s' ne rulebla" - -#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 -#, c-format -msgid "subsidiary program `%s' not found" -msgstr "subprogramo '%s' ne trovita" - -#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 -#, c-format -msgid "subsidiary program `%s' failed" -msgstr "subprogramo '%s' malsukcesis" - -#: src/diff3.c:1294 -msgid "invalid diff format; incorrect leading line chars" -msgstr "nevalida diff-formato; malusta signo en antaa linio" - -#: src/diff3.c:1370 -msgid "internal error: invalid diff type passed to output" -msgstr "interna eraro: nevalida diff-speco donita al eligo" - -#: src/diff3.c:1647 src/diff3.c:1704 -msgid "input file shrank" -msgstr "enigdosiero rumpis" - -#: src/dir.c:162 -#, c-format -msgid "cannot compare file names `%s' and `%s'" -msgstr "ne povas kompari dosiernomojn '%s' kaj '%s'" - -#: src/sdiff.c:35 -msgid "Written by Thomas Lord." -msgstr "Verkite de Thomas Lord." - -#: src/sdiff.c:183 -msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." -msgstr "-o DOS --output=DOS Funkcii interage, sendante eligon al DOSiero." - -#: src/sdiff.c:185 -msgid "-i --ignore-case Consider upper- and lower-case to be the same." -msgstr "-i --ignore-case Trakti majusklojn kaj minusklojn kiel samajn." - -#: src/sdiff.c:188 -msgid "-W --ignore-all-space Ignore all white space." -msgstr "-W --ignore-all-space Ignori ian blankan spacon." - -#: src/sdiff.c:194 -msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." -msgstr "" -"-w NOM --width=NOM Eligi maksimume NOM (implicite 130) signojn en linio." - -#: src/sdiff.c:195 -msgid "-l --left-column Output only the left column of common lines." -msgstr "" -"-l --left-column Montri nur la maldekstran kolumnon de komunaj linioj." - -#: src/sdiff.c:196 -msgid "-s --suppress-common-lines Do not output common lines." -msgstr "-s --suppress-common-lines Ne eligi komunajn liniojn." - -#: src/sdiff.c:201 -msgid "" -"-H --speed-large-files Assume large files and many scattered small changes." -msgstr "" -"-H --speed-large-files Atendi grandajn dosierojn kaj multajn disajn " -"anetojn." - -#: src/sdiff.c:214 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 FILE2\n" -msgstr "Uzado: %s [OPCIO]... DOSIERO1 DOSIERO2\n" - -#: src/sdiff.c:215 -msgid "Side-by-side merge of file differences." -msgstr "eflanka kunfando de dosierodiferencoj." - -#: src/sdiff.c:327 -msgid "cannot interactively merge standard input" -msgstr "ne povas interage kunfandi la normalan enigon" - -#: src/sdiff.c:588 -msgid "both files to be compared are directories" -msgstr "amba komparendaj dosieroj estas dosierujoj" - -#: src/sdiff.c:853 -msgid "" -"ed:\tEdit then use both versions, each decorated with a header.\n" -"eb:\tEdit then use both versions.\n" -"el:\tEdit then use the left version.\n" -"er:\tEdit then use the right version.\n" -"e:\tEdit a new version.\n" -"l:\tUse the left version.\n" -"r:\tUse the right version.\n" -"s:\tSilently include common lines.\n" -"v:\tVerbosely include common lines.\n" -"q:\tQuit.\n" -msgstr "" -"ed:\tredakti kaj uzi amba versiojn, iu kun apao\n" -"eb:\tredakti kaj uzi amba versiojn\n" -"el:\tredakti kaj uzi maldekstran version\n" -"er:\tredakti kaj uzi dekstran version\n" -"e:\tredakti novan version\n" -"l:\tuzi maldekstran version\n" -"r:\tuzi dekstran version\n" -"s:\tsilente transpreni komunajn liniojn\n" -"v:\tlate transpreni komunajn liniojn\n" -"q:\tfini\n" diff --git a/src/bin/diffutils/po/es.gmo b/src/bin/diffutils/po/es.gmo deleted file mode 100644 index 6035981d85ef2334d40b4a49c69e1d7e1e7fc141..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25106 zcmb`P4RBo7b>E+AJF#FVwq;wE?byDOO@WlKAV5hL1&OvG5F}yYg91QNG)V~$yAQyV z7W<%myCfmii9eFIaT2?3<2Y_o*Kuk)P3$&b?j%i{CT*rkGvhj)G;Jo+WUNl()@|Ly zRi^EzpTGaP_q~0)Sdf$_JG}Vsd-wa?bIv{Y+_U`nOK^Hz~M$s#p z{`IRS!0(QtS4~FI4Ljh^^89zB=ry;3C&1qU=c4GQH-K*gV~{#GeE@t7`19Z!LA5JX ze`DbP1m6-xuRQ>gUOVI8zcvMHJpTyjK-Ie){9};zU-!y@v=PnoOp4wEeiEeK>;64> zPZYiWCh#D53Z%^Ip9bmw^}h-p2Y(-YcNE>s7@~*3i~jx1p9bmYX7$Is-taQ;7`Oz| z&l`RyJgffED7xil@IFxa%;A>r2cgR?Uk2&_jjsbA1ZhM4yb)SP3*fJV4@c3PUIo(5 zo6dvG=}kWj($AZePrGk^C3qO5P0{tumq6;h`SajAz~{k}EZr^OA#ja#dKCOH&(wd* zbKqO~_hyiCZ=C|C!4HBDfTHg>Q@#OY{BNTVjpJ<{5c<6BCqT-*P3_FGB($Y@xCVFt z)HtBG(|j4@tuFy-?^fmzy$jq8_)8%D-ugd4=6f4si|zv3;M>8^fz0!^-v$}yZ7=xe zx6@a2H$_zLYoPjL4Da{|cq{ltkh#6%E8+P+gRI|y?*Li912yn=@G?lf1D^un)dT-1 zFz1x2agzmS06@#UF11$%|eM9syqt zLQC=6=sZZjqZ{C>!0!W@@94)t)%#^|lz;yU{5kM{gYe2hWK8c5{ul7uS=!fuUk4de z1aIH*Z6Nf&gFYhi?qIDno;y|psy{tz90Z3bS{0Yc<-AS2f1-u_* zE_Z6)LeYB?{Kp{m@BAhRUyo@#cYxw+#xu4B!hd7Wf~?EfXF{})K#hXKv+@asXwcbL8+Xn*(|NZW^h z5QM&mwa(D{@b81H<6+U4aZcOU0eE!5|K>C~bRgm?Z_?IBOH1Y31+MD=O z@HVQx0)+mP&`$Z2t03<{FvUZbS1iusfMG$&S{! znfzVwcJRM}w=yNsi*X;hAABu%790Ve0%`vU`rroS@5qOE-bJK-nddLC#K_hSw0qB2 zdC%P5sc~P3qI(k%THX6kKI39MyU<&!gxN(edchAmcjv84$W1{q^u( zat8hGgNHQE`xZg?;l3Tvfj<`TAA)V3{}3c^>NI!+R6DcapMi|^{weS>D7rEK`@aUB zMD;-1=wsj+5S{bDe*iySsX4KKELXHs>Az zq0`(~K<4+Jmw=4rJKB4PI$H>!8+wb$M9yfrsWMS@4z8_S+=&9#l z0uO>;1@DZaGdF_24c-G%=TSg(eDnl30)8*Znm_tc@Rle#``sY*&wc`AZfAcDd>tsd z37-d{&0{YIUk$z$oCFVpwEtKPQvb2fhv(k`m!s(1%^>ZcO9P6(;Hh(3Z^nJ@Ux2i8 z?!SXaqv*Y~q4~a7?J@TEz7Mv&%Dhfe4Jna{s) z1ITv4_a z9iZyn2L2fczdfPxoB~NI|HQ{Y%02O0ApJd|c4>1>Vs{4T((9>V9Q zfbRvDikAW34Sr$Z-QVK*G14mOF4DuKpCPT0evy=s=13nQ{biCquOMxc#LN18k@P*J zcaYvg(&s4;(Feenlg3C1>7}F*lK6X$p?lcd{Dlioslg!CPx1EdX-KIlKmnDnT0Q}hd@;&X&Ahe)3z-AF*`sn6Q`}I5y$7i0h0e#ADtO>jyf(+Tbs?q)wkkyT<_4vOi|*(($Z2W)XTk0M=q;( z;wEi35=WWH`F{8I_keTFw3Xy;qn&NL6La&klfLnH?a4UeGmaG*^=x}PYq?J5tGT$< zuy3K<`P#+vXXlQup1OE`{QT+V*_n$MpKWAU9(&*X?CR?5vU5A_wAI6axi$I#p!8a|1#`7Flg8*cd{mV46_j7*(#*5eh2r}xUkbEhZW`fdjf zgM!9i#wg1M!K<)w5KeWXO@~-^JU~3`I^UpyD~N5K^3N~Iky1~ zlg5;@H)*q(Y$7PxPA7$zYc+SE?#rgFOK~%849N*)*ACPVUC3$PK<6^NUQ-fDG zyW1?UZ>B6vQ3e%nucw>ctZOrvDjHu?L+#}0ZrX-U`?gW5y@(ELXPNzV4=W2cvwPA*TQ49=jHiU(9BN^?irYy&3DRZDuerYGy5 zR_kQ`X+1-WODm=uY0{_`Jm#gy&4i}>BW=Tia8%Mp5$8y%e_w~4)@dB(XNfvldsn?~ zCCwe@mbx7&g3cD}t~ZvGwbN&^mJu*Nws?jqJe(vuPTxdSlVeG5Q2#saWFx&|gU`Dg zd{raqW-Dt$f2LJy#oI~El(U<&*IrX!-bz}58q#P+0Tnf(T;J+xzCBeouy(C%zfsI& ztvqcMJH}PV!7R4X4h5lN7hY(oHBZ(jY1H7*O+VS(x#>Jd{Mk`>=U3Tivn~Cd*W(WR zHzJbLEZeiGRhx0%X{S52Lc!PSZB(gV^>ltcZnx8zM%ziJ+ip43l}%pb2ux#~am1CJ zQDul?pFR>e;|R+zj5E5e)N=~@FmBe^1w22x)pio2=GJp`TTtD`#M+pX?VXPJ>MrMM zwIt4WYgwy_-~{8Nh#ydM&^xpiZRWaYnF4r{XqF#kYr~r(gr;?7< z%UT=FwB8Zr9#YM~Z|lvt^_1saS2CNYvAevLA&H)Y&77bgD^DB8-Qx5D`#244G?I;D z{wWMT4BZ$MA=4n;+S{$5RYS+Z4I0YvLZ7#?j?23{J6XHKq)j^&(w8QARP$YV8R^99 zwdBf93{SG6gQISA6D=HtFa<&(da?$LT!EY=$x2cO+U`rYQ%3PWFaDi#%hgGt!RuSB zRL~;ID`bDzaqo**OQV~V*krq+HveX$|da3YAJsfVJh3F0xy zp*1DSZ)co&FbSm2r563#i?Sw#4Gm-)uC@(u6*GwAXG6+pBjunM`z?%JG*4{#!n(2` zFfi;!{h&bEW_Zf$>}KMS!R$eeF?aqnPvOV`e$z8oW9des&0bf_vS^p zv7>sEcFp!(I~#iQgUT2}ntG0%F|>t3NyVrdfA&aPb@T?zYKo>fx%tY|bOR~YE{|GQ zYfq1wQ6%$AbSfvUy&-iv3RQ+2^u;m%ddRV_5*yC~e3 zY;=%`W_O#dB`k;S%%Xxa8L(v{f5D!!9g+cC{hfFd6Bq^LPRBWuqE=SejGVnUx7^xJ zdsLGxOQu?5tIS5fu06NtSOObP(>mld90#nfw?i*62XpZx%s(;IaA}NRgQ(n!orqfl(hKQh2rsk4|U*a z613`)EO2HDxAFx6zLYd~#}E^*`V0E`+6?h&wXoh!lZ|qawnS_>(7PQptfvmeF$|ee zQt!5NTGrVle8t{k3GHxUwq|#|vP&`HZmU6cC{e3%&_rnYl4GDF{snQcTeNH6?{?D! zCrWZ9#g6I3oi0W{_FPe&eGJQ{h7H~7q;>W@zX>oDz4v=%=du)q?YW$GDne%ika5IO zH-|UnLn=(R;~5qr+QhTi07Ke<%?N5}lck+mSwyHLJ-~vt-I%QU1{m%oO%guzw$+kv zw|Gul8yRITt4z=%*Ruy-c6KPL)h?%v&XzwRg_a9G>DzB6@0vIi#4LC4hACV6y`p}@ zHr{V8582zT{OM_9(Xf*rv&Vh+aB``H4X#ygB1eF1*GF2`=(FF5TS8q0r03dmNiRRTit{nM+o7=!Iu5ysvzZmZ~Ra zvbU4XE{A#@!=$-5td)guxNs~-zxUqkExeFy<9ng{R@~+E(ufu_Z*l2M@aH-dh%Ab5 zu2Bx1T}ts6GTA--FX@bp9Lu#SEd+!>%_wLED zqpB@V&oi;0E(cb}-03klJLcXy=Fa&MPg)UgI*EBTOn(s|a@(G6n~40^(9~>e2^O`h z>eHJeVS%bPBIUYuY{fiUl{+o?0ktJ3!85hEc3JjDDiOm0Dwi9_mEeHu^)bTE&bFfFusF6$2i?iVGwx*4!U$=) z)7^E}z|E(a`*|`xasnd3kFrv{TUE}7c%6+??O?RQNHm7WJxA%OX;U(ir-qwZI(=?# z@#J{4THHrS9CIXYi&wjD4VB|vjH9+1gB^`WXIf9SvdgICT|{BqCGB?B=B1rJ>ENJL zt%b zOC~)Wxp?v7)hey*m+8+bt~kdOhnSJ*EIwowU7~WD1F4(c+)UaX_&>#Ga4P0|(j0Tg z<4asVoQijod~9TygP(LIUWsNCPoih{c^X;O)z^5n&1EEE*R8-#TYc|Wx3XW8FU8?w%*+@6CC~X;6b<*|9lJxi%FEP^e6va@YxY50an}V}hV&qyD zm+S2Ah}X4MXy153FR!D<4u%bD#RlT}Vow!3Ey-nEjx-&v%-F81N0X+U3VswEJMCh& z!gjr^a3Tu61%Foe1SrY`UmNS)+C(HxP>MY3&i8&l0}-*LEP5C1@aC%5zaKe@zsxn9voFm#}`>zIg;V<9tE<}aN;CDl_lKowERN8U6X7O6E zcx5Uv$L`xOlZ-ECk;&{YCG1Y}q9n`fQ&5`ZW;cbUV}R zYIBVm@+^aV%E{yrdzi`Uj*QsVaWcDu#b zN@X~A|PpQW$t$uD^W?y+(IVd%Do=f)90m|QQ;eSH`xVzpHVYo}UDEJS2TeyE6AB4(-e0yahl zP0*Vf3Qw^olvTITrM@yRaM;@JFT$l*rHCh1e+biTHGrutsf4)-7oU zYPoBC2I!=rA$je%5hFG}RD=Ore3UyF*6UD+lyV1cnK`FaNU9E)P%FcWV16r$vl63VnJRh*;Aq`f4k0azLUg#(I6x(t+WwJO&F1qV@G9Fe z`NC9F_*EtDs>o>N9rr>n_A2vHN7V}KWDL#6U&TYS zEyhW{t?tzt@FeHLEH6&#`F5sWKa9Vb%$*Y^oR;Bw~Rtey^vm|M|C(D+%=Db1HYW^Cpk=NCd7B~ zSL!-LS6P%-s+)qL5nk*WXHYrmGjS2-HSM)O0xtcIzn{i7IKe|PZUQ;aY{hivBfIKI zIu{t)k*ls(Qx2u`m7YtlESF4vb1b5KDjS|=*I~#|h7=Ah^tlf~%9gyA*A@on7pF%* zV;?8Bz%`xDLHvzfyxWDDWQL-tnYIWMjO-BZvG@n}N;_FP0p}mP5x>WyNd9s>x|#TAKE&)2+;EXfMp$KJ_lf zei41><@G9)F2de0u^U|iQj9G)vHJH~s3C!GD;PU0H|M23BHGqLNF+W=ExPC%_Cw_i zA2fbh2}_2DVuz^M8jb_Nvg^+0=K(A<_ zr*6WcV&-xBX=}YRzu3W%MXM&QLq?7J3GGOTIQ{G!&ezicv{Z0Vy}R2JIN2y(3N`Uq ztr6I_wD8dKEYlB>ef}}{#l_e`GfN>z(=%#Oc{^yl!cq@nGyqjqB*qvm!UCtAYPr9kQ32Vqy z_xf21EU+l8aG2|laNMIU`c;Iux}paZ^Jq%Wm}4O9F=Wi(&d2A^d6WBaQA3s{f^#_;H*jNd-r$B=TQ3yBjv%h2#h{SQZcB#P zK4Fu+MHFu;9E4Ms6u#no>#9inN=g%WmJ@0tuUg;N=iWgfk?_gHw(nr9oYLc zwLX@(E{2Mmn_c!Xf72{4MB(g%7s84#roM1Y@j*`)7uKdXWN+4eFKiXhMzFYu~7JRr1~ zI0SyW`*jNm6{E~ZaM*xxLCIcc1o|WIgAL?FsgX4?mSl#|G(-kq+MmK4rf0!CGVd->+VxzY6rMKtIor1Z7JxUVv{4?I}A+*B;KS)@Od-}PPXO{XHeAlg>sTE3*0WQoHPxP~Y zKq|i$!tpB$ZXeryXzi;=z7K+9m7Y;#WE-KWm;vl~;dr_?Bvu89CN@VE3b-9#`nnxC))WDYerFERQKc z{1JM1aCUoiwnZ11kEZC8{;Q$6bA<2KS!{7lp7tNn{FY^I3HzZdwi~qvBXzN?j3v;b z7QE{RTv^^~fTA6`h6n2|Lat!Sb6$xF(b1S-T9jnCb%ARzcH*@0bvFHaZ#dXW763O8x?364P}$ipdUvnshvu)CZl!!Nlm2MlIUl*C z9f3j?Gr$hm=aJJzSx){F?RokY{OUE$dG0jb1`-T-? zgKy`n@(?`1b|JF6=T>Bd0Ki_zy^+njw{SESFT#xDo`iYRsyF8lY^<$>{kIgveT(&p ztL+?WOJ5XqY^rmm;)hxb?-UGYnTk4gYs41M&a5si&vCER`+j5;y7lE2wR~{0D_T>C zU9TEZ%Cm~p^1AeZ1WbyFFFIGUMS3?D%DIv^67><99HXyn#Zm$7Q>O2@z#8DW(l4}G z@zQ6`EJ`=unEWtX7FcPK%N!A9>cBV!y%g}N5r=1u-y)cU0|$L!zsatnc$-`uz=t+1 zy2Mw85{$^=o$;fN!m-V+=5N2Enc}(~EvJxX1(sM=)|bV31Kn3gI> zo6e5MjA^V119ta`TOnMh}Cp+!3}apa0!qH7Eb?(%!>@2Oo5*utDsZV5Is_T5+^ z%%ZmL=X9nGhhYr+v@eglJ9LAOETF&Yjj-*^ejFuV4K};?sLXUQ1EQ5+C z3F?+t>wBt4^Q`8cNkYB`74uYHLhsU+z(Rb+&OH%Zf*f-D22P8|3%kyn$mR{SOKTd) z3C%X2p6LV1Dwe>`TYU9*B_q9XYV(u$FzWFlj(WTdq}D6{nn3Dt0;$K#Kf^WiX=J-$D~;>g{kzAtK$oK{pf5Ts!bAwg~=e zHEJi)pd9R{71F786U+^V=}i3`P2LB86zO+D=-5*zMb##h*+>@65=P7wx&7A**a8rZ zPC3~v5~h4+aoU}nR@n8Ir^jGM-C;E{t|LO!wTW;u*&QF@^cfbU7j>P=PrIYLCMqD{ zm2TGKC%uci^L3)P!(~G=9^|j2YOkWOm2T7PiH5W!&{c+-S)3#psbkM)z5E8^?fe?NqUbC>E)q;m*;tT{_*~od352~{x{Kr zE>cB6g#l(ofcA{SZ+w8Z?MA(AY2>;@e6}Ws5intc-yVbv}8(nf~~f&7Q`Vk5!g41SAM(oyAa{4n8A4@ zySUHtk#VeD#ygtA#jZCD*wwfR#19;?|1lbW|AJ+xArQgIU}R-5h@P*yT2zkwP*&Ym zE=`LOB5dX+QJi?SkHV`octW-QhFA?lr`$7`BMTu%%q2%f--Uw==|Z{6#Oy5*I>2AR zBjmR0sAC^=ehITq!_`TxXU_yvNJ@eAR}>XJ1?Pr{*{dGsk@&?dC(7Vl=P=ZlT_L9a zuO)pHh_1K+?!FX;L)Ug@QzK)3Uyy;|gVE7xepNvJ3kWV0V+%*WRznt&zNZj0DUOGw zhsOfbuU3)>_=Kn|%K71k@oS9UItfjVk2FI8UE~b!iV#uz43sFlAo9vSb1eeab$aWM zX|!MI>Mp~348{pzziN3##t*NH!cT|7E4Zl$>SyKTClbe4Y`ZbSnu6L#dy86)Ue2S+ zR@9SF$u%Aq{F>|y7P8ESq-b~4yInU>)I36k)hG^Si|&QGUsolf-L>^q9BqT0ZSb2I zV}A|P0+NhzC9OeW*f=6D14YbxIVzifk=O6XEDhcuEm>1Majdg`$X}s}QJ4 z|9x}6KRD5Cm!^(%3i0r$x!!;WD)c1Z%3D-CQ$iC`83X4TKT8NBX1Pj3J|rGahRB1Vh^AmJ5Dj*4gS$W z`;=+~=jg6t=cQ-{xKBn`VWps8L&TqVtjcr>3?aQ$n1E7)O*DTOGfDjMe5qWEt2B#^ z7xtnWRW80*~o1|{Ctgx`fUJnD~r~AK>cXMjMn)*Rct3)E4@R&cNBD{Hc=f1 zB|pW$Fyup&ed={^7~WNjFlmk+3DNE$$lh-=LHR!~Q*qz+8KXb3pl?fJGcEojC3Z`h f!sTu, 1996. -# Santiago Vila Doncel , 2001, 2002. -# -msgid "" -msgstr "" -"Project-Id-Version: GNU diffutils 2.7.10\n" -"POT-Creation-Date: 2002-04-05 14:10-0800\n" -"PO-Revision-Date: 2002-03-17 19:06+0100\n" -"Last-Translator: Santiago Vila Doncel \n" -"Language-Team: Spanish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8-bit\n" - -#: lib/c-stack.c:188 -msgid "program error" -msgstr "error del programa" - -#: lib/c-stack.c:189 -msgid "stack overflow" -msgstr "desbordamiento de pila" - -#: lib/error.c:128 lib/error.c:156 -msgid "Unknown system error" -msgstr "Error del sistema desconocido" - -#: lib/freesoft.c:27 -msgid "" -"This program comes with NO WARRANTY, to the extent permitted by law.\n" -"You may redistribute copies of this program\n" -"under the terms of the GNU General Public License.\n" -"For more information about these matters, see the file named COPYING." -msgstr "" -"Este programa viene sin NINGUNA GARANTA, hasta donde permite la ley.\n" -"Se pueden redistribuir copias de este programa bajo los trminos de la\n" -"Licencia Pblica General de GNU.\n" -"Para ms informacin sobre esto, vea el fichero llamado COPYING." - -#: lib/getopt.c:693 -#, c-format -msgid "%s: option `%s' is ambiguous\n" -msgstr "%s: la opcin `%s' es ambigua\n" - -#: lib/getopt.c:718 -#, c-format -msgid "%s: option `--%s' doesn't allow an argument\n" -msgstr "%s: la opcin `--%s' no admite ningn argumento\n" - -#: lib/getopt.c:723 -#, c-format -msgid "%s: option `%c%s' doesn't allow an argument\n" -msgstr "%s: la opcin `%c%s' no admite ningn argumento\n" - -#: lib/getopt.c:741 lib/getopt.c:914 -#, c-format -msgid "%s: option `%s' requires an argument\n" -msgstr "%s: la opcin `%s' requiere un argumento\n" - -#: lib/getopt.c:770 -#, c-format -msgid "%s: unrecognized option `--%s'\n" -msgstr "%s: opcin no reconocida `--%s'\n" - -#: lib/getopt.c:774 -#, c-format -msgid "%s: unrecognized option `%c%s'\n" -msgstr "%s: opcin no reconocida `%c%s'\n" - -#: lib/getopt.c:800 -#, c-format -msgid "%s: illegal option -- %c\n" -msgstr "%s: opcin ilegal -- %c\n" - -#: lib/getopt.c:803 -#, c-format -msgid "%s: invalid option -- %c\n" -msgstr "%s: opcin invlida -- %c\n" - -#: lib/getopt.c:833 lib/getopt.c:963 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "%s: la opcin requiere un argumento -- %c\n" - -#: lib/getopt.c:880 -#, c-format -msgid "%s: option `-W %s' is ambiguous\n" -msgstr "%s: la opcin `-W %s' es ambigua\n" - -#: lib/getopt.c:898 -#, c-format -msgid "%s: option `-W %s' doesn't allow an argument\n" -msgstr "%s: la opcin `-W %s' no admite ningn argumento\n" - -#: lib/regex.c:1367 -msgid "Success" -msgstr "Conseguido" - -#: lib/regex.c:1370 -msgid "No match" -msgstr "No hay ninguna coincidencia" - -#: lib/regex.c:1373 -msgid "Invalid regular expression" -msgstr "Expresin regular invlida" - -# Se refiere probablemente a cosas tales como que la c con la h es "ch", -# aunque este ejemplo ya no es vlido, pues la Real Academia dice -# que para propsitos de ordenacin son letras independientes. -#: lib/regex.c:1376 -msgid "Invalid collation character" -msgstr "Carcter de unin invlido" - -#: lib/regex.c:1379 -msgid "Invalid character class name" -msgstr "Carcter de clase invlido" - -#: lib/regex.c:1382 -msgid "Trailing backslash" -msgstr "Barra invertida al final" - -# FIXME -# Retro-referencia es lo mejor que se me ocurre ... claro, que acepto -# sugerencias ;) -# Referencia hacia atrs? sv -# Me suena a cangrejo ;) ... no se ... a ver que opinan Enrique y el resto de -# la gente ... La verdad es que prefiero Retro-referencia a referencia hacia -# atrs (ms que nada es por que es la traduccin que se hace, como por -# ejemplo en backfeed -- retroalimentacin) IPG -# En glibc.1.10.1 : -# # posix/regex.c:946 -# msgid "Invalid back reference" -# msgstr "Referencia hacia atrs no vlida" em -# Si no fuese porque has traducido tu la glibc, te preguntara quien ha sido -# el asesino que ha puesto eso :) Momento que voy a mirar la enciclopedia -# esa que tenemos decorando la estantera ;) ... Ja jaaaa!! :) Palidecers -# ante esta cita! "Diccionario Enciclopdico Espasa-Calpe". Edicin de Dios -# sabe cuando (la dcima, creo), volumen 15, pgina 8846, tercera columna, -# tal que a la mitad: -# -# retrocontrol. (De retro- y control.) m. Biol. Fenmeno de autocontrol por -# el cual la excesiva acumulacin de una hormona en la sangre acta sobre -# la glndula corespondiente e inhibe automticamente su produccin. Se -# utiliza mucho internacionalmente la voz inglesa --feed-back-- para expre- -# sar esta idea. -# -# Y mejor ... para rematar :). Misma pgina, primera columna, cuarta entrada: -# -# retro-. (del lat. retro, --hacia atrs--) pref. que lleva a lugar o tiempo -# anterior a la significacin de las voces simples a que se halla unida: -# retro-traer, retro-vender ... -# -# Quiyos!! Hay dos pginas de retro-"algo" ... :) no me digis despus -# de esto que prefers "hacia atrs"! y mxime cuando est aceptado preponer -# retro- para ello :) Si no os importa, y a no ser que venga alguno de la -# RALE y me castre por ello, dejar retro-referencia. -# ipg -# Un comentario: No sern los de la RALE los que hagan eso, sino los -# que no lo entiendan. An despus de ver tus acertadas referencias, pienso -# que referencia hacia atrs se puede entender mejor, pero por supuesto, -# no estoy dispuesto a matar por ello... sv -# :) Gracias, pero por ahora dejar retro-referencia, me parece ms clara -# en cuanto al significado preciso de la frase. ipg -#: lib/regex.c:1385 -msgid "Invalid back reference" -msgstr "Retro-referencia invlida" - -#: lib/regex.c:1388 -msgid "Unmatched [ or [^" -msgstr "[ [^ desemparejados" - -#: lib/regex.c:1391 -msgid "Unmatched ( or \\(" -msgstr "( \\( desemparejado" - -#: lib/regex.c:1394 -msgid "Unmatched \\{" -msgstr "\\{ desemparejado" - -#: lib/regex.c:1397 -msgid "Invalid content of \\{\\}" -msgstr "El contenido de \\{\\} no es vlido" - -#: lib/regex.c:1400 -msgid "Invalid range end" -msgstr "Final de rango invlido" - -#: lib/regex.c:1403 -msgid "Memory exhausted" -msgstr "Memoria agotada" - -#: lib/regex.c:1406 -msgid "Invalid preceding regular expression" -msgstr "Expresin regular precedente invlida" - -#: lib/regex.c:1409 -msgid "Premature end of regular expression" -msgstr "Final prematuro de la expresin regular" - -#: lib/regex.c:1412 -msgid "Regular expression too big" -msgstr "La expresin regular es demasiado grande" - -#: lib/regex.c:1415 -msgid "Unmatched ) or \\)" -msgstr ") \\) desemparejado" - -#: lib/regex.c:8034 -msgid "No previous regular expression" -msgstr "No hay ninguna expresin regular previa" - -#: lib/xmalloc.c:63 -msgid "memory exhausted" -msgstr "memoria agotada" - -#: src/analyze.c:809 src/diff.c:1283 -#, c-format -msgid "Files %s and %s differ\n" -msgstr "Los ficheros %s y %s son distintos\n" - -#: src/analyze.c:812 -#, c-format -msgid "Binary files %s and %s differ\n" -msgstr "Los ficheros binarios %s y %s son distintos\n" - -#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 -msgid "No newline at end of file" -msgstr "No hay ningn carcter de nueva lnea al final del fichero" - -#: src/cmp.c:43 -msgid "Written by Torbjorn Granlund and David MacKenzie." -msgstr "Escrito por Torbjorn Granlund and David MacKenzie." - -#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 -#, c-format -msgid "Try `%s --help' for more information." -msgstr "Pruebe `%s --help' para ms informacin." - -#: src/cmp.c:137 -#, c-format -msgid "invalid --ignore-initial value `%s'" -msgstr "valor --ignore-initial invlido `%s'" - -#: src/cmp.c:146 -msgid "options -l and -s are incompatible" -msgstr "las opciones -l y -s son incompatibles" - -#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 -#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 -#: src/util.c:286 src/util.c:293 -msgid "write failed" -msgstr "la escritura fall" - -#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 -#: src/sdiff.c:179 -msgid "standard output" -msgstr "salida estndar" - -# Muestra como caracteres los bytes que difieran -# queda ms claro, creo yo em -# Yo no le veo diferencia (ser por qu lo par yo? ;) ipg -#: src/cmp.c:160 -msgid "-b --print-bytes Print differing bytes." -msgstr "-b --print-bytes Muestra los bytes que son distintos." - -#: src/cmp.c:161 -msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." -msgstr "" -"-i SALTO --ignore-initial=SALTO Salta los primeros SALTO bytes de\n" -" la entrada." - -#: src/cmp.c:162 -msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" -msgstr "-i SALTO1:SALTO2 --ignore-initial=SALTO1:SALTO2" - -#: src/cmp.c:163 -msgid "" -" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." -msgstr "" -" Salta los primeros SALTO1 bytes del FICHERO1 y los primeros SALTO2 bytes\n" -" del FICHERO2." - -#: src/cmp.c:164 -msgid "-l --verbose Output byte numbers and values of all differing bytes." -msgstr "" -"-l --verbose Muestra los nmeros de byte y valores de todos los bytes que\n" -" difieran." - -#: src/cmp.c:165 -msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." -msgstr "-n LMITE --bytes=LMITE Compara como mximo LMITE bytes." - -#: src/cmp.c:166 -msgid "-s --quiet --silent Output nothing; yield exit status only." -msgstr "-s --quiet --silent No muestra nada, slo da un cdigo de salida." - -#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 -msgid "-v --version Output version info." -msgstr "-v --version Informa de la versin y finaliza." - -#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 -msgid "--help Output this help." -msgstr "--help Muestra esta ayuda y finaliza." - -#: src/cmp.c:177 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" -msgstr "Modo de empleo: %s [OPCIN]... FICHERO1 [FICHERO2 [SALTO1 [SALTO2]]]\n" - -#: src/cmp.c:179 -msgid "Compare two files byte by byte." -msgstr "Compara dos ficheros byte por byte." - -#: src/cmp.c:183 -msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." -msgstr "SALTO1 y SALTO2 son el nmero de bytes que se saltan en cada fichero." - -#: src/cmp.c:184 -msgid "" -"SKIP values may be followed by the following multiplicative suffixes:\n" -"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" -"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." -msgstr "" -"Los valores SALTO pueden estar seguidos por los siguientes sufijos\n" -"multiplicadores:\n" -"kB 1.000, K 1.024, MB 1.000.000, M 1.048.576,\n" -"GB 1.000.000.000, G 1.073.741.824, y as en adelante para T, P, E, Z, Y." - -#: src/cmp.c:187 -msgid "If a FILE is `-' or missing, read standard input." -msgstr "Si un FICHERO es `-' o no se especifica, lee la entrada estndar." - -# Vase "A bug's life". -#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 -msgid "Report bugs to ." -msgstr "Comunicar bichos a ." - -#: src/cmp.c:231 -#, c-format -msgid "invalid --bytes value `%s'" -msgstr "valor --bytes invlido `%s'" - -#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 -#, c-format -msgid "missing operand after `%s'" -msgstr "falta un operando despus de `%s'" - -#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 -#, c-format -msgid "extra operand `%s'" -msgstr "operando extra `%s'" - -#: src/cmp.c:477 -#, c-format -msgid "%s %s differ: byte %s, line %s\n" -msgstr "%s %s son distintos: byte %s, lnea %s\n" - -#: src/cmp.c:495 -#, c-format -msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" -msgstr "%s %s son distintos: el byte %s, en la lnea %s es %3o %s %3o %s\n" - -#: src/cmp.c:543 -#, c-format -msgid "cmp: EOF on %s\n" -msgstr "cmp: fin de fichero encontrado en %s\n" - -#: src/diff.c:41 -msgid "" -"Written by Paul Eggert, Mike Haertel, David Hayes,\n" -"Richard Stallman, and Len Tower." -msgstr "" -"Escrito por Paul Eggert, Mike Haertel, David Hayes,\n" -"Richard Stallman, y Len Tower." - -#: src/diff.c:322 -#, c-format -msgid "invalid context length `%s'" -msgstr "longitud de contexto invlida `%s'" - -#: src/diff.c:405 -msgid "pagination not supported on this host" -msgstr "este sistema no admite paginacin" - -# FIXME -# me sace a mi que esto no se parece ni un pice a lo que -# se quiere decir en realidad. He mirado los docs y no consigo -# encontrarle un buen significado, as que pido ayuda ;) -# Ni p... idea em -# La opcin -L LABEL puedes usarla, una o dos veces, pero no ms. A eso -# se refiere. la opcin de etiqueta de fichero se ha especificado demasiadas -# veces. O ms cortito, dejarlo como est :) em+ -# Me parece que as est bien ... -#: src/diff.c:420 src/diff3.c:315 -msgid "too many file label options" -msgstr "demasiadas opciones de etiqueta de fichero" - -#: src/diff.c:498 -#, c-format -msgid "invalid width `%s'" -msgstr "ancho invlido `%s'" - -#: src/diff.c:502 -msgid "conflicting width options" -msgstr "opciones de ancho conflictivas" - -#: src/diff.c:526 -#, c-format -msgid "invalid horizon length `%s'" -msgstr "longitud del horizonte invlida `%s'" - -#: src/diff.c:629 -#, c-format -msgid "`-%ld' option is obsolete; use `-%c %ld'" -msgstr "la opcin `-%ld' est obsoleta; utilice `-%c %ld'" - -#: src/diff.c:641 -#, c-format -msgid "`-%ld' option is obsolete; omit it" -msgstr "la opcin `-%ld' est obsoleta; omtala" - -#: src/diff.c:709 -msgid "--from-file and --to-file both specified" -msgstr "se ha especificado tanto --from-file como --to-file" - -#: src/diff.c:832 -msgid "Compare files line by line." -msgstr "Compara ficheros lnea por lnea." - -#: src/diff.c:834 -msgid "-i --ignore-case Ignore case differences in file contents." -msgstr "" -"-i --ignore-case Descarta las diferencias entre maysculas y minsculas\n" -" en el contenido de los ficheros." - -#: src/diff.c:835 -msgid "--ignore-file-name-case Ignore case when comparing file names." -msgstr "" -"--ignore-file-name-case Descarta las diferencias entre maysculas y\n" -" minsculas al comparar los nombres de los ficheros." - -#: src/diff.c:836 -msgid "--no-ignore-file-name-case Consider case when comparing file names." -msgstr "" -"--no-ignore-file-name-case Considera distintas maysculas y minsculas\n" -" cuando compara los nombres de los ficheros." - -#: src/diff.c:837 src/sdiff.c:186 -msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." -msgstr "" -"-E --ignore-tab-expansion Descarta cambios debidos a expansiones de tabs." - -#: src/diff.c:838 src/sdiff.c:187 -msgid "-b --ignore-space-change Ignore changes in the amount of white space." -msgstr "" -"-b --ignore-space-change Descarta las diferencias en la cantidad de " -"espacios\n" -" en blanco." - -#: src/diff.c:839 -msgid "-w --ignore-all-space Ignore all white space." -msgstr "-w --ignore-all-space Descarta los espacios en blanco." - -#: src/diff.c:840 src/sdiff.c:189 -msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." -msgstr "" -"-B --ignore-blank-lines Descarta los cambios cuyas lneas son todas vacas." - -#: src/diff.c:841 src/sdiff.c:190 -msgid "" -"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." -msgstr "" -"-I EXPR-REG --ignore-matching-lines=EXPR-REG Descarta las lneas que\n" -" coincidan con EXPR-REG." - -#: src/diff.c:842 src/sdiff.c:191 -msgid "--strip-trailing-cr Strip trailing carriage return on input." -msgstr "" -"--strip-trailing-cr Elimina los retornos de carro finales en la entrada." - -#: src/diff.c:844 -msgid "--binary Read and write data in binary mode." -msgstr "--binary Lee y escribe los datos en modo binario." - -#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 -msgid "-a --text Treat all files as text." -msgstr "-a --text Trata todos los ficheros como de tipo texto." - -#: src/diff.c:848 -msgid "" -"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " -"context.\n" -"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " -"context.\n" -" --label LABEL Use LABEL instead of file name.\n" -" -p --show-c-function Show which C function each change is in.\n" -" -F RE --show-function-line=RE Show the most recent line matching RE." -msgstr "" -"-c -C NM --context[=NM] Muestra NM (3 por omisin) lneas de contexto\n" -"-u -U NM --unified[=NM] Muestra NM (3 por omisin) lneas de contexto\n" -" unificado.\n" -" --label NOMBRE Usa NOMBRE en lugar del nombre de fichero.\n" -" -p --show-c-function Muestra en qu funcin C se encuentra cada cambio.\n" -" -F EXPR-REG --show-function-line=EXPR-REG Muestra la lnea ms reciente\n" -" que coincida con EXPR-REG." - -#: src/diff.c:853 -msgid "-q --brief Output only whether files differ." -msgstr "-q --brief Indica slo si los ficheros son diferentes o no." - -#: src/diff.c:854 -msgid "-e --ed Output an ed script." -msgstr "-e --ed Produce un script ed." - -#: src/diff.c:855 -msgid "--normal Output a normal diff." -msgstr "--normal Produce un diff normal." - -#: src/diff.c:856 -msgid "-n --rcs Output an RCS format diff." -msgstr "-n --rcs Produce un diff en formato RCS." - -#: src/diff.c:857 -msgid "" -"-y --side-by-side Output in two columns.\n" -" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" -" --left-column Output only the left column of common lines.\n" -" --suppress-common-lines Do not output common lines." -msgstr "" -"-y --side-by-side Genera salida en dos columnas.\n" -" -W NM --width=NM Genera como mximo NM (130 por omisin) caracteres\n" -" por lnea.\n" -" --left-column Muestra slo la columna izquierda en las lneas comunes.\n" -" --suppress-common-lines No muestra las lneas comunes." - -#: src/diff.c:861 -msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." -msgstr "" -"-D NOMBRE --ifdef=NOMBRE Genera un fichero combinado que muestra las\n" -" diferencias con '#ifdef NOMBRE'" - -# Propongo similar -> parecida. Ver gettext. sv -# Hmmm ... prefiero similar. Antes estaba puesto `parecida' y la verdad, -# no quedaba tan bien. ipg -#: src/diff.c:862 -msgid "" -"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." -msgstr "" -"--GTYPE-group-format=GFMT Similar, pero formatea los grupos de entrada " -"GTYPE\n" -" con GFMT." - -#: src/diff.c:863 -msgid "--line-format=LFMT Similar, but format all input lines with LFMT." -msgstr "" -"--line-format=LFMT Similar, pero formatea todas las lneas de entrada\n" -" con LFMT." - -# dem. sv -#: src/diff.c:864 -msgid "" -"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." -msgstr "" -"--LTYPE-line-format=LFMT Similar, pero formatea las lneas de entrada " -"LTYPE\n" -" con LFMT." - -#: src/diff.c:865 -msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." -msgstr "" -" LTYPE es `old' (antiguo), `new' (nuevo) o `unchanged' (sin cambios).\n" -" GTYPE es como LTYPE o `changed' (cambiado)." - -#: src/diff.c:866 -msgid "" -" GFMT may contain:\n" -" %< lines from FILE1\n" -" %> lines from FILE2\n" -" %= lines common to FILE1 and FILE2\n" -" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" -" LETTERs are as follows for new group, lower case for old group:\n" -" F first line number\n" -" L last line number\n" -" N number of lines = L-F+1\n" -" E F-1\n" -" M L+1" -msgstr "" -" GFMT puede contener:\n" -" %< lneas del FICHERO1\n" -" %> lneas del FICHERO2\n" -" %= lneas comunes a FICHERO1 y FICHERO2\n" -" %[-][ANCHO][.[PRECISIN]]{doxX}LETRA especificacin printf para LETRA\n" -" Las LETRAs pueden ser como siguen para grupos nuevos (en minsculas\n" -" para grupos antiguos):\n" -" F nmero de la primera lnea\n" -" L nmero de la ltima lnea\n" -" N nmero de lneas = L-F+1\n" -" E F-1\n" -" M L+1" - -#: src/diff.c:877 -msgid "" -" LFMT may contain:\n" -" %L contents of line\n" -" %l contents of line, excluding any trailing newline\n" -" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" -msgstr "" -" LFMT puede contener:\n" -" %L contenido de la lnea\n" -" %l contenido de la lnea, excluyendo caracteres de nueva lnea finales\n" -" %[-][ANCHO][.[PRECISIN]]{doxX}n especificacin en estilo printf para " -"el\n" -" nmero de lnea de entrada" - -#: src/diff.c:881 -msgid "" -" Either GFMT or LFMT may contain:\n" -" %% %\n" -" %c'C' the single character C\n" -" %c'\\OOO' the character with octal code OOO" -msgstr "" -" Tanto GFMT como LFMT pueden contener:\n" -" %% %\n" -" %c'C' el carcter C\n" -" %c'\\OOO' el carcter con cdigo octal OOO" - -# Sugerencia: la salida -> el resultado. -# (y paginarla -> paginarlo, en su caso). sv -# Yo personalmente prefiero `la salida'; si traducimos literalmente el -# ingls es eso, no cabe duda, pero poner `el resultado' no me cuadra. -# Lo digo porque tenemos una entrada y una salida (por un lado entran -# los cerdos a la mquina de hacer chorizos, y por otro salen). Creo -# que con esto me guiar por lo que haya hecho el resto de la gente. -# Si sabes qu han hecho ... :). ipg -# Te mandar el gettext, para que veas lo que vale un peine... sv -# X'D ... no soy tan malo ... ipg -# Medita de nuevo si no usas resultado em -#: src/diff.c:886 -msgid "-l --paginate Pass the output through `pr' to paginate it." -msgstr "-l --paginate Pasa la salida a travs de `pr' para paginarla." - -# Aqu a lo mejor tambin: la salida -> el resultado. sv -#: src/diff.c:887 src/sdiff.c:198 -msgid "-t --expand-tabs Expand tabs to spaces in output." -msgstr "-t --expand-tabs Expande los tabuladores a espacios en la salida." - -#: src/diff.c:888 src/diff3.c:452 -msgid "-T --initial-tab Make tabs line up by prepending a tab." -msgstr "" -"-T --initial-tab Hace que los tabuladores se alineen anteponiendo uno." - -#: src/diff.c:890 -msgid "-r --recursive Recursively compare any subdirectories found." -msgstr "-r --recursive Compara recursivamente todos los subdirectorios." - -#: src/diff.c:891 -msgid "-N --new-file Treat absent files as empty." -msgstr "-N --new-file Trata los ficheros que no existan como vacos." - -#: src/diff.c:892 -msgid "--unidirectional-new-file Treat absent first files as empty." -msgstr "" -"--unidirectional-new-file Trata los ficheros originales que no existan\n" -" como vacos." - -#: src/diff.c:893 -msgid "-s --report-identical-files Report when two files are the same." -msgstr "" -"-s --report-identical-files Notifica cundo dos ficheros son idnticos." - -#: src/diff.c:894 -msgid "-x PAT --exclude=PAT Exclude files that match PAT." -msgstr "-x PAT --exclude=PAT Excluye los ficheros que coincidan con PAT." - -#: src/diff.c:895 -msgid "" -"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." -msgstr "" -"-X FICHERO --exclude-from=FICHERO Excluye los ficheros que coincidan con\n" -" alguna expresin regular de FICHERO." - -#: src/diff.c:896 -msgid "" -"-S FILE --starting-file=FILE Start with FILE when comparing directories." -msgstr "" -"-S FICHERO --starting-file=FICHERO Comienza por FICHERO cuando se " -"comparan\n" -" directorios." - -#: src/diff.c:897 -msgid "" -"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." -msgstr "" -"--from-file=FICHERO1 Compara FICHERO1 con todos los operandos.\n" -" FICHERO1 puede ser un directorio." - -#: src/diff.c:898 -msgid "" -"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." -msgstr "" -"--to-file=FICHERO2 Compara todos los operandos con FICHERO2.\n" -" FICHERO2 puede ser un directorio." - -#: src/diff.c:900 -msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." -msgstr "" -"--horizon-lines=NM Mantiene NM lneas de prefijos y sufijos comunes." - -#: src/diff.c:901 src/sdiff.c:200 -msgid "-d --minimal Try hard to find a smaller set of changes." -msgstr "-d --minimal Se esfuerza en encontrar un grupo de cambios menor." - -#: src/diff.c:902 -msgid "" -"--speed-large-files Assume large files and many scattered small changes." -msgstr "" -"--speed-large-files Supone que los ficheros son grandes y los cambios son\n" -" numerosos, pequeos y dispersos." - -#: src/diff.c:907 -msgid "" -"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." -msgstr "" -"FICHEROS puede ser `FICHERO1 FICHERO2' o `DIRECTORIO1 DIRECTORIO2'\n" -" o `DIRECTORIO FICHERO...' o `FICHERO... DIRECTORIO'." - -#: src/diff.c:908 -msgid "" -"If --from-file or --to-file is given, there are no restrictions on FILES." -msgstr "Si se da --from-file o --to-file, no hay restricciones en FICHEROS." - -#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 -msgid "If a FILE is `-', read standard input." -msgstr "Si un FICHERO es `-', lee la entrada estndar." - -#: src/diff.c:920 -#, c-format -msgid "Usage: %s [OPTION]... FILES\n" -msgstr "Modo de empleo: %s [OPCIN]... FICHEROS\n" - -#: src/diff.c:949 -#, c-format -msgid "conflicting %s option value `%s'" -msgstr "la opcin %s tiene el valor conflictivo `%s'" - -#: src/diff.c:962 -msgid "conflicting output style options" -msgstr "las especificaciones del estilo de salida son conflictivas" - -#: src/diff.c:976 -msgid "regular empty file" -msgstr "fichero regular vaco" - -#: src/diff.c:976 -msgid "regular file" -msgstr "fichero regular" - -#: src/diff.c:978 -msgid "directory" -msgstr "directorio" - -#: src/diff.c:981 -msgid "block special file" -msgstr "fichero especial de bloques" - -#: src/diff.c:984 -msgid "character special file" -msgstr "fichero especial de caracteres" - -#: src/diff.c:987 -msgid "fifo" -msgstr "`fifo'" - -#: src/diff.c:991 -msgid "socket" -msgstr "`socket'" - -#: src/diff.c:994 -msgid "message queue" -msgstr "cola de mensajes" - -#: src/diff.c:997 -msgid "semaphore" -msgstr "semforo" - -#: src/diff.c:1000 -msgid "shared memory object" -msgstr "objeto de memoria compartido" - -# Alguien sabe lo que es esto? -#: src/diff.c:1003 -msgid "typed memory object" -msgstr "objeto de memoria `typed'" - -# FIXME -# se podra decir algo ms decente para "weird" ... pero qu? -# no habitual ? em -# Nchts! Prefiero extrao ... no habitual me suena muy difuso -# siempre podemos poner escachifollado ;) ipg -#: src/diff.c:1006 -msgid "weird file" -msgstr "fichero extrao" - -#: src/diff.c:1070 src/diff.c:1256 -#, c-format -msgid "Only in %s: %s\n" -msgstr "Slo en %s: %s\n" - -#: src/diff.c:1193 -msgid "cannot compare `-' to a directory" -msgstr "no se puede comparar `-' con un directorio" - -#: src/diff.c:1220 -msgid "-D option not supported with directories" -msgstr "la opcin -D no se puede usar con directorios" - -#: src/diff.c:1229 -#, c-format -msgid "Common subdirectories: %s and %s\n" -msgstr "Subdirectorios comunes: %s y %s\n" - -# Nota: El segundo y el cuarto `%s' son tipos de fichero. -# Por ejemplo, "texto C", "texto FORTRAN", etc. -#: src/diff.c:1266 -#, c-format -msgid "File %s is a %s while file %s is a %s\n" -msgstr "El fichero %s es un %s mientras que el %s es un %s\n" - -#: src/diff.c:1345 -#, c-format -msgid "Files %s and %s are identical\n" -msgstr "Los ficheros %s y %s con idnticos\n" - -#: src/diff3.c:26 -msgid "Written by Randy Smith." -msgstr "Escrito por Randy Smith." - -#: src/diff3.c:328 -msgid "incompatible options" -msgstr "opciones incompatibles" - -#: src/diff3.c:368 -msgid "`-' specified for more than one input file" -msgstr "se ha especificado `-' para ms de un fichero de entrada" - -#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 -#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 -msgid "read failed" -msgstr "la lectura fall" - -# Sera ideal traducir OLDFILE y YOURFILE. sv -# S, eso pens yo, pero no s como ponerlo para que quede bien ... -# Esto no hay quien lo entienda, pinsalo 3 minutos ms si te apetece :) em+ -# -# OLDFILE FICHERO-ANTIGUO -# YOURFILE TU-FICHERO -# MYFILE MI-FICHERO -# -# Pongo eso por ahora, pero espero una sugerencia mejor ;) -#: src/diff3.c:441 -msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." -msgstr "" -"-e --ed Muestra los cambios sin mezclar entre FICHERO-ANTIGUO\n" -" y TU-FICHERO en MI-FICHERO." - -#: src/diff3.c:442 -msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." -msgstr "" -"-E --show-overlap Muestra los cambios no mezclados, encerrando los\n" -" conflictos entre corchetes." - -#: src/diff3.c:443 -msgid "-A --show-all Output all changes, bracketing conflicts." -msgstr "" -"-A --show-all Muestra todos los cambios, encerrando los conflictos entre\n" -" corchetes." - -#: src/diff3.c:444 -msgid "-x --overlap-only Output overlapping changes." -msgstr "-x --overlap-only Muestra los cambios que se solapen." - -#: src/diff3.c:445 -msgid "-X Output overlapping changes, bracketing them." -msgstr "-X Muestra los cambios superpuestos (entre corchetes)." - -#: src/diff3.c:446 -msgid "-3 --easy-only Output unmerged nonoverlapping changes." -msgstr "-3 --easy-only Muestra los cambios no mezclados ni superpuestos." - -#: src/diff3.c:448 -msgid "-m --merge Output merged file instead of ed script (default -A)." -msgstr "" -"-m --merge Produce un fichero mezclado en lugar de un\n" -" script ed (por omisin -A)." - -#: src/diff3.c:449 -msgid "-L LABEL --label=LABEL Use LABEL instead of file name." -msgstr "-L NOMBRE --label=NOMBRE Usa NOMBRE en lugar del nombre de fichero." - -#: src/diff3.c:450 -msgid "-i Append `w' and `q' commands to ed scripts." -msgstr "-i Aade las rdenes `w' y `q' a los `scripts' ed." - -#: src/diff3.c:453 src/sdiff.c:202 -msgid "--diff-program=PROGRAM Use PROGRAM to compare files." -msgstr "--diff-program=PROGRAMA Utiliza PROGRAMA para comparar los ficheros." - -#: src/diff3.c:465 -#, c-format -msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" -msgstr "Modo de empleo: %s [OPCIN]... MI-FICHERO FICHERO-ANTIGUO TU-FICHERO\n" - -#: src/diff3.c:467 -msgid "Compare three files line by line." -msgstr "Compara tres ficheros lnea por lnea." - -#: src/diff3.c:673 -msgid "internal error: screwup in format of diff blocks" -msgstr "error interno: fallo en el formato de los bloques diff" - -#: src/diff3.c:971 -#, c-format -msgid "%s: diff failed: " -msgstr "%s: diff fall: " - -#: src/diff3.c:993 -msgid "internal error: invalid diff type in process_diff" -msgstr "error interno: tipo de diff invlido en process_diff" - -#: src/diff3.c:1018 -msgid "invalid diff format; invalid change separator" -msgstr "formato de diff invlido; separador de cambio invlido" - -#: src/diff3.c:1242 -msgid "invalid diff format; incomplete last line" -msgstr "formato de diff invlido; lnea final incompleta" - -#: src/diff3.c:1265 src/sdiff.c:273 -#, c-format -msgid "subsidiary program `%s' not executable" -msgstr "el programa subsidiario `%s' no es ejecutable" - -#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 -#, c-format -msgid "subsidiary program `%s' not found" -msgstr "no se encontr el programa subsidiario `%s'" - -#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 -#, c-format -msgid "subsidiary program `%s' failed" -msgstr "el programa subsidiario `%s' fall" - -#: src/diff3.c:1294 -msgid "invalid diff format; incorrect leading line chars" -msgstr "" -"formato de diff invlido; caracteres incorrectos al comienzo de la lnea" - -#: src/diff3.c:1370 -msgid "internal error: invalid diff type passed to output" -msgstr "error interno: tipo de diff invlido pasado a la salida" - -#: src/diff3.c:1647 src/diff3.c:1704 -msgid "input file shrank" -msgstr "el fichero de entrada ha menguado" - -#: src/dir.c:162 -#, c-format -msgid "cannot compare file names `%s' and `%s'" -msgstr "no se pueden comparar los nombres de fichero `%s' y `%s'" - -#: src/sdiff.c:35 -msgid "Written by Thomas Lord." -msgstr "Escrito por Thomas Lord." - -#: src/sdiff.c:183 -msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." -msgstr "" -"-o FICHERO --output=FICHERO Opera interactivamente, enviando el resultado\n" -" al fichero FICHERO." - -#: src/sdiff.c:185 -msgid "-i --ignore-case Consider upper- and lower-case to be the same." -msgstr "-i --ignore-case Considera iguales maysculas y minsculas." - -#: src/sdiff.c:188 -msgid "-W --ignore-all-space Ignore all white space." -msgstr "-W --ignore-all-space Descarta los espacios en blanco." - -#: src/sdiff.c:194 -msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." -msgstr "" -"-w NM --width=NM Muestra como mucho NM caracteres por lnea\n" -" (por omisin 130)." - -#: src/sdiff.c:195 -msgid "-l --left-column Output only the left column of common lines." -msgstr "" -"-l --left-column Muestra slo en la columna izquierda las lneas comunes." - -#: src/sdiff.c:196 -msgid "-s --suppress-common-lines Do not output common lines." -msgstr "-s --suppress-common-lines No muestra las lneas comunes." - -#: src/sdiff.c:201 -msgid "" -"-H --speed-large-files Assume large files and many scattered small changes." -msgstr "" -"-H --speed-large-files Supone que los ficheros son grandes y los cambios " -"son\n" -" numerosos, pequeos y dispersos." - -#: src/sdiff.c:214 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 FILE2\n" -msgstr "Modo de empleo: %s [OPCIN]... FICHERO1 FICHERO2\n" - -# Se admiten sugerencias. -#: src/sdiff.c:215 -msgid "Side-by-side merge of file differences." -msgstr "Combinacin a dos columnas de las diferencias entre ficheros." - -#: src/sdiff.c:327 -msgid "cannot interactively merge standard input" -msgstr "no se puede mezclar interactivamente con la entrada estndar" - -#: src/sdiff.c:588 -msgid "both files to be compared are directories" -msgstr "los dos ficheros que hay que comparar son directorios" - -# FIXME -# sugerencias para traducir mejor "verbosely"? -# Con verborrea ?, ;) -# era una broma, qu tal prolijamente ? em -# Huy ... mi famosa enciclopedia no dice en prolijo nada que se -# parezca a dar mucho la lata ... casi que lo dejamos, no? ipg -# Sugerencia -> `verbosamente' -> con detalle. sv -# Hfff ... es que `con detalle' suena ms a dar detalles de lo -# que es cada cosa, que no a que se est haciendo ipg -# Federico ha usado "prolijamente" en tar. Algo habr que hacer, porque -# verbosamente no me suena a espaol. Existe eso? sv -# A mi tampoco ... voy a ver si conecto con el diccionario de Anaya -# y lo miro ... a veeeeerrr ... ya ta: -# prolijo, -a: Del lat. prolixus = fluyente. -# 1. (adjetivo, -a). Largo, muy extenso. -# 2. (adjetivo, -a). Cuidadoso o esmerado con exceso. -# 3. (adjetivo, -a). Cargante, molesto. -# FAM: Prolijamente, prolijidad. -# SIN. 1. Amplio. 3. Impertinente, pesado. -# ANT. 1. Lacnico, conciso. 2. Descuidado. 3. Ameno. -# (Referencia: http://www.anaya.es/dict/Buscar) -# -# Pues est claro que es castellano (o espaol), pero yo no lo haba -# odo hasta ahora, y me imagino que mucha gente estar igual. Yo -# voto por buscar algo ms comn (y creo que verbosamente vale, -# momento que lo bujco). ipg -# -# Lo encontraste ? , yo no lo he odo en mi vida, y me suena a verborrea, que -# es ms bien despectivo. qu tal `con detalle' ? em+ -# Dejo verbosamente, que al menos el alma precavida lo asociar con que hay -# mucho verbo :) ipg -# -# Pero vamos a ver, la palabra "verbosamente" existe? -# A m me parece completamente un "palabro". sv -# ## Por qu no la buscas en algn diccionario? sv -# ## Momeneto ... en la Espasa Calpe viene: -# ## verbosamente: adverbio, con verbosidad. -# ## En Anaya (http://www.anaya.es/dict): -# ## verbosidad -# ## I. De verbo. -# ## 1. (sustantivo femenino). Verborrea. -#: src/sdiff.c:853 -msgid "" -"ed:\tEdit then use both versions, each decorated with a header.\n" -"eb:\tEdit then use both versions.\n" -"el:\tEdit then use the left version.\n" -"er:\tEdit then use the right version.\n" -"e:\tEdit a new version.\n" -"l:\tUse the left version.\n" -"r:\tUse the right version.\n" -"s:\tSilently include common lines.\n" -"v:\tVerbosely include common lines.\n" -"q:\tQuit.\n" -msgstr "" -"ed: Edita y usa ambas versiones, cada una decorada con una cabecera.\n" -"eb: Edita y usa ambas versiones.\n" -"el: Edita y usa la versin izquierda.\n" -"er: Edita y usa la versin derecha.\n" -"e: Edita una nueva versin.\n" -"l: Usa la versin izquierda.\n" -"r: Usa la versin derecha.\n" -"s: Incluye lneas comunes silenciosamente.\n" -"v: Incluye lneas comunes verbosamente.\n" -"q: Salir.\n" - -# Creo que es suficientemente decente, pero se admiten sugerencias. -#~ msgid "--inhibit-hunk-merge Do not merge hunks." -#~ msgstr "--inhibit-hunk-merge No junta los trozos." - -#~ msgid "context length specified twice" -#~ msgstr "la longitud del contexto se ha especificado dos veces" - -#~ msgid "multiple `--from-file' options" -#~ msgstr "se han dado varias opciones `--from-file'" - -#~ msgid "multiple `--to-file' options" -#~ msgstr "se han dado varias opciones `--to-file'" - -#~ msgid "regular empty executable file" -#~ msgstr "fichero regular ejecutable vaco" - -#~ msgid "regular executable file" -#~ msgstr "fichero regular vaco" - -#~ msgid ": not found\n" -#~ msgstr ": no encontrado\n" - -#~ msgid "-D%s: conflicting #ifdef format" -#~ msgstr "-D%s: formato #ifdef conflictivo" - -#~ msgid "%s: conflicting line format" -#~ msgstr "%s: formato de lnea conflictivo" - -#~ msgid "conflicting group format" -#~ msgstr "formato de grupo conflictivo" - -#~ msgid "--ignore-initial value must be a nonnegative integer" -#~ msgstr "el valor de --ignore-initial debe ser un entero no negativo" - -#~ msgid "column width must be a positive integer" -#~ msgstr "el ancho de la columna debe ser un entero positivo" - -#~ msgid "context length must be a nonnegative integer" -#~ msgstr "la longitud del contexto ha de ser un entero no negativo" - -#~ msgid "horizon must be a nonnegative integer" -#~ msgstr "el horizonte (horizon) ha de ser un entero no negativo" diff --git a/src/bin/diffutils/po/fr.gmo b/src/bin/diffutils/po/fr.gmo deleted file mode 100644 index eeeea833960395872ddc8ff71544854b9feb8628..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25082 zcmb`P4RB@WS>I0}Use*FIJV`K3fhItKG$bvMK!DPaLZECyASDc~r^&Q1g>;62wzLhGb!1-uIk)u5=|kE_eLy|K4-n&*y!<-sgSfkH7M|KZ*S3i@)rz10>&V1uKOVPCh!a3TS4_J)Oh3I z-+*tAqBoC%ls6yu&)=MaC4PSbbfDTD0KW#(|MjmANFUJxzbVoCz)ym-yZ(QG?~bAy zt^*H(4}#RW;c1ZZZ}<{;0{klY-YB|}IYbYD7yR=ZKLs+*jT(=2z2#NlF>ncFoVWaN z_^tLwqv)m^!Mj1dXAL*~5C~mv`dyIm-+DcGKS&=M=dI8(It~77@S!NW`C5>EZaxpP zrkj5ZWSpDzo_^o`#n#;f9s<|dr$@jK^PBc>|8L+s z`0s5X_1-Z9&VnBT?*&EQ36}f{kon)j7@Ef|9T585^0OfIZc#sTYzcj79j*e7f|>{P zc3LlUy!G2b`n#1iME8ML0{#ZbxVQc_$a-&MZqX621-=vf49Gff`*$GoyzPJc-|u9s z=uWDr-q%5m#~j}EQSesqb0BMb*YAbje+IIDqi+D&ztIwS0K5d!ZuDnBcy;t&h4=pn zgtrgSM)eLn46>&OE`!L!fscXof8etq?GF472;C1n55nJL;*Xm_-bHT&r@_~P&{F(1 zwg58j*d}-_`28U39s4+_cK-q#cAiQ!A8PoHF{}X%-TYEj&1DR6UJr^NZUcWDyc7JFAbs8b=OFua2X&%V@E(x0+@W;~ zMeix_%OLIV_$CNnk83`+gW_xEGrkSNf8)=B?92GigUo;Yx5IOd16@m+FLWr0&m4Gv zz!>CR=|kW(;7`NHv*2g=P5%=wfUgAq7G&(hfYx{T29Wt3W~>O>A3g`t_u-F#(D$(R z8G0Z7D#$(_7JZrLZr>HX9i$g`;pkoHq`5SmVX5M(`59|f8B)K7ry-PGs6?*M-dgdS7B3Bo5+{}DU@ z{snj|OA@`9_w+sBo58c-2>298|I_G$SHNr2-^*{x5$OGGN7>?sc+UR3=lgihT<-cj z_!y$c7}~d^SHSmxKL@hUNBD767O#RQF2k!>OH}o_Ar{FYA zH9z+HeWC;7zV9mdIH+~4@JjRK`9oS4^M2^RfYe`jJ9s~s`sWM31fJu!*3J9V%t?Cw zwAR6Rr~eRyuNL0{vd%@#ll@r~-RXbvPe5q9#6G@)c`vco;-BTufb7$<#$_!JzXoKT z50}6LAbYF*d-%J+8SuaQ_bYD+_+F5GS=j=a$I6#L_IdT&!P`LAq;XaQf39ksj^Dop zGVbcvK=^v?2Jl@VbC+DNK_ki2S`9o1eh_3%Yof!A;8(#zp!kXQXWk03Z)YTjzYS`A zOH2)#Xq-oW5PUWG8{qGOUj}c9qO%_ZncvyZgRJT7^WgR1-++w&=oifF3OKlKoaMn6pX4$9{#uc3&J&^5ZB@(Id6 zqUfW2JWp|yGnDM}o#9IptWz#feui?Ka+31%ly^`LQhu4D4{~N7@!ESR-$sGP(qHzu zm48KNeSXBlz`x(mFL>5IkMQp&Dc?)^80FIx?fFM2#m^V`ahCEA!oyi`Dtuo64^tkb zz)SXdoPW2%_Y+{3Ql_j>PEqvv1rOre=$}#GOZy-%(T6A%|I_}xE_{CsTq-=**Y{FB zyW`nE;rFAIHOdhRIy<^bS*QFOr9qjee3bG76n$PtsZn07AACMX`5wxZ#`4r_JQf{N@Q}Q5PBe}It zJK!X^K}jjgl($nJro4eNO4+37BiX)|ay?~+^3N&RXPPgED4(HRLpe$rqkJFb?^Ax3 z(xKcy(dQ>9_fT%6yr1$$O7?kxFCVra&dsHr?WE;Sojkqf8ZEaVti@Mcxl!-LX?RyA?u?YI?}JM?iptMT~K(o(3@e|w36T%+8HtMpw-9Cae+ z$K5^Nz0OtBdeU~AtwznAoL`um@}1we>&3KxaV&dLZq#axy6ZH2GZ)t@_AS&qU%GJq z?EHzf2QQqTIKR9ycl^SIXDf}%kA7fbZf$LD#kpoHt#>v{?ambz*KQ_dw<)^VTN}!S zA8i-65*IVaMzz|wBy72Qa>;GA8r|l&;~7LL$L+-4G^!Q<#*@C09YF5pckr#Qdb&MWqs0$BjFk{`hO=y@@W}H1q ztJP!+L1{EQDZE@NxzVz(o7OMJ)wD9?O{lv*S{`kWxk@8x*T*_87HhIJcy+5=V|#r! zd1b0HskpY0Zgm@7Tft1$`MNr4B~N$L7IfOPk5cJd7_fAf)xYHFh1z@0aMlukkCF7}*NplI=uEm{WrY7BLT1%^OYus(Xul`NOfX2es zr0q=Osl^1H8DEyfC|O@7i9`DeOrMKG=t>RL)ka#6TUVT0N#cre?WI=QNn9oF#4fG7 z@VbVQRc$eAso835wc^^b<&~vVE3+trGiask2dWaK*_1ZhgbCYfCB0kHFB_m#>NNbX zjRsm=S~1;BlS;ATF)u~#c<9Riq;FUdj!If6;x>}%pO;~$4LXPU*`iLPbw#6YC)K8N zOWlqXL1&wN*AsiwXr<3I>PEo!vBfhi;h`jHI(-vSO^zkKLH##d$!2=lCg1LE@>QLr zTlGc@`m?N3J+37sQ_gPQ9(zrFX*;P0YDl9Q1yt3D^3rxs>+P$u9eY=A>@|zyje0w+ zWENxJd9aEa+94xU?7{BYSmWU?zGZoDO2#Jatl?eM}3`Nj$5rXrqfo^>9*<)b!Cg!JOa}gXH2`CGl~q6 z+3D%P8PjaTFwW@KQ_m^r!?;?)3V42WYpoJ#njhjtvdVl@1YS`XxTqq5ny)oNnB2HT8aHHZOh`=bLu~u@AD8b8rW(ybj=#r^qHUc zBvDh?o3O|^b1pM2)!9b8{WeHfHBD7X#~7jLE7oK?$>omAbOH0rRe)YliN)vQXtOSP zM$8u#_)`7Kio~@>7k$D`4zAStu@gecdyj5e$A#b#N(tCwMl3VpaWhYhY_9d?&UqQG z3puf5yAC4QaktuWM-KJvSh>-}xO#`2>5r7Ubap1|3{@!G`%*g#)%(4P6vn|BL%#?I zh8x83vm#}*nR3vJy$QpLwiDaFu&-(P=!;|i@sMLv|45XXdEdv>jGAEO^VJu-3U8wlRut|_Hao~f zwOhlqgzYfPEGpyT4%9I(3HpOmKa^e#$vO-nHIoA*&P#sw>ole#bFrP)JF zgk_gXtulUDpBYzC1m(xx`=xhRVjyUSJ;Z4Pm zGMDW{0}l~x;#q75L)wJR3987*($AbcB2`+uHT}msRZGS=vJ!gC}U~i_5Odbki)^_lQDO<+9tZ{=GA9R<8 z*mkSGJZmf(Ecr3}xu*^1EsgNOwab+RD{7eUwd^l@Y|MGi$UZaZ7-RV_s2HaH8? z5y3$j=x9DX#t8`_@-iXawo^c%|B~o&Z2nYUt?Jk<-}a}R28?xef&)k0P9F^oGGM zro;bbjC)G71|URFSio>_bxjVIvLVtWmh+-P8_3jD+=m+qq}A5^j^M{w(8wd zx06=e_w#L{(b~FiA~KI9*lt}Y;8gj*JXRQ0+-Z};I+Vv;`4Cako*8-S z0XH={IXUhg0;lgBcc*zUt|#{Nw0_)qbo||Sy=Q#nRPmL)KBd=p9T~st&Z+UEYAsH0 zH^hRv99SE7%j0ft+&wn#&iNTnSrzX(iFq|me-R*Zn@u+(qWCp5HQ!o-MeCya^zKO5 zprVgRy>1y_u^p``oEGAMGRaAZOf4?Cv$HEJvx{rzkRlHC%z#6a3@~P)mJ%8=0#@To z6C>vuUD)Fa+g?c}Vgx`Ha^tuX0&x8?MzHLd6?KQlQOg5#rxwq+Q%M~sr0SNt8|;Bw zNOAYu$;8M>hy*{%OYvb<1s~!K45#|RX@imIjEH+1rKhe<$w;0m?)cL3x%tIY6VY0B zA0csUBXQe2y5iPRIX=WVX1lR-po!>A{i%B65-Rx$qEK^5tJP@n&`zHWa8Ro8@q>jY zhwRCr!jtoQa{h_JlgFQp&a?@TnPxw~w7fRIw0HqUYKkZ*-I0B(oR_wpcIU+w+cIL4?JJnZq$g>Ei_uVfrUA& zHCh|*ZxByBg&M2EN+u_M_|tLup``vyiV&=qM!6Qs0$ea(W24=uCY|IS*I+D{cJ`~% zg`?=9?9>Sr$NG`&K8Fy1P*hVqsi?FVF50LzQ1liChl~9q1;+Kwv=qt*5tH#|;_!39 z=Zy$(%AE}FnSh;C3X$-gHF6%uXzB7qN=09?dIK)K^QvIbkVUy^8Ju*v)|_#3ODCnE zq^dbcS_D%n5@`vyM5a{3h=mH?oyBD8qSRMy5Au50Eh><$84ciIHI zRR|6+!fjfv!p)6NEFn@Ea}^MyP$ou_jeVO_p}MnzG=-fj!x+?Q4Xe{ix3)X3Un$ff zz|OU9{+R9+GTGfJeP%Cq^wgfYW)KS!C5-Mh+zgz}79-d4xLoH- zQ@k!yA-nOU9=?PYO&lBc3IpQ#VpkI)Ey*Q9j&vQa%rI9rqDfPm27VSCJMCh&z;^vt z;Y1W-3;wL`36RwZu{QR*zJ*Adpk(iCI6wM5Ohm+zvglv5=abk~vxUn=L<%01aG0kp zq3Tb2M+?6es>lgzC#Zs$TdutSZGWFNbe3LjY~r<@?iprV#>73{O}a@GoY$Na;!QTz zFF6RLBj_Q0!3kS>sK_8u2#(0c4qgrLz+b)*U5GN5!COP~lKowEl>2eIX7O4udt@rH zjo;T~p-I$+QZPqYO=IKz&@yVHLldAQr&))~O`>A@={@kkMjVegD5kpb%w{6Wg!}Sn zuh&{oa+x3m$8Z$(e$^}n5y{=O+c49%K0cZ$HHpN|*f}AX}t_?^DO+fz@U(-DR#%-AZF4C6$Mi0(WmK ze7}EwWohEfX)->TL3QHz?0qz^Z*^g<(pnPNX52{~VYc19D4I&Qe7^^CwMS0RpPuV4 zZfat3gb=43#?l&un!(+>+&SE=#%cW?#erLdVvo(QE|rcRefQm@q~w(~RgOxfIRsHs zHRFzQw@rqEPe$tcT$N_h<$x!9sWH-)(q~3TeLm7?`6`j;=SX)USq6=2$E+9NbN{&7 zO-r?J)Rd4iS{_qY(sP5=D)ebjl#t|elQ=nAYLd-?v3CqiVp6lw#Y>G_h#*lD?0prb z1XQ}XbjKf@pIcGd%_x~lFJ4ngNu#7L?N!qsj~R)}Ozl-Zf+JEEMzcPYZL=`Da%%3( z%CN+y6%HMmYP;Ff&ApC2TsJ#bt;D94Ii}$_s6dUvh|i-Jr5XI`lu5Yi7^;DbUV^Ng znkwucl=cZz2M@XDtd~I3HXBx9#Abt2DI!=H%m%W$nEzV*{%*V6W%rB*U|pTZU7swK zjJv#MTK6^8DO*q-i|gf-E-c+5$V^QB# ziHo~>qqad)_2f5sFwJVNm}C`FtSqf#H{)<|xX&kByJzxln0hwjQ3BWdeD-O~odSEr z)kwYs2r#-2vk;kvW&>;@#x4*`bO==3XHJzd@oP_}uL{qwt-Xa$>+&Ew4b@7EW=T(2M-) zE+N&S){u=9L$1!AS)20wfu@%HCuF}B#8^U>Rh-_Z;&e1>aV--dDf%80>k$61E}hR1 zgKT_L-VtEt0H&;WhE-yooneV$J@k25>$~b5r{_Yt7-CsS6tmW-`yLr&oT(XbMuNMm zhIhAi)wqhTWP;B@eG33UgScDn_A|(Kc1Z(O*PMMG*`MuE!?LwFNU~!%BR(B%cU7fd zeM_TTlGw{?vCot(!Mh48X*QzW>0@mXO zR@ym1D4<#oM5n73kEt(t8pvNWts_?|Z5stFkB#Iu(wj^ZhJ&@2actc-JE*(PLJXN< z`!Qr$yAk{`nN^;0&vO_eJcfTjX*7GdJE$pLY3%xB zeIsx<9HtAAkyeibUZ(*WG<%;LH_$XDu?>}ArclwqTCb+ssyvu3M=PwhyeGGqS+e*_ z%)-q?w|XSViSEh|QnDQ1`+fl3g;STj-D2XLf6VYPt{2BYQl7p3)dLHEz^rJ04T2># z)tqezz3LD(m<+im(-kNg3~|n3Mc&#wyUs6Olj681bN=$CoMql|6sagJR;nyh#$wxG z0IoIE$_NIeNz4K1+Up%aj0ap)7*ALl_!9&m7VH zcpLk1MgTflYR0EM^4RM*yYab1nloq=q|@S@Vw z4U)GYg9c-mncSh4_*q~w<6jmN1|63FNRSgR+-t_bMqbIn`J5)-k9KpFF;sg0rPO89 z+s8fgBC|b|&|2~?J~|Gbk|w3GEkANku9V&xP&$JO1krgkTM}g4kuDjiXitL=mG45% zL9)Crg_;8_R!+K?QLYNPpgJ=Zkkhu1beVBSu4D5Vc-<`4P(;X5==aXU%!nu^D~gpL zdVrj}lQ0LU8_sbetR%`#S$RIDSg4qfNj4^*ynXH+vF)~c=Ist1@w%}`re^0*o{g!7 zrBXi|bI-22{jRKbZ)cC{$44B!$g1c5XQ%*s+M3|%64abr%a$Qi(>{ot^45##n%<=& zchux<6OH224s4fY5um#?LSGMAk0*mNEAmk2eK3#H>$GCE{vz^kIjJ#GCXN=P!QVla zmGr65b}E9Ix_hzCbdafz4cCT)siN&P4@LF28+9R93)ciMD|h=P^L-k~dXdoPb4Ry& z^$TnnwERoDB1Ev|a*e$Kh zpPFBsUGSla{PF3f6Z0qMzfvHVZmXo*vxcl`b!la7er{Nb>PF0MkR7M;aGae6a3n*> zZCIh~WFu=38D`sQvgaxK7_f-L)8HIt!TlJq^om!B{*BO?*ns2n%Q#$t$@4_2` z2wTKW?BX#G5f=|tJ2F{YNtIi5lgu{hifMwKS8P@5&*FCkGh;Gelh)2u)_fMyo<3Fw z@yCKDgphh(h>zvEdbqAEX1Er*&Uq>Gn)_~qjOM@|xq~TpYj~Q8BjvT2@mdg}j5kFr zyLQZ7%>Ge|v{<#a9M?Ja-0lW_ChQ!<4hIv4M;BVCHd}R&tvEDAij~`%J0#d@uJf}~ zJtkm_!!Z}59Mdg1R+gKD1}T`ZA8lgJxdAMu$9k8Vy=y1LvDJ{jjW&{JyxuoN3TC1M zb|=i{OF<3#BwFi88`tLaQX24dT0Q-_6OQKayjj?f#9e}HAwDn;ABFR3e~OR{vBWR4 zBcZVvo;HKaD1@H(N~!Iy*srr9Zy{goj(ddA*B%L!%vB+?Y^p}K;PV!xWp|owkF1lR zIr{FJ&R-}2xn7y}A)0OS1Op7_-4=#44_IOnXSe+FhpUaPlnaLHp2@hG0^HN_BPmyE zB~QxL4;{~g%bN@OVx~6yDa_l&gQVyd9gm^8xrIfr;KFHcr(dboB;T4L^M7FDGj(6w zcNCjsXAhGHtO`A~#3e%#d9_A9{fT88fPK>e)BH-)k@8B(bKXrNwcmqG*$v-*gi^PI z*}m$~fAVSd1%XZ9t+d0P$`H+Mz5jnP^8&n?3rh%e+NA&-I4W^Rfn;0B9}|v5YOqTQ zP_t0KFDukPo~cD?k9;K0RXXL{w|*_I^AuAKk<#Fm4XHOM<^FC%)$CgoRO70j|J6)Y zD#Oi`?lhLnZgN(>LKYkU6dz=jlo#i#g;sh%U6PC!`o4^oPN*FX#<$plj^QL57NO^P z4Nt#(d3x2S^8nojHfFHiz<#WzFjyfYxy#S&52Q6L83kM?60A?Fu0D2!q+_W#j9eiv z*`z`HlhI8Xo!O5(7HzAz>Pns{xJMSc(f@D&e~}KeNM4?}tWJ>6(CM&#JiYep07A#O z;&z3_AN}dCdv$rLWrZvnqS5Sy9X(|BvtYTVlV8Al@((n~-+4m#TMM&syZY|CidmGpB+OE?{TowX&+p7y=FIU_aMTu z-_xKS3C#7MWeyt#LVg??#-8LMmWgOFzX9^|?pff0i49pAoRK>g=4NJ@)h8`Yt4C<5 ztE*Pe4?{bc8}gKZU8Ct^(9C>=KYqqeVo_zy;LDgD=1{=5=iMGj*HOWxl%K2+ujOj^ z+gy$_YAzK4pC}HH-!2sLuPp)-jy`|)3D}4_c__GJ5Qjk&`cm$|&P;5(38t<;3t;Ww zuV#b$8dNdIkDb2d^Dt0$lWaQ@PR>EeL?!5kb z(+=O1xNYoZuz%vVjq$DLZhwUIulMyg%WL{(2#Os#1{em*Ld0!(+O+@>}YKG7lY!b4#3Bq`586?Mq-SeevRpuUK zmxodIz!F~glR>4Tw$0xfbaoKp%%}418FEuNk)h8KU7su#PNaSs<}WjFziy-h&p=H% z0Vo&~#B4rUPK81sNWgP>|KaGZgHN7e6EY@oH!yyMfY*L~W&hV?avW8)u^) zBo+LSIVMU}@yb0+K!*TJ4euthpJr-8O37$D3W<`YWGx+B+SW%g2HIsct-bzNBnb0B zg{VL%rHS`Q6W3ZHk!^@Hh%(p46{{pE1(#zxZjvq5k^N(f(VO*B=Np~G(!@h^S?t0+ z$j;6zVSISi!g(-@=UD3aOQ>DJtJXB~MQC!C+a>~rg^Z9(-jDAN8;zXuJt~9&NG(SX zR`vH)BGaz3GqDI#p*hErXfJn5ndbX9KxUa?8|NkFggrvqIfqI8-3>>JERO*$X*R1p zb*Mazj7_g1Vw(;4HRFh4!m$Kvmk8n%4==hV1|xfRnF%`OssLzzbVHtVYc zYho$xa?&gc>5q#Qk}NT*{4wLcJ+*cFNe;6XVKNB;&9~2%5%m{2mgT-@?{Yc>jj;21 zNNdSF?+9l?w-o#}m`{e6R`J<2%HXyW5(k%N>jiDqsI+IsjU>av+(gZMhzj=sZEb%o z0dI!rs?T=K-E;9dnvC=y=_D@|UP5-wXmB*r`HCDB#puiSZ7#s#Xbg^kuwgbQer z-M!|`GU=lpQE09ty9MWxsw7Wc66KQ@VF%xFhLwTV8P*2~Ev0_n2Dux?U*2)Z zAQWxshd8A^bcrmPX~ypH_e!R?0)22B{lc?VqXc?6nKsgApF diff --git a/src/bin/diffutils/po/fr.po b/src/bin/diffutils/po/fr.po deleted file mode 100644 index 43cd5df4ca..0000000000 --- a/src/bin/diffutils/po/fr.po +++ /dev/null @@ -1,1033 +0,0 @@ -# Messages franais pour GNU concernant diffutils. -# Copyright (C) 1996 Free Software Foundation, Inc. -# Michel Robitaille , 1996. -# -msgid "" -msgstr "" -"Project-Id-Version: GNU diffutils 2.7.10\n" -"POT-Creation-Date: 2002-04-05 14:10-0800\n" -"PO-Revision-Date: 2002-03-17 20:00-0500\n" -"Last-Translator: Michel Robitaille \n" -"Language-Team: French \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8-bit\n" - -#: lib/c-stack.c:188 -msgid "program error" -msgstr "erreur du programme" - -#: lib/c-stack.c:189 -msgid "stack overflow" -msgstr "dbordement de pile" - -#: lib/error.c:128 lib/error.c:156 -msgid "Unknown system error" -msgstr "Erreur systme inconnue" - -#: lib/freesoft.c:27 -msgid "" -"This program comes with NO WARRANTY, to the extent permitted by law.\n" -"You may redistribute copies of this program\n" -"under the terms of the GNU General Public License.\n" -"For more information about these matters, see the file named COPYING." -msgstr "" -"Ce programme est fourni sans AUCUNE GARANTIE, tel que permis par la loi.\n" -"Vous pouvez le redistribuer selon les termes de GNU General Public License " -",\n" -"lire le texte du fichier COPYING pour plus de dtails." - -#: lib/getopt.c:693 -#, c-format -msgid "%s: option `%s' is ambiguous\n" -msgstr "%s: l'option %s est ambigu.\n" - -#: lib/getopt.c:718 -#, c-format -msgid "%s: option `--%s' doesn't allow an argument\n" -msgstr "%s: l'option --%s ne permet aucun argument.\n" - -#: lib/getopt.c:723 -#, c-format -msgid "%s: option `%c%s' doesn't allow an argument\n" -msgstr "%s: l'option %c%s ne permet aucun argument.\n" - -#: lib/getopt.c:741 lib/getopt.c:914 -#, c-format -msgid "%s: option `%s' requires an argument\n" -msgstr "%s: l'option %s requiert un argument.\n" - -#: lib/getopt.c:770 -#, c-format -msgid "%s: unrecognized option `--%s'\n" -msgstr "%s: l'option --%s n'est pas reconnue.\n" - -#: lib/getopt.c:774 -#, c-format -msgid "%s: unrecognized option `%c%s'\n" -msgstr "%s: l'option %c%s n'est pas reconnue.\n" - -#: lib/getopt.c:800 -#, c-format -msgid "%s: illegal option -- %c\n" -msgstr "%s: l'option -- %c est illgale.\n" - -#: lib/getopt.c:803 -#, c-format -msgid "%s: invalid option -- %c\n" -msgstr "%s: l'option -- %c est invalide.\n" - -#: lib/getopt.c:833 lib/getopt.c:963 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "%s: l'option -- %c requiert un argument.\n" - -#: lib/getopt.c:880 -#, c-format -msgid "%s: option `-W %s' is ambiguous\n" -msgstr "%s: l'option -W %s est ambigu.\n" - -#: lib/getopt.c:898 -#, c-format -msgid "%s: option `-W %s' doesn't allow an argument\n" -msgstr "%s: l'option -W %s ne permet aucun argument.\n" - -#: lib/regex.c:1367 -msgid "Success" -msgstr "Succs" - -#: lib/regex.c:1370 -msgid "No match" -msgstr "Pas de concordance." - -#: lib/regex.c:1373 -msgid "Invalid regular expression" -msgstr "L'expression rgulire est invalide." - -#: lib/regex.c:1376 -msgid "Invalid collation character" -msgstr "Le caractre de regroupement est invalide." - -#: lib/regex.c:1379 -msgid "Invalid character class name" -msgstr "Le nom d'un ensemble de caractres est invalide." - -#: lib/regex.c:1382 -msgid "Trailing backslash" -msgstr "Barre oblique inverse la fin." - -#: lib/regex.c:1385 -msgid "Invalid back reference" -msgstr "La rfrence arrire est invalide." - -#: lib/regex.c:1388 -msgid "Unmatched [ or [^" -msgstr "[ or [^ non repr." - -#: lib/regex.c:1391 -msgid "Unmatched ( or \\(" -msgstr " ( ou \\( non repr." - -#: lib/regex.c:1394 -msgid "Unmatched \\{" -msgstr "\\{ non repr." - -#: lib/regex.c:1397 -msgid "Invalid content of \\{\\}" -msgstr "Le contenu de \\{\\} est invalide." - -#: lib/regex.c:1400 -msgid "Invalid range end" -msgstr "La fin d'intervalle est invalide." - -#: lib/regex.c:1403 -msgid "Memory exhausted" -msgstr "Mmoire puise." - -#: lib/regex.c:1406 -msgid "Invalid preceding regular expression" -msgstr "L'expression rgulire prcdente est invalide." - -#: lib/regex.c:1409 -msgid "Premature end of regular expression" -msgstr "Fin prmature de l'expression rgulire." - -#: lib/regex.c:1412 -msgid "Regular expression too big" -msgstr "Expression rgulire trop grande." - -#: lib/regex.c:1415 -msgid "Unmatched ) or \\)" -msgstr ") or \\) non repr." - -#: lib/regex.c:8034 -msgid "No previous regular expression" -msgstr "N'est pas prcd d'une expression rgulire." - -#: lib/xmalloc.c:63 -msgid "memory exhausted" -msgstr "mmoire puise" - -#: src/analyze.c:809 src/diff.c:1283 -#, c-format -msgid "Files %s and %s differ\n" -msgstr "Les fichiers %s et %s sont diffrents.\n" - -#: src/analyze.c:812 -#, c-format -msgid "Binary files %s and %s differ\n" -msgstr "Les fichiers binaires %s et %s sont diffrents.\n" - -#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 -msgid "No newline at end of file" -msgstr "Pas de fin de ligne la fin du fichier." - -#: src/cmp.c:43 -msgid "Written by Torbjorn Granlund and David MacKenzie." -msgstr "crit par Torbjorn Granlund et David MacKenzie." - -#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 -#, c-format -msgid "Try `%s --help' for more information." -msgstr "Pour en savoir davantage, faites: %s --help ." - -#: src/cmp.c:137 -#, c-format -msgid "invalid --ignore-initial value `%s'" -msgstr "valeur invalide --ignore-initial %s " - -#: src/cmp.c:146 -msgid "options -l and -s are incompatible" -msgstr "options -l et -s sont incompatibles" - -#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 -#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 -#: src/util.c:286 src/util.c:293 -msgid "write failed" -msgstr "chec d'criture" - -#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 -#: src/sdiff.c:179 -msgid "standard output" -msgstr "sortie standard" - -#: src/cmp.c:160 -msgid "-b --print-bytes Print differing bytes." -msgstr "-b --print-bytes afficher les octets qui diffrent" - -#: src/cmp.c:161 -msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." -msgstr "-i N --ignore-initial=N escamoter les N premiers octets l'entre" - -#: src/cmp.c:162 -msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" -msgstr "-i SAUT1:SAUT2 --ignore-initial=SAUT1:SAUT2" - -#: src/cmp.c:163 -msgid "" -" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." -msgstr "" -" escamoter les SAUT1 premiers octets du FICHIER1 et les SAUT2 premiers " -"octets du FICHIER2" - -#: src/cmp.c:164 -msgid "-l --verbose Output byte numbers and values of all differing bytes." -msgstr "" -"-l --verbose afficher les numros d'octets et les valeurs de tous les " -"octets qui diffrent" - -#: src/cmp.c:165 -msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." -msgstr "-n LIMITE --bytes=LIMITE comparer un nombre d'octets selon la LIMITE." - -#: src/cmp.c:166 -msgid "-s --quiet --silent Output nothing; yield exit status only." -msgstr "" -"-s --quiet --silent ne rien afficher, produire seulement un constat de " -"fin d'excution" - -#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 -msgid "-v --version Output version info." -msgstr "-v --version afficher le nom et la version du logiciel" - -#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 -msgid "--help Output this help." -msgstr "--help afficher l'aide-mmoire" - -#: src/cmp.c:177 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" -msgstr "Usage: %s [OPTION]... FICHIER1 [FICHIER2 [SAUT1 [SAUT2]]]\n" - -#: src/cmp.c:179 -msgid "Compare two files byte by byte." -msgstr "Comparer deux fichiers octet par octet" - -#: src/cmp.c:183 -msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." -msgstr "" -"SAUT1 et SAUT2 correspondent au nombre d'octets escamoter dans chaque " -"fichier" - -#: src/cmp.c:184 -msgid "" -"SKIP values may be followed by the following multiplicative suffixes:\n" -"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" -"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." -msgstr "" -"valeurs de SAUT peuvent tre suivies par un des suffixes multiplicateurs " -"suivants:\n" -"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" -"GB 1,000,000,000, G 1,073,741,824, et ainsi de suite pour T, P, E, Z, Y." - -#: src/cmp.c:187 -msgid "If a FILE is `-' or missing, read standard input." -msgstr "Si FICHIER spcifi est - ou manquant, lire de l'entre standard" - -#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 -msgid "Report bugs to ." -msgstr "Rapporter toutes anomalies " - -#: src/cmp.c:231 -#, c-format -msgid "invalid --bytes value `%s'" -msgstr "valeur invalide --bytes %s " - -#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 -#, c-format -msgid "missing operand after `%s'" -msgstr "oprande manquante aprs %s " - -#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 -#, c-format -msgid "extra operand `%s'" -msgstr "oprande supplmentaire %s " - -#: src/cmp.c:477 -#, c-format -msgid "%s %s differ: byte %s, line %s\n" -msgstr "%s %s sont diffrents: octet %s, ligne %s\n" - -#: src/cmp.c:495 -#, c-format -msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" -msgstr "%s %s diffrent: octet %s, ligne %s est %3o %s %3o %s\n" - -#: src/cmp.c:543 -#, c-format -msgid "cmp: EOF on %s\n" -msgstr "cmp: Fin-de-fichier (EOF) sur %s\n" - -#: src/diff.c:41 -msgid "" -"Written by Paul Eggert, Mike Haertel, David Hayes,\n" -"Richard Stallman, and Len Tower." -msgstr "" -"crit par Paul Eggert, Mike Haertel, David Hayes,\n" -"Richard Stallman et Len Tower." - -#: src/diff.c:322 -#, c-format -msgid "invalid context length `%s'" -msgstr "longueur du contexte invalide %s " - -#: src/diff.c:405 -msgid "pagination not supported on this host" -msgstr "La pagination 'est pas support sur cette machine hte." - -#: src/diff.c:420 src/diff3.c:315 -msgid "too many file label options" -msgstr "Trop d'options prsentes pour nommer les fichiers." - -#: src/diff.c:498 -#, c-format -msgid "invalid width `%s'" -msgstr "largeur invalide %s " - -#: src/diff.c:502 -msgid "conflicting width options" -msgstr "option de largeur conflictuelle" - -#: src/diff.c:526 -#, c-format -msgid "invalid horizon length `%s'" -msgstr "longueur d'horizon invalide %s " - -#: src/diff.c:629 -#, c-format -msgid "`-%ld' option is obsolete; use `-%c %ld'" -msgstr "l'option -%ld est obsolte; utilise -%c %ld " - -#: src/diff.c:641 -#, c-format -msgid "`-%ld' option is obsolete; omit it" -msgstr "l'option -%ld est obsolte; l'omettre" - -#: src/diff.c:709 -msgid "--from-file and --to-file both specified" -msgstr "--from-file et --to-file ont t spcifis ensemble" - -#: src/diff.c:832 -msgid "Compare files line by line." -msgstr "Comparer les fichiers ligne par ligne" - -#: src/diff.c:834 -msgid "-i --ignore-case Ignore case differences in file contents." -msgstr "" -"-i --ignore-case ignorer les diffrences de casses dans le contenu des " -"fichiers" - -#: src/diff.c:835 -msgid "--ignore-file-name-case Ignore case when comparing file names." -msgstr "" -"--ignore-file-name-case ignorer la casse lors de la comparaison des noms de " -"fichiers" - -#: src/diff.c:836 -msgid "--no-ignore-file-name-case Consider case when comparing file names." -msgstr "" -"--no-ignore-file-name-case tenir compte de la casse lors de la comparaison " -"des noms de fichiers" - -#: src/diff.c:837 src/sdiff.c:186 -msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." -msgstr "" -"-E --ignore-tab-expansion ignorer les changements lis l'expansion des " -"tabulations" - -#: src/diff.c:838 src/sdiff.c:187 -msgid "-b --ignore-space-change Ignore changes in the amount of white space." -msgstr "-b --ignore-space-change ignorer les changements dans l'espacement" - -#: src/diff.c:839 -msgid "-w --ignore-all-space Ignore all white space." -msgstr "-w --ignore-all-space ignorer tout blanc d'espacement" - -#: src/diff.c:840 src/sdiff.c:189 -msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." -msgstr "" -"-B --ignore-blank-lines ignorer les changements dont toutes les lignes " -"sont blanches" - -#: src/diff.c:841 src/sdiff.c:190 -msgid "" -"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." -msgstr "" -"-I EXPREG --ignore-matching-lines=EXPREG ignorer les diffrences dont les " -"lignes concordent l'EXPression RGulire" - -#: src/diff.c:842 src/sdiff.c:191 -msgid "--strip-trailing-cr Strip trailing carriage return on input." -msgstr "--strip-trailing-cr liminer les retours de chariot de l'entre." - -#: src/diff.c:844 -msgid "--binary Read and write data in binary mode." -msgstr "--binary lire et crire les donnes en binaire" - -#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 -msgid "-a --text Treat all files as text." -msgstr "-a --text traiter tous les fichiers comme des textes." - -#: src/diff.c:848 -msgid "" -"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " -"context.\n" -"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " -"context.\n" -" --label LABEL Use LABEL instead of file name.\n" -" -p --show-c-function Show which C function each change is in.\n" -" -F RE --show-function-line=RE Show the most recent line matching RE." -msgstr "" -"-c -C N --context[=N] afficher N lignes de contexte (3 par dfaut)\n" -"-u -U N --unified[=N] afficher N lignes du contexte unifi (3 par " -"dfaut)\n" -" --label TIQ utiliser l'TIQuette comme nom de fichier.\n" -" -p --show-c-function identifier la fonction contenant chaque " -"diffrence.\n" -" -F EXPREG\n" -" --show-function-line=EXPREG\n" -" afficher la ligne la plus rcente qui " -"concorde\n" -" avec l'EXPression RGulire" - -#: src/diff.c:853 -msgid "-q --brief Output only whether files differ." -msgstr "-q --brief indiquer seulement si les fichiers diffrent ou non" - -#: src/diff.c:854 -msgid "-e --ed Output an ed script." -msgstr "-e --ed gnrer un script pour ed " - -#: src/diff.c:855 -msgid "--normal Output a normal diff." -msgstr "--normal produire un diff en format normal" - -#: src/diff.c:856 -msgid "-n --rcs Output an RCS format diff." -msgstr "-n --rcs gnrer un fichier de type diff en format RCS" - -#: src/diff.c:857 -msgid "" -"-y --side-by-side Output in two columns.\n" -" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" -" --left-column Output only the left column of common lines.\n" -" --suppress-common-lines Do not output common lines." -msgstr "" -"-y --side-by-side afficher la sortie sur deux colonnes\n" -" -w N --width=N limiter la sortie N caractres par ligne (130 " -"par dfaut)\n" -" --left-column afficher seulement la colonne de gauche pour les " -"lignes identiques\n" -" --suppress-common-lines ne pas afficher les lignes identiques" - -#: src/diff.c:861 -msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." -msgstr "" -"-D NOM --ifdef=NOM afficher la fusion des fichiers en indiquant les " -"diffrences par des #ifdef NAME dans le diff produit" - -#: src/diff.c:862 -msgid "" -"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." -msgstr "" -"--GTYPE-group-format=GFMT similaire, mais formater les groupes\n" -" d'entre GTYPE avec GFMT" - -#: src/diff.c:863 -msgid "--line-format=LFMT Similar, but format all input lines with LFMT." -msgstr "" -"--line-format=LFMT similaire, mais formater toutes les lignes d'entre avec " -"LFMT" - -#: src/diff.c:864 -msgid "" -"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." -msgstr "" -"--LTYPE-line-format=LFMT similaire, mais formater les lignes\n" -" d'entre LTYPE avec LFMT" - -#: src/diff.c:865 -msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." -msgstr "" -"LTYPE peut tre soit old , new , ou unchanged . GTYPE prend une " -"des valeurs de LTYPE ou changed ." - -#: src/diff.c:866 -msgid "" -" GFMT may contain:\n" -" %< lines from FILE1\n" -" %> lines from FILE2\n" -" %= lines common to FILE1 and FILE2\n" -" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" -" LETTERs are as follows for new group, lower case for old group:\n" -" F first line number\n" -" L last line number\n" -" N number of lines = L-F+1\n" -" E F-1\n" -" M L+1" -msgstr "" -"GFMT peut contenir:\n" -" %< pour marquer les lignes du FICHIER1\n" -" %> pour marquer les lignes du FICHIER2\n" -" %= pour marquer les lignes identiques entre FICHIER1 et FICHIER2\n" -" %[-][LARGEUR][.[PREC]]{doxX}LETTRE, les spcifications de LETTRE\n" -" sont identiques la notation que l'on retrouve dans printf() \n" -" dont les codes possibles de LETTRE sont\n" -" en majuscule pour le nouveau groupe, \n" -" en minuscules pour l'ancien groupe:\n" -" F numro de la premire ligne\n" -" L numro de la dernire ligne\n" -" N nombre de lignes = L-F+1\n" -" E F-1\n" -" M L+1" - -#: src/diff.c:877 -msgid "" -" LFMT may contain:\n" -" %L contents of line\n" -" %l contents of line, excluding any trailing newline\n" -" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" -msgstr "" -"LFMT peut contenir:\n" -" %L pour le contenu de la ligne\n" -" %l pour le contenu de la ligne sans fin de " -"ligne\n" -" %[-][LARGEUR][.[PREC]]{doxX}n la spcification du numro de ligne\n" -" d'entre selon le format de printf()" - -#: src/diff.c:881 -msgid "" -" Either GFMT or LFMT may contain:\n" -" %% %\n" -" %c'C' the single character C\n" -" %c'\\OOO' the character with octal code OOO" -msgstr "" -"GFMT ou LFMT peuvent contenir:\n" -" %% %\n" -" %c C le caractre C lui-mme\n" -" %c'\\OOO le caractre dont le code octal est OOO" - -#: src/diff.c:886 -msgid "-l --paginate Pass the output through `pr' to paginate it." -msgstr "-l --paginate relayer la sortie pr afin de la paginer" - -#: src/diff.c:887 src/sdiff.c:198 -msgid "-t --expand-tabs Expand tabs to spaces in output." -msgstr "-t --expand-tabs taler les tabulateurs en espaces dans la sortie." - -#: src/diff.c:888 src/diff3.c:452 -msgid "-T --initial-tab Make tabs line up by prepending a tab." -msgstr "" -"-T --initial-tab aligner les tabulateurs par l'ajout d'un tabulateur de " -"prfixe" - -#: src/diff.c:890 -msgid "-r --recursive Recursively compare any subdirectories found." -msgstr "-r --recursive comparer rcursivement les sous-rpertoires prsents" - -#: src/diff.c:891 -msgid "-N --new-file Treat absent files as empty." -msgstr "-N --new-file traiter les fichiers absents comme des fichiers vides" - -#: src/diff.c:892 -msgid "--unidirectional-new-file Treat absent first files as empty." -msgstr "" -"--unidirectional-new-file traiter les fichiers absents comme vides" - -#: src/diff.c:893 -msgid "-s --report-identical-files Report when two files are the same." -msgstr "" -"-s --report-identical-files indiquer si les deux fichiers sont identiques" - -#: src/diff.c:894 -msgid "-x PAT --exclude=PAT Exclude files that match PAT." -msgstr "" -"-x PAT --exclude=PAT exclure les fichiers dont les noms concordent avec le " -"PATron" - -#: src/diff.c:895 -msgid "" -"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." -msgstr "" -"-X FICHIER --exclude-from=FICHIER exclure les fichiers dont les noms\n" -" concordent ceux contenus dans le FICHIER" - -#: src/diff.c:896 -msgid "" -"-S FILE --starting-file=FILE Start with FILE when comparing directories." -msgstr "" -"-S FICHIER --starting-file=FICHIER dbuter la comparaison des\n" -" rpertoires par le FICHIER" - -#: src/diff.c:897 -msgid "" -"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." -msgstr "" -"--from-file=FICHIER1\n" -" comparer le FICHIER1 toutes les oprandes.\n" -" FICHIER1 peut tre un rpertoire." - -#: src/diff.c:898 -msgid "" -"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." -msgstr "" -"--to-file=FICHIER2\n" -" comparer toutes les oprandes FICHIER2.\n" -" FICHIER2 peut tre un rpertoire." - -#: src/diff.c:900 -msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." -msgstr "" -"--horizon-lines=N retenir N lignes ayant des prfixes et suffixes " -"identiques" - -#: src/diff.c:901 src/sdiff.c:200 -msgid "-d --minimal Try hard to find a smaller set of changes." -msgstr "" -"-d --minimal si possible afficher le plus petit ensemble de diffrences." - -#: src/diff.c:902 -msgid "" -"--speed-large-files Assume large files and many scattered small changes." -msgstr "" -"--speed-large-files traiter de grands fichiers et ayant plusieurs petits " -"changements disperss" - -#: src/diff.c:907 -msgid "" -"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." -msgstr "" -"FICHIERS sont FICHIER1 FICHIER2 ou RP1 RP2 ou RP FICHIER... " -"ou FICHIER... RP'." - -#: src/diff.c:908 -msgid "" -"If --from-file or --to-file is given, there are no restrictions on FILES." -msgstr "" -"Si --from-file ou --to-file est fournie, il n'y a pas de restriction sur les " -"FICHIERS." - -#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 -msgid "If a FILE is `-', read standard input." -msgstr "Si le FICHIER spcifi est - alors lire de l'entre standard." - -#: src/diff.c:920 -#, c-format -msgid "Usage: %s [OPTION]... FILES\n" -msgstr "Usage: %s [OPTION]... FICHIERS\n" - -#: src/diff.c:949 -#, c-format -msgid "conflicting %s option value `%s'" -msgstr "valeur %s conflictuelle de l'option %s" - -#: src/diff.c:962 -msgid "conflicting output style options" -msgstr "options de style de sortie conflictuelles" - -#: src/diff.c:976 -msgid "regular empty file" -msgstr "fichier rgulier vide" - -#: src/diff.c:976 -msgid "regular file" -msgstr "fichier rgulier" - -#: src/diff.c:978 -msgid "directory" -msgstr "rpertoire" - -#: src/diff.c:981 -msgid "block special file" -msgstr "fichier spcial-blocs" - -#: src/diff.c:984 -msgid "character special file" -msgstr "fichier spcial-caractres" - -#: src/diff.c:987 -msgid "fifo" -msgstr " fifo " - -#: src/diff.c:991 -msgid "socket" -msgstr " socket " - -#: src/diff.c:994 -msgid "message queue" -msgstr "queue de messages" - -#: src/diff.c:997 -msgid "semaphore" -msgstr "smaphore" - -#: src/diff.c:1000 -msgid "shared memory object" -msgstr "objet en mmoire partage" - -#: src/diff.c:1003 -msgid "typed memory object" -msgstr "objet mmoire typ" - -#: src/diff.c:1006 -msgid "weird file" -msgstr "fichier bizarre" - -#: src/diff.c:1070 src/diff.c:1256 -#, c-format -msgid "Only in %s: %s\n" -msgstr "Seulement dans %s: %s\n" - -#: src/diff.c:1193 -msgid "cannot compare `-' to a directory" -msgstr "Ne peut comparer - avec un rpertoire" - -#: src/diff.c:1220 -msgid "-D option not supported with directories" -msgstr "L'option -D ne traite pas les rpertoires." - -#: src/diff.c:1229 -#, c-format -msgid "Common subdirectories: %s and %s\n" -msgstr "Les sous-rpertoires %s et %s sont identiques.\n" - -#: src/diff.c:1266 -#, c-format -msgid "File %s is a %s while file %s is a %s\n" -msgstr "Le fichier %s est un %s alors que le fichier %s est un %s\n" - -#: src/diff.c:1345 -#, c-format -msgid "Files %s and %s are identical\n" -msgstr "Les fichiers %s et %s sont identiques.\n" - -#: src/diff3.c:26 -msgid "Written by Randy Smith." -msgstr "crit par Randy Smith." - -#: src/diff3.c:328 -msgid "incompatible options" -msgstr "options incompatibles" - -#: src/diff3.c:368 -msgid "`-' specified for more than one input file" -msgstr " - fourni pour plus d'un fichier d'entre" - -#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 -#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 -msgid "read failed" -msgstr "lecture non-russie" - -#: src/diff3.c:441 -msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." -msgstr "" -"-e --ed afficher les diffrences non fusionns selon l'ordre suivant:\n" -" entre le fichier ORIGINAL et le fichier MODIFI\n" -" vers le fichier de SORTIE" - -#: src/diff3.c:442 -msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." -msgstr "-E --show-overlap afficher les diffrences entre crochets" - -#: src/diff3.c:443 -msgid "-A --show-all Output all changes, bracketing conflicts." -msgstr "-A --show-all afficher toutes les diffrences entre crochets" - -#: src/diff3.c:444 -msgid "-x --overlap-only Output overlapping changes." -msgstr "-x --overlap-only afficher les diffrences qui se recoupent" - -#: src/diff3.c:445 -msgid "-X Output overlapping changes, bracketing them." -msgstr "-X afficher les diffrences qui se recoupent entre crochets." - -#: src/diff3.c:446 -msgid "-3 --easy-only Output unmerged nonoverlapping changes." -msgstr "" -"-3 --easy-only afficher tous les changements non fusionns qui ne se " -"recoupent pas" - -#: src/diff3.c:448 -msgid "-m --merge Output merged file instead of ed script (default -A)." -msgstr "" -"-m --merge afficher le fichier fusionn plutt qu'un script ed " -" (implique -A)" - -#: src/diff3.c:449 -msgid "-L LABEL --label=LABEL Use LABEL instead of file name." -msgstr "" -"-L TIQ --label=TIQ utiliser l'TIQuette plutt que le nom du fichier" - -#: src/diff3.c:450 -msgid "-i Append `w' and `q' commands to ed scripts." -msgstr "-i ajouter les commandes w et q au script ed " - -#: src/diff3.c:453 src/sdiff.c:202 -msgid "--diff-program=PROGRAM Use PROGRAM to compare files." -msgstr "" -"--diff-program=PROG utiliser le PROGramme pour comparer les fichiers." - -#: src/diff3.c:465 -#, c-format -msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" -msgstr "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" - -#: src/diff3.c:467 -msgid "Compare three files line by line." -msgstr "Comparer trois fichiers ligne par ligne" - -#: src/diff3.c:673 -msgid "internal error: screwup in format of diff blocks" -msgstr "Erreur interne: mlange dans le format des blocs diff " - -#: src/diff3.c:971 -#, c-format -msgid "%s: diff failed: " -msgstr "%s: chec de diff : " - -#: src/diff3.c:993 -msgid "internal error: invalid diff type in process_diff" -msgstr "Erreur interne: type de diff invalide dans process_diff" - -#: src/diff3.c:1018 -msgid "invalid diff format; invalid change separator" -msgstr "format de diff invalide; sparateur de changement invalide" - -#: src/diff3.c:1242 -msgid "invalid diff format; incomplete last line" -msgstr "format de diff invalide; dernire ligne incomplte" - -#: src/diff3.c:1265 src/sdiff.c:273 -#, c-format -msgid "subsidiary program `%s' not executable" -msgstr "programme de service %s n'est pas excutable" - -#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 -#, c-format -msgid "subsidiary program `%s' not found" -msgstr "programme de service %s non repr" - -#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 -#, c-format -msgid "subsidiary program `%s' failed" -msgstr "chec du programme de service %s " - -#: src/diff3.c:1294 -msgid "invalid diff format; incorrect leading line chars" -msgstr "" -"format de diff invalide; caractres incorrects sur la ligne d'annonce" - -#: src/diff3.c:1370 -msgid "internal error: invalid diff type passed to output" -msgstr "Erreur interne: type de diff invalide fourni output" - -#: src/diff3.c:1647 src/diff3.c:1704 -msgid "input file shrank" -msgstr "Le fichier d'entre a rtrci." - -#: src/dir.c:162 -#, c-format -msgid "cannot compare file names `%s' and `%s'" -msgstr "ne peut comparer les noms de fichier %s et %s " - -#: src/sdiff.c:35 -msgid "Written by Thomas Lord." -msgstr "crit par Thomas Lord." - -#: src/sdiff.c:183 -msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." -msgstr "" -"-o FICHIER --output=FICHIER agir intractivement, avec sortie sur FICHIER" - -#: src/sdiff.c:185 -msgid "-i --ignore-case Consider upper- and lower-case to be the same." -msgstr "-i --ignore-case banaliser majuscules et minuscules" - -#: src/sdiff.c:188 -msgid "-W --ignore-all-space Ignore all white space." -msgstr "-W --ignore-all-space ignorer tout blanc d'espacement" - -#: src/sdiff.c:194 -msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." -msgstr "" -"-w N --width=N limiter la sortie N colonnes par ligne (130 par " -"dfaut)" - -#: src/sdiff.c:195 -msgid "-l --left-column Output only the left column of common lines." -msgstr "" -"-l --left-column afficher dans la colonne de gauche les lignes identiques" - -#: src/sdiff.c:196 -msgid "-s --suppress-common-lines Do not output common lines." -msgstr "-s --suppress-common-lines ne pas afficher les lignes identiques" - -#: src/sdiff.c:201 -msgid "" -"-H --speed-large-files Assume large files and many scattered small changes." -msgstr "" -"-H --speed-large-files traiter de grands fichiers ayant plusieurs " -"changements parpills" - -#: src/sdiff.c:214 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 FILE2\n" -msgstr "Usage: %s [OPTION]... FICHIER1 FICHIER2\n" - -#: src/sdiff.c:215 -msgid "Side-by-side merge of file differences." -msgstr "Fusion cte cte des diffrences des fichiers" - -#: src/sdiff.c:327 -msgid "cannot interactively merge standard input" -msgstr "Ne peut fusionner l'entre standard, interactivement." - -#: src/sdiff.c:588 -msgid "both files to be compared are directories" -msgstr "Les deux fichiers comparer sont des rpertoires." - -#: src/sdiff.c:853 -msgid "" -"ed:\tEdit then use both versions, each decorated with a header.\n" -"eb:\tEdit then use both versions.\n" -"el:\tEdit then use the left version.\n" -"er:\tEdit then use the right version.\n" -"e:\tEdit a new version.\n" -"l:\tUse the left version.\n" -"r:\tUse the right version.\n" -"s:\tSilently include common lines.\n" -"v:\tVerbosely include common lines.\n" -"q:\tQuit.\n" -msgstr "" -"ed:\tditer les deux versions, chacune chapeaute d'une en-tte\n" -"eb:\tditer puis utiliser les deux versions\n" -"el:\tditer puis utiliser la version de gauche\n" -"er:\tditer puis utiliser la version de droite\n" -"e:\tditer une nouvelle version\n" -"l:\tutiliser la version de gauche\n" -"r:\tutiliser la version de droite\n" -"s:\tinclure les lignes identiques silencieusement\n" -"v:\tinclure les lignes identiques et le signaler\n" -"q:\tquitter.\n" - -# src/diff.c:882 MRO -#~ msgid "--inhibit-hunk-merge Do not merge hunks." -#~ msgstr "--inhibit-hunk-merge ne pas faire la fusion des hunks" - -#~ msgid "context length specified twice" -#~ msgstr "La longueur du contexte a t spcifi deux fois." - -#~ msgid "multiple `--from-file' options" -#~ msgstr "options multiples de `--from-file'" - -#~ msgid "multiple `--to-file' options" -#~ msgstr "options multiples de `--to-file'" - -#~ msgid "regular empty executable file" -#~ msgstr "fichier rgulier excutable vide" - -#~ msgid "regular executable file" -#~ msgstr "fichier rgulier excutable" - -#~ msgid "" -#~ "SKIP values may be followed by the following multiplicative suffixes:\n" -#~ msgstr "" -#~ "Les valeurs de SAUT peuvent tre suivies par un des facteurs " -#~ "multiplicatifs suivants:\n" - -#~ msgid "kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" -#~ msgstr "kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" - -#~ msgid "GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y.\n" -#~ msgstr "" -#~ "GB 1,000,000,000, G 1,073,741,824, et ainsi de suite pour T, P, E, Z, Y.\n" - -#~ msgid "Report bugs to .\n" -#~ msgstr "Rapporter toutes anomalies \n" - -#~ msgid "If a FILE is `-', read standard input.\n" -#~ msgstr "Si FICHIER spcifi est `-', alors lire de l'entre standard.\n" - -#~ msgid ": not found\n" -#~ msgstr ": introuvable\n" - -#~ msgid "-D%s: conflicting #ifdef format" -#~ msgstr "-D%s: format #ifdef conflictuels" - -#~ msgid "%s: conflicting line format" -#~ msgstr "%s: format de ligne conflictuel" - -#~ msgid "conflicting group format" -#~ msgstr "formats de groupes conflictuels" - -#~ msgid "--ignore-initial value must be a nonnegative integer" -#~ msgstr "La valeur de --ignore-initial doit tre un entier non-ngatif" - -#~ msgid "column width must be a positive integer" -#~ msgstr "Le nombre de colonnes doit tre un entier positif." - -#~ msgid "context length must be a nonnegative integer" -#~ msgstr "La longueur du contexte doit tre un entier non ngatif." - -#~ msgid "horizon must be a nonnegative integer" -#~ msgstr "L'horizon doit tre un entier non ngatif." diff --git a/src/bin/diffutils/po/gl.gmo b/src/bin/diffutils/po/gl.gmo deleted file mode 100644 index d1243f6234df3d015b77a0ae36c4e2cbd344c925..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23855 zcmb`Pdyr(;UEi;Q4c6F3wj|rKgwc_#-PKCdy)!GxTF+|b9nH?}jH)o1HLPYZrKM?Zkh4VZ%M%l_dgCgP~Ytb{}iPCTi+CrHlj1!Q=-Sgp9J~t*8c=P z6h&{l8N3%f4N~WA&w=#+w%-6xfPVGmH3>F0L6r`S3U z8u*?3cLzwl@0fk<5 z8eG5o?cQJ?PQSfTOe+bg=UH=AeOXHfkyhI>8<-UWUUWN!ETUbz3SAnUj9%^>TyuLAA|FN1uy?`J@Gb>BY@ z@BbYLZ|~tMaJ~}-v0)E8%ujD_yWk7 zB6$10Zv~p+5v!$3vnoa1c zgLm`k8$swl3GMWLauwv+j2N9{?<(|1e_+IY6glPU2 zm_^Zh#0PVr=m@PIhE~zT{P%wFt>BM<$iTxt2f`N*e-#`Dulf5Uj8*G?-cjQ+<=z8S$K*oLKFFd}Nu}3+oNPN-;8Iu-o3K~YI!DaA0;7@_`;2(g{`KSY@ zLCyOK@WUYQkNysb3_SvGY8@W=X^{Cp@|)lSqQe>(YF<1)_KP60aqNG9r%*```uC51 zw}1cWzXGdNfj8Cu`)2+7_x)(VKLP3c_#}7&)I1r}aka;|rs1{dBcR&j`Ly`!I4bf8 z_&j(OWWJC6Pmum+;2HHd(`21K0e+VI$55@}U-)#EHPpCgKM6vg*?;fxBy*MAo_rRh zos*vf9jNtWT&HdX9|EC)=yvM+K)yev^}nCXo4`jv(UUr-#SbUJ-v;OS@7uu{@EMTr z<}@yNXzouz==V5lEctr;10ZcYE`Fi@VX%Vf{Q;0~&-^;b z9L{Jy_kf}kI1jJLKF>22wKFfeLx=f)9o|dcpvQvb{5W_Kgq{nZ2WfBN_rd+3*26{7 z;vL}aAafO;FG^nEmBo*M-vNFGd<*y$kTw_pIjDO7!Q;}mfNzeXC1|Ghm!N^#T{;gw z2Z|5*cInSR#{1;Yf%Ns{e*|A2Ma%RZeFJphZK%{6KzL+D&l%f_=yMCW8Swdlp8{Ef zmA?Zz@XH|bxAJumy|4<1Z&tMqPl5{|?XP|=py*3KtA7A8?z5T)_0K{Z+1ayaLFRw< zfz)4IWjYab2oe= zZ=yU;(Qkorj`DHJ-=Z*Qt+#Ytbcv$*#FS4{eu|=>cu>E;LHQwy<{-L#8|4woyD7&h zKTi3Z6#ZD+XpQ11XDP)`^VY9TX;Cgv;1}r*t!wo26!=57Mf(c-!5{X!!oTo9q_tqp z<$v1mF8=+|aQ!0z%kcf&+!r1^1^y)Ednuoy{4C|Olpmy&e_!V2Y03|ThtuF>xIP0O zqMW8Y9G;yAH^cP_ut%v;mMNzw`u&0j`N7dIQji<_{TTm#j8gZv_V3N%`u*Ty>A5c7 zNBQM#&m;$u2`L8TTec|rdz6cmuTV0|9OaXgzfRHbjg%$@zP8^N`S&A~dno8w`#l@* zqu?7TS&0m}DL{u<@; zlrH6M6#agJa+LCR$_FWLp%lNzxcG$KI5(Siw~~%Kb#i{yWgT}$*o?2bTGr~uX=`fC z@!PkL;;(84W)3*VH!e?Gn~lWPw&G4)>(a(dQRDpL;$o;Yczc9dlsGd6Q``!rY5gd^B?X?=+~;$2YoPQ&AAO|nAE47JxLpl zWD`Nj+T9dhu2kH}$<*N0&0dq`_09Av zQs*jp0?u7Rp*wIxNcl~xs!GiSC6}~OIt3y zZlYvWTg+N%ce2e++&s3lym)GP8f9=6tyJ8gDp8tkX|oNOFxOYoyA|D82bD@U^LOhR zT3lK&-AI#qx#BS|MQ$cEsHceJGa>D zN)dFoSa&_KH(4kBP}VX6=EoM!GKD9Sr0sMiqM95_dV~6Jcan|tiVZ&RZE&eZ(#=-Z zf&NUZ(u$i&#gwy~v&UXjU*1Yuff~|iMgdhdqFmqVX}$whwr%ZN*>0nl$y#|@FD%BM z<6ss|v_nCt*o6mLYR!}NN$M3ibkk2ZcWye*5q~TS&-^MIZJN^Gc`fc@zY&p~W--sE zR&B<4x0ALjg@UitI;c`T8tD95-07q-jdqf5uhVjXoWlEnGdO4e#1 zIDx@>t!4r_>X5IMT}nEQxZT#G59U9u5A&_;az$eoc3DvAevLA&H)Y&7Ghht4|vz+`{xccASPb>dD42e-{QHhHeas zkZF+a;=8S)eTI&O8#I&?g+6a(U6=RT?X1&f(x#mX=}VJ5s`#$FjCAAmN^+$g!;`G& z_EFb+i58AZxB{UPJy`=ru0YN{$@-)YwB40%r;XzOzxa2~Ete;S2Cr?gQbCL8T_O9U zmV>3RFKC3xopEQTADhKbsvueGN#j_!l_vFxQg&ho#rXgTdcT z+DXehb9%{_PurKC5ny)oNnA_%v=aMY-jcrb^Td@Y)O|EoZp$iyaUj^s|m6&{A9BtGU&xrj= z1-?|fvLbOa>!D9r$>Et=JGMipc<<3IX}b_SLMZ`zOpi5soH6r6&*oZR>8{CeUFZ`_ zw(DL5JMJ~Q?ty~?J66lu7+3F*GyJhikH*dxjiCx zs~i+zt+IjRZEmSskSx5$K-?!sUTwoNCTZ(fg#aCJ3GqU&I+;SJ&odcR|zh$15;#}e4Eo7N_$?$}`Uygw;T=jmOR?53t*=C|KQ*%+6sK%dkDF|SM?WFSnt zQt8z2%LdH2JhM{lC4wK8Ryh`K3lCe0QPScc7mCNnJ=B4xNzkf`^1zuX z+{y(4d?{&M9Y;*O>M!W$zh;QfsfG1Unr!q3X-kC3f!>{MetO+1TjV@MmYIYD(9S=yPEM}$h!4J>Hp#$?quz;G{VlJKGTtrmT|#eLe^$f$E! zb%Gwb9vghw*`}ycxt!L!TYiTWS}yox$lgpoFmW)5S?=HsQ?~SbMg0adKI|@!uZ7Eg#{7YnAH>R@AV+*0R5>k(dA6EXUKYWoBlhhnjiqT1V!q@)~&K zF~3ju{I<_47r@KRScDiWP?--!EX(?W_SQDd+x_tp@HO{%ckf7jjWB!#bJ_Ht*9 zKF^z~|VBCt+ z2yqE`pm~>`j#)K}pGiD4O+>IStvg>Abeh|M{DXJ|p}qdjQax^>Z(8G$Wkq8ttqlJ` z8&~sEq$6zXE7gdWV!PIN7b`ZEW|}LIJYkT@FPsZri`uty+l6t+N-TA%cT4 z(9v9Yj1v+<rftZh#(+jKTkRmqqjDSs(3@~P)nGzZ@0yg5y)vM*~+F&FaBjTQ;^whK|8Oc-K%`7gRn_D5xPT%xMHH0o*q&9^q-_toHF3$Lhr<^xT-fWQ zmEB(YeTpmgF~ufkEP9$4GK(%zSz<%#W;ZvJP8a@9i5Z-ZxlS76?nHcv!-v!H)g&Ju zTV~@YT}f1;(IArO+5HTStm^2iT5fY0Nx14(V5hC2=c`*;lSti}tb-d^8pCSVS^r>0 zJnq99*aIvzFW1%9z1@mR=dDcj}$x)ZlmrJ{QRq4S|v`}+u zgo+0Sk?jG85P(orQ#`4tv=}a0Z)7NX3xmVO{*eOXx-u<=@6vvpPn0d6@hf}JV^2N>Zt zEm!B{Mmv@esf;-ah*2ojv1EPE&#BPZUO}3|_LZRz>U2ic>7<)mT{ox{>JVV(ShxR} z<`pv8*(hxmFSfOmPu;izZ?w8*8g+QuKdJCL+p$YiH$LTern^>oZtBJ-du(LKBJ^`7 zhO&03;#X!P-N>S}Wn9%w*Go$>;9H`^NYk@aLx~bb_Zn^r&Sr^`Yk6F*d$lcIm#L85 z_<$Z>#}{oJ8`cT~;`w67Cq!D3%Y+V#Mu>)qN!Bu!9?ch;Tn{U`$wv7{^p2kreq?5Nqnl4@x-9)0R*ThP~|z zKNqUV3Cj~yLCh&vzx^$Lo;7lmUT$pQ&F$_PW?RO@J=aTmNfeydJ}1N*EUce$5J*SR zL;8Xpw)9Y$L81^Gk&PWb8sLFHd?UIL6)uCfhUO*vv+Aht$LW~GYr*1?sl*(=ugyf0 zD2GxoN0?2v{y}IN<>=4^=*nr<=5m9mm~OoX9@vQO5gWx+2cE@9M45129_{v86H2ZS zgkT$v!rrTz#ULWNn|2yz+SbQM3#BHJ*gpEpNs8&SdHUnmK$N9UrrA~I>J{W!4!J+z zH+R(?u0C9yoETeLT&>LL;ELCk6DYYUcX(praAo4b%EUu%^1-ReiOR&03015t<7umz zp?VKgCJ(#Gho&AneE$Ug>ev}FMJo6`E!-X0Y|1?z*Ru7@t#Uf|V&)zL7;okt`5-3< zoisbn)|6l)0`Mr`wl;h4RAn`Zn^W!-s-Tu)^B&o3_c%D{#C1GK25`KV^r{k45RpALx3X9{a^#`+l9|%4 ztWmRLs>~vf60RwCgd=Ve6+(6p$1BQNX>*>fqgm;$U9ysh8^oP!BXf~TucUfkuBV%5 zD$7PHB_gSh;Vvu@=_Ndrx*}sUr^{(brN`wYBt3?(ue7uqwr^ZwSjs?}UYI$(I3fdS znG?q(9Iw~nTKY0Bf6hinJ1(^L1_4bJf9yy{TAsE%8y)TX+nk+-om~@iVmp=ix{6(0 z%E&zGwKFVh%Mm<(C9kn*WH+G3G7K9@B12h8tyl0OGBOI(Z4=Ik(ReS#p+n0}8dSk3 z!y`K@aqd-A(g~-?@=YZv?OY5F-?aWIYr)X^Bict?ciZ!jqV!^msu_fd8(o0K)kjEe zD^7Ep%|4|mja&_4v|%Nx+tz?Ki;4MB^z)Qn@M%i!UL)zjkgnwJ)e^8*=#`U}+`YtJ zVOUacvizVTT|S5Dg^=^4+TMKN;NHvp26gFg5$`swG?-LaA+8pRlqTj`@ZE5QBB3c% z=qEIZaj;(sTaXepl-LBh28m6tR?oe#M}8Ab)(iPfS=(5fbN8^vOj*xTmQ#2yYh`wK z=%pMV`#hvNsg<}6JrdWWJv2Zw>2@-o;Zv%N(Rd+bI>n=2DyWj?_~CoC;**`Ov&)da z^v%`YZHyy_H-c#DjhSRGF&n5_PIoGiyTrAZ)EPV_+Ry>udfHL;6tW`ym?7VmLzOBH zKQey`Ej`<0K{iE%B9Cg?>r?Z#>a44z?&S`tE60t6~H1S3rw=^dR?SE^#=k zR$g~aNG=08!2=E;2_)og;UnTx!E|UE+cx+Yn)b-ltzMJ5{gy~9Zf%NJ(Vc7qT3iMz zLSua2$;EFpwKI2Xwn64%%kw7rTEtiQ7(P)FSLUwCFd_&$X{qK0$y_t1`^j9a>JHwM zE%yFSi3@F}+Cs7KF|pbsp^H4m@^sCX;!6=IkaZHFW49hRf?!o1(D6(uyDKnvK@;gi zVnT5{)_Ul802zn#duS^olqHZ@T7u4dUHH71R%m9NZq>DqkEkKkoqWX(63(cg(B3Iu zp6JD(ST_XxCA{om_JtEkD8uYo_SfS4EOQIVUv^`Ilg=r)VK5a9&bWyvQIQA6HyqDQ z7Y375FwLIHUxOq%6_vvF-xX_f9eH5GQ)xq6wpx}2hPw(kvE{{KPapS`SN>`IjZcQAoiN1$coW(gs-U-ytxHoH3aqzL3w z%KRPSV(y)8dI=gD4N1(9$ch}#ovIQ)dpN%g`7zsE@W>vrqja+wPg13pvHL30&GdAJ z&OU@JG5}SRz?C#z*|cb(?G!i!W_-TcNz%qTMk#bki7WI-n>luxFTsKMuy`xxs`v0A zMiX-IxrU(KP%Ukz{fz+q@0GPy(o;C~@TN&{kTt#~gRKy)fi~3=W2sGf=!lU~zQ8C) z3jZ^GLT<}w6CLd|d`N|>=~|{agiS59*nFimdg>(?iuAXRglw=N41OpB&Xi}NyapU# zN>e*>G|Q_b!)@br6a>tND~V+DUqL?l-I)wGprH@p4fYgN4;gWPMCx`qBkqrs5f_y1 z0x#DdxG=EgCN2ybVzpEB^&l6{H#5kEyS`?ue$5){OPvYY+1XW`x{~DCgFPjW#o8q= zF3biF*E%cNO&j?cuXyQQB-OU>dJ^LTN&QCCHLr2TfvT1zw8jf2dR5L56G_vL$fCm? zAz23z!3Az>^;Pi-`Hx7Kd;{B|`mTe=!D^D@gViOSuI$YCY&v5TW%cZ=Q#3ZD^65nC z<*C^-XBLTVtj?Y_r3Crr{UuH9OsktyeyS8D9*p0*616Jq^1#)^;t!n7JsR4>JrxsL z%wb@5eM7UYO~S#ZYb9Uk25c{BcbqDbbQg2y38GPvcV{1=t@-tRi`2(`@M(4yMQX=aa4Z|zNZ40|bA6Uw;9qFrVa5!_71XF6p|BGkw8<6 z7RniR#rLB;o`HDcUIyMXO1rhn^aUCsh7VBiqj06&uvC z;vO@oIm$O-U)Ic01S7n&ihS(#v3m1iYul?4rNJBLyTJh+L02SqT#@Fw_=UCb)WoJ0 zCYI*P$#8@nax&G`d=Xl!JuE4O4YImMmAzPM;; zM?RLFqdBKB#oFGQX4uBiyCv%(!*Kt=#Zct7Fmwn;e+t8idqJW?u7c_KJX>d15c{*j zmqod~^7vlOD4ei51OglFoOb5Nr8U%IAAY(l{cYuMnx7o=y*bHDAm= zT-q(M&#Sz_@`zgsL!_;=<4fEW8X1x37x;OgNW`|UK>nbVeA3@*o;nPdDm0U0a?QRD z=luopUB4ETmESG-Z!cb3Ec0&&Ct32F<-`pKQpZTr8KlJ`eylDU*fK`^-<1Z*-R9P7 ziD5Rs(tY7(Us~>abfs+qCOt+=f@;LjrHf|gmKRs-OyQz#m8!zdUw?x;$PV;3_QvN1 z60}w|<+u3Uz{S286GtWhi>3yp1~p7^&cLdcYK&OYZ-&HVLTR6C;-$YD;r|thS;vBB^ zpJ&m|@B1&~$TAR_Uy^TTibpV^7Jt-{4m67Vy8csHdY$HI%EsELXCJn*+fqHOrO%2i z58MKpY1WBWUY1i<xaiI$v8!nO*(y%VrOc zRfa%eVY_9mxU!Hf@>kA(%y!Frtdi8ILKc|geD}d4)qdV%@yfp@@3BhWW0kzes^vYR zO!60fJbaM!hzOJQ$SGCga9zDkFAmbk0kWhI&TDkCPl+bzqT!L4zbnbKJ9a z8sE`B=M{1_9@7K{Don5P+< zM&8tG&54B9O9_#-3Zcbilt(`!vixEwC35J+j-1HE?Z}Ai2YW+maxh<|jX^G^RcvJV1@tKLhHlJF3L%I=R_0!{ zNjFK-uEyZAGpTE%BgdlOYITep&AmDzQ*-C*>uZ@*&bbyDoPN(J7o_ml(Ul|}Dz@wy zq^hLO-Rf>Y@j3x43kX!l$n9K-Q?grGNz3ZYER7Et(0Ncdf!WCKELK_W6KrjHo~->S z5rom$P&JZXBwxfcZwu|npFNoGWI+(I{-tZAesY{^Tlqo8XZfoS?D`d1pRzyKJWFot ziYdacI6+0AMM52vfFczeK?>mQBIncOaxkiLg>9Li+iP+tiiuZVE#pzdPO)xJ!+v{l z)E^1elP47zFuZ7J ze&MJdXJ(iTaU|j2KJ6^B#LKde4Qt4xYaf=!SJ26<6}}I8w9kGR{B}mPnOf>3g3Sx| zBgDs&c?CVpicr7;fwsBO=uuiQNB^vm|4|FwG_Uceo~_uk3(HkF$r=SoLeQ~+vn!{& zZ%4w>c{ujn{yfT)<~7z930XHk+0Tu?@X*G|EP&jhD5RV+wRQGDCVQq(+x+i*BCl07 zVC~h4u?$9s^Bhu9Id(FV?D5Vx>xFU(s;GhWQb>&{?(u0<$KT31?I=;4Md1H2g7uU? e$W1|)(eve087UtSi5Mhz1#NNU_*)NA_x}MF8}3m6 diff --git a/src/bin/diffutils/po/gl.po b/src/bin/diffutils/po/gl.po deleted file mode 100644 index 0e8fc51144..0000000000 --- a/src/bin/diffutils/po/gl.po +++ /dev/null @@ -1,997 +0,0 @@ -# Galician translation of GNU diffutils -# Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. -# Jacobo Tarro Barreiro , 2000, 2001, 2002. -# -msgid "" -msgstr "" -"Project-Id-Version: diffutils 2.7.10\n" -"POT-Creation-Date: 2002-04-05 14:10-0800\n" -"PO-Revision-Date: 2002-03-12 15:52+0100\n" -"Last-Translator: Jacobo Tarro Barreiro \n" -"Language-Team: Galician \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8-bit\n" - -#: lib/c-stack.c:188 -msgid "program error" -msgstr "erro do programa" - -#: lib/c-stack.c:189 -msgid "stack overflow" -msgstr "desbordamento da pila" - -#: lib/error.c:128 lib/error.c:156 -msgid "Unknown system error" -msgstr "Erro do sistema descoecido" - -#: lib/freesoft.c:27 -msgid "" -"This program comes with NO WARRANTY, to the extent permitted by law.\n" -"You may redistribute copies of this program\n" -"under the terms of the GNU General Public License.\n" -"For more information about these matters, see the file named COPYING." -msgstr "" -"Este programa ven SEN GARANTA, ata o permitido pola lei.\n" -"Pode redistribur copias deste programa baixo os termos\n" -"da Licencia Pblica Xeral de GNU.\n" -"Para mis informacin sobre estas materias, vexa o ficheiro chamado COPYING." - -#: lib/getopt.c:693 -#, c-format -msgid "%s: option `%s' is ambiguous\n" -msgstr "%s: a opcin `%s' ambigua\n" - -#: lib/getopt.c:718 -#, c-format -msgid "%s: option `--%s' doesn't allow an argument\n" -msgstr "%s: a opcin `--%s' non admite un parmetro\n" - -#: lib/getopt.c:723 -#, c-format -msgid "%s: option `%c%s' doesn't allow an argument\n" -msgstr "%s: a opcin `%c%s' non admite un parmetro\n" - -#: lib/getopt.c:741 lib/getopt.c:914 -#, c-format -msgid "%s: option `%s' requires an argument\n" -msgstr "%s: a opcin `%s' precisa dun parmetro\n" - -#: lib/getopt.c:770 -#, c-format -msgid "%s: unrecognized option `--%s'\n" -msgstr "%s: opcin non recoecida `--%s'\n" - -#: lib/getopt.c:774 -#, c-format -msgid "%s: unrecognized option `%c%s'\n" -msgstr "%s: opcin non recoecida `%c%s'\n" - -#: lib/getopt.c:800 -#, c-format -msgid "%s: illegal option -- %c\n" -msgstr "%s: opcin non permitida -- %c\n" - -#: lib/getopt.c:803 -#, c-format -msgid "%s: invalid option -- %c\n" -msgstr "%s: opcin incorrecta -- %c\n" - -#: lib/getopt.c:833 lib/getopt.c:963 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "%s: a opcin precisa dun parmetro -- %c\n" - -#: lib/getopt.c:880 -#, c-format -msgid "%s: option `-W %s' is ambiguous\n" -msgstr "%s: a opcin `-W %s' ambigua\n" - -#: lib/getopt.c:898 -#, c-format -msgid "%s: option `-W %s' doesn't allow an argument\n" -msgstr "%s: a opcin `-W %s' non admite un parmetro\n" - -#: lib/regex.c:1367 -msgid "Success" -msgstr "xito" - -#: lib/regex.c:1370 -msgid "No match" -msgstr "Non hai coincidencias" - -#: lib/regex.c:1373 -msgid "Invalid regular expression" -msgstr "Expresin regular incorrecta" - -#: lib/regex.c:1376 -msgid "Invalid collation character" -msgstr "Carcter de ordeacin incorrecto" - -#: lib/regex.c:1379 -msgid "Invalid character class name" -msgstr "Nome de clase de caracteres incorrecto" - -#: lib/regex.c:1382 -msgid "Trailing backslash" -msgstr "Barra invertida ao final" - -#: lib/regex.c:1385 -msgid "Invalid back reference" -msgstr "Referencia cara a atrs incorrecta" - -#: lib/regex.c:1388 -msgid "Unmatched [ or [^" -msgstr "[ ou [^ sen parella" - -#: lib/regex.c:1391 -msgid "Unmatched ( or \\(" -msgstr "( ou \\( sen parella" - -#: lib/regex.c:1394 -msgid "Unmatched \\{" -msgstr "\\{ sen parella" - -#: lib/regex.c:1397 -msgid "Invalid content of \\{\\}" -msgstr "Contido de \\{\\} incorrecto" - -#: lib/regex.c:1400 -msgid "Invalid range end" -msgstr "Fin de rango incorrecto" - -#: lib/regex.c:1403 -msgid "Memory exhausted" -msgstr "Memoria esgotada" - -#: lib/regex.c:1406 -msgid "Invalid preceding regular expression" -msgstr "Expresin regular precedente incorrecta" - -#: lib/regex.c:1409 -msgid "Premature end of regular expression" -msgstr "Fin de expresin regular prematura" - -#: lib/regex.c:1412 -msgid "Regular expression too big" -msgstr "Expresin regular grande de mis" - -#: lib/regex.c:1415 -msgid "Unmatched ) or \\)" -msgstr ") ou \\) sen parella" - -#: lib/regex.c:8034 -msgid "No previous regular expression" -msgstr "Non hai unha expresin regular anterior" - -#: lib/xmalloc.c:63 -msgid "memory exhausted" -msgstr "memoria esgotada" - -#: src/analyze.c:809 src/diff.c:1283 -#, c-format -msgid "Files %s and %s differ\n" -msgstr "Os ficheiros %s e %s son diferentes\n" - -#: src/analyze.c:812 -#, c-format -msgid "Binary files %s and %s differ\n" -msgstr "Os ficheiros binarios %s e %s son diferentes\n" - -#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 -msgid "No newline at end of file" -msgstr "Non hai un salto de lia na fin da lia" - -#: src/cmp.c:43 -msgid "Written by Torbjorn Granlund and David MacKenzie." -msgstr "Escrito por Torbjorn Granlund e David MacKenzie." - -#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 -#, c-format -msgid "Try `%s --help' for more information." -msgstr "Escriba `%s --help' para obter mis informacin." - -#: src/cmp.c:137 -#, c-format -msgid "invalid --ignore-initial value `%s'" -msgstr "valor de --ignore-initial `%s' non vlido" - -#: src/cmp.c:146 -msgid "options -l and -s are incompatible" -msgstr "as opcins -l e -s son incompatibles" - -#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 -#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 -#: src/util.c:286 src/util.c:293 -msgid "write failed" -msgstr "fallou a escritura" - -#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 -#: src/sdiff.c:179 -msgid "standard output" -msgstr "sada estndar" - -#: src/cmp.c:160 -msgid "-b --print-bytes Print differing bytes." -msgstr "-b --print-bytes Amosa-los bytes diferentes." - -#: src/cmp.c:161 -msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." -msgstr "" -"-i N --ignore-initial=N Omiti-los primeiros N bytes de entrada." - -#: src/cmp.c:162 -msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" -msgstr "-i N1:N2 --ignore-initial=N1:N2" - -#: src/cmp.c:163 -msgid "" -" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." -msgstr "" -" Omiti-los primeiros N1 bytes de FICH1 e os primeiros N2 bytes de FICH2." - -#: src/cmp.c:164 -msgid "-l --verbose Output byte numbers and values of all differing bytes." -msgstr "-l --verbose Amosa-los nmeros e valores dos bytes que difiran." - -#: src/cmp.c:165 -msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." -msgstr "-n LMITE --bytes=LMITE Comparar como moito LMITE bytes." - -#: src/cmp.c:166 -msgid "-s --quiet --silent Output nothing; yield exit status only." -msgstr "-s --quiet --silent Non producir nada; s da-lo estado de sada." - -#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 -msgid "-v --version Output version info." -msgstr "-v --version Amosar informacin sobre a versin." - -#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 -msgid "--help Output this help." -msgstr "--help Amosar esta axuda." - -#: src/cmp.c:177 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" -msgstr "Uso: %s [OPCIN]... FICH1 [FICH2 [N1 [N2]]]\n" - -#: src/cmp.c:179 -msgid "Compare two files byte by byte." -msgstr "Comparar dous ficheiros byte a byte." - -#: src/cmp.c:183 -msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." -msgstr "N1 e N2 son o nmero de bytes a omitir en cada ficheiro." - -#: src/cmp.c:184 -msgid "" -"SKIP values may be followed by the following multiplicative suffixes:\n" -"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" -"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." -msgstr "" -"Os valores N poden estar seguidos polos seguintes sufixos multiplicativos:\n" -"kB 1000, K 1024, MB 1.000.000, M 1.048.576,\n" -"GB 1.000.000.000, G 1.073.741.824, e as para T, P, E, Z e Y." - -#: src/cmp.c:187 -msgid "If a FILE is `-' or missing, read standard input." -msgstr "Se un FICHEIRO `-' ou non se indica, lese da entrada estndar." - -#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 -msgid "Report bugs to ." -msgstr "" -"Informe dos erros no programa a .\n" -"Informe dos erros na traduccin a ." - -#: src/cmp.c:231 -#, c-format -msgid "invalid --bytes value `%s'" -msgstr "valor de --bytes `%s' non vlido" - -#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 -#, c-format -msgid "missing operand after `%s'" -msgstr "falta un operando despois de `%s'" - -#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 -#, c-format -msgid "extra operand `%s'" -msgstr "operando `%s' sobrante" - -#: src/cmp.c:477 -#, c-format -msgid "%s %s differ: byte %s, line %s\n" -msgstr "%s %s son diferentes: byte %s, lia %s\n" - -#: src/cmp.c:495 -#, c-format -msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" -msgstr "%s %s son diferentes: byte %s, lia %s %3o %s %3o %s\n" - -#: src/cmp.c:543 -#, c-format -msgid "cmp: EOF on %s\n" -msgstr "cmp: Fin de Ficheiro en %s\n" - -#: src/diff.c:41 -msgid "" -"Written by Paul Eggert, Mike Haertel, David Hayes,\n" -"Richard Stallman, and Len Tower." -msgstr "" -"Escrito por Paul Eggert, Mike Haertel, David Hayes,\n" -"Richard Stallman e Len Tower." - -#: src/diff.c:322 -#, c-format -msgid "invalid context length `%s'" -msgstr "lonxitude do contexto `%s' non vlida" - -#: src/diff.c:405 -msgid "pagination not supported on this host" -msgstr "a paxinacin non est soportada nesta mquina" - -#: src/diff.c:420 src/diff3.c:315 -msgid "too many file label options" -msgstr "demasiadas opcins de etiquetas de ficheiro" - -#: src/diff.c:498 -#, c-format -msgid "invalid width `%s'" -msgstr "ancho `%s' non vlido" - -#: src/diff.c:502 -msgid "conflicting width options" -msgstr "opcins de anchura conflictivas" - -#: src/diff.c:526 -#, c-format -msgid "invalid horizon length `%s'" -msgstr "lonxitude do horizonte `%s' non vlida" - -#: src/diff.c:629 -#, c-format -msgid "`-%ld' option is obsolete; use `-%c %ld'" -msgstr "A opcin `-%ld' obsoleta; empregue `-%c %ld'" - -#: src/diff.c:641 -#, c-format -msgid "`-%ld' option is obsolete; omit it" -msgstr "A opcin `-%ld' obsoleta; omtaa" - -#: src/diff.c:709 -msgid "--from-file and --to-file both specified" -msgstr "Especificronse --from-file e --to-file ao mesmo tempo" - -#: src/diff.c:832 -msgid "Compare files line by line." -msgstr "Compara-los ficheiros lia a lia." - -#: src/diff.c:834 -msgid "-i --ignore-case Ignore case differences in file contents." -msgstr "" -"-i --ignore-case Ignorar maisculas/minsculas no contido do ficheiro." - -#: src/diff.c:835 -msgid "--ignore-file-name-case Ignore case when comparing file names." -msgstr "" -"--ignore-file-name-case Ignorar maisculas/minsculas no nome do ficheiro." - -#: src/diff.c:836 -msgid "--no-ignore-file-name-case Consider case when comparing file names." -msgstr "" -"--no-ignore-file-name-case Ter en conta as maisculas/minsculas\n" -" ao compara-los nomes dos ficheiros." - -#: src/diff.c:837 src/sdiff.c:186 -msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." -msgstr "" -"-E --ignore-tab-expansion Ignora-los cambios pola expansin de tabulacins." - -#: src/diff.c:838 src/sdiff.c:187 -msgid "-b --ignore-space-change Ignore changes in the amount of white space." -msgstr "" -"-b --ignore-space-change Ignora-los cambios na cantidade de espacios." - -#: src/diff.c:839 -msgid "-w --ignore-all-space Ignore all white space." -msgstr "-w --ignore-all-space Ignorar tdolos espacios en branco." - -#: src/diff.c:840 src/sdiff.c:189 -msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." -msgstr "" -"-B --ignore-blank-lines Ignora-los cambios que tean tdalas lias en " -"branco" - -#: src/diff.c:841 src/sdiff.c:190 -msgid "" -"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." -msgstr "" -"-I RE --ignore-matching-lines=RE Ignora-los cambios nos que tdalas lias\n" -" contean RE." - -#: src/diff.c:842 src/sdiff.c:191 -msgid "--strip-trailing-cr Strip trailing carriage return on input." -msgstr "" -"--strip-trailing-cr Elimina-los retornos de carro fin das lias de " -"entrada." - -#: src/diff.c:844 -msgid "--binary Read and write data in binary mode." -msgstr "--binary Ler e escribir datos en modo binario." - -#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 -msgid "-a --text Treat all files as text." -msgstr "-a --text Tratar tdolos ficheiros coma texto" - -#: src/diff.c:848 -msgid "" -"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " -"context.\n" -"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " -"context.\n" -" --label LABEL Use LABEL instead of file name.\n" -" -p --show-c-function Show which C function each change is in.\n" -" -F RE --show-function-line=RE Show the most recent line matching RE." -msgstr "" -"-c -C NM --context[=NM] Amosar NM [3] lias de contexto copiado.\n" -"-u -U NM --unified[=NM] Amosar NM [3] lias de contexto unificado.\n" -" --label ETIQUETA Usa-la ETIQUETA no canto do nome do ficheiro.\n" -" -p --show-c-function Amosar en que funcin C est cada cambio.\n" -" -F RE --show-function-line=RE Amosa-la lia mis recente que coincide\n" -" con RE." - -#: src/diff.c:853 -msgid "-q --brief Output only whether files differ." -msgstr "-q --brief Producir unha sada s se os ficheiros teen diferencias." - -#: src/diff.c:854 -msgid "-e --ed Output an ed script." -msgstr "-e --ed Producir un script de ed." - -#: src/diff.c:855 -msgid "--normal Output a normal diff." -msgstr "--normal Producir un diff normal." - -#: src/diff.c:856 -msgid "-n --rcs Output an RCS format diff." -msgstr "-n --rcs Producir un diff en formato RCS." - -#: src/diff.c:857 -msgid "" -"-y --side-by-side Output in two columns.\n" -" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" -" --left-column Output only the left column of common lines.\n" -" --suppress-common-lines Do not output common lines." -msgstr "" -"-y --side-by-side Produci-la sada en das columnas.\n" -" -w NM --width=NM Amosar como moito NM [130] columnas de impresin.\n" -" --left-column Amosar s a columna da esquerda nas lias comns.\n" -" --suppress-common-lines Non amosa-las lias comns." - -#: src/diff.c:861 -msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." -msgstr "" -"-D NOME -ifdef=NOME Amosa-lo ficheiro mesturado con diffs `#ifdef NOME'." - -#: src/diff.c:862 -msgid "" -"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." -msgstr "" -"--GTYPE-group-format=GFMT Similar, pero formata-los grupos de entrada " -"GTYPE\n" -" con GFMT." - -#: src/diff.c:863 -msgid "--line-format=LFMT Similar, but format all input lines with LFMT." -msgstr "" -"--line-format=LFMT Similar, pero formatar tdalas lias de entrada con LFMT." - -#: src/diff.c:864 -msgid "" -"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." -msgstr "" -"--LTYPE-line-format=LFMT Similar, pero formata-las lias de entrada LTYPE\n" -" con LFMT." - -#: src/diff.c:865 -msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." -msgstr "" -" LTYPE `old' (vello), `new' (novo) ou `unchanged' (sen cambios).\n" -" GTYPE LTYPE ou `changed' (con cambios)." - -#: src/diff.c:866 -msgid "" -" GFMT may contain:\n" -" %< lines from FILE1\n" -" %> lines from FILE2\n" -" %= lines common to FILE1 and FILE2\n" -" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" -" LETTERs are as follows for new group, lower case for old group:\n" -" F first line number\n" -" L last line number\n" -" N number of lines = L-F+1\n" -" E F-1\n" -" M L+1" -msgstr "" -" GFMT pode conter:\n" -" %< lias do FICH1\n" -" %> lias do FICH2\n" -" %= lias comns a FICH1 e FICH2\n" -" %[-][ANCHO][.[PREC]]{doxX}LETRA especificacin estilo printf para a " -"LETRA\n" -" As LETRAs son como segue para o novo grupo, en minsculas para o " -"vello:\n" -" F nmero da primeira lia\n" -" L nmero da derradeira lia\n" -" N nmero de lias = L-F+1\n" -" E F-1\n" -" M L+1" - -#: src/diff.c:877 -msgid "" -" LFMT may contain:\n" -" %L contents of line\n" -" %l contents of line, excluding any trailing newline\n" -" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" -msgstr "" -" LFMT pode conter:\n" -" %L contido da lia\n" -" %l contido da lia, exclundo os saltos de lia finais\n" -" %[-][ANCHO][.[PREC]]{doxX}n especif. estilo printf do nmero da lia" - -#: src/diff.c:881 -msgid "" -" Either GFMT or LFMT may contain:\n" -" %% %\n" -" %c'C' the single character C\n" -" %c'\\OOO' the character with octal code OOO" -msgstr "" -" GFMT e LFMT poden conter:\n" -" %% %\n" -" %c'C' o carcter C\n" -" %c'\\OOO' o carcter de cdigo octal OOO" - -#: src/diff.c:886 -msgid "-l --paginate Pass the output through `pr' to paginate it." -msgstr "-l --paginate Pasa-la sada por `pr' para paxinala." - -#: src/diff.c:887 src/sdiff.c:198 -msgid "-t --expand-tabs Expand tabs to spaces in output." -msgstr "-t --expand-tabs Expandi-las tabulacins a espacios na sada." - -#: src/diff.c:888 src/diff3.c:452 -msgid "-T --initial-tab Make tabs line up by prepending a tab." -msgstr "" -"-T --initial-tab Facer que as tabulacins queden aliadas poendo outra\n" -" tabulacin ao principio da lia." - -#: src/diff.c:890 -msgid "-r --recursive Recursively compare any subdirectories found." -msgstr "" -"-r --recursive Comparar recursivamente os subdirectorios que se atopen." - -#: src/diff.c:891 -msgid "-N --new-file Treat absent files as empty." -msgstr "-N --new-file Trata-los ficheiros ausentes coma baleiros." - -#: src/diff.c:892 -msgid "--unidirectional-new-file Treat absent first files as empty." -msgstr "" -"--unidirectional-new-file Tratar ficheiros vellos ausentes coma baleiros." - -#: src/diff.c:893 -msgid "-s --report-identical-files Report when two files are the same." -msgstr "" -"-s --report-identical-files Informar cando dous ficheiros son o mesmo." - -#: src/diff.c:894 -msgid "-x PAT --exclude=PAT Exclude files that match PAT." -msgstr "-x PAT --exclude=PAT Exclui-los ficheiros que coinciden co PATrn." - -#: src/diff.c:895 -msgid "" -"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." -msgstr "" -"-X FICH --exclude-from=FICH Excluir ficheiros que coinciden con algn\n" -" patrn do FICHeiro." - -#: src/diff.c:896 -msgid "" -"-S FILE --starting-file=FILE Start with FILE when comparing directories." -msgstr "" -"-S FICH --starting-file=FICH Comezar no FICHeiro ao comparar directorios." - -#: src/diff.c:897 -msgid "" -"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." -msgstr "" -"--from-file=FICH1 Comparar FICH1 con tdolos operandos. Pode ser directorio." - -#: src/diff.c:898 -msgid "" -"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." -msgstr "" -"--to-file=FICH2 Comparar tdolos operandos con FICH2. Pode ser un " -"directorio." - -#: src/diff.c:900 -msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." -msgstr "--horizon-lines=NUM Manter NUM lias do prefixo e sufixo comns." - -#: src/diff.c:901 src/sdiff.c:200 -msgid "-d --minimal Try hard to find a smaller set of changes." -msgstr "-d --minimal Procurar atopa-lo conxunto de cambios mis pequeno." - -#: src/diff.c:902 -msgid "" -"--speed-large-files Assume large files and many scattered small changes." -msgstr "" -"--speed-large-files Asumir ficheiros longos e pequenos cambios dispersos." - -#: src/diff.c:907 -msgid "" -"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." -msgstr "" -"Os FICHEIROS son `FICH1 FICH2', `DIR1 DIR2', `DIR FICH...' ou `FICH... DIR'." - -#: src/diff.c:908 -msgid "" -"If --from-file or --to-file is given, there are no restrictions on FILES." -msgstr "" -"Se se indica --from-file ou --to-file, non hai restriccins nos FICHEIROS." - -#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 -msgid "If a FILE is `-', read standard input." -msgstr "Se un FICHEIRO `-', lese da entrada estndar." - -#: src/diff.c:920 -#, c-format -msgid "Usage: %s [OPTION]... FILES\n" -msgstr "Uso: %s [OPCIN]... FICHEIROS\n" - -#: src/diff.c:949 -#, c-format -msgid "conflicting %s option value `%s'" -msgstr "valor `%1$s' da opcin %2$s conflictivo" - -#: src/diff.c:962 -msgid "conflicting output style options" -msgstr "opcins de estilo da sada conflictivas" - -#: src/diff.c:976 -msgid "regular empty file" -msgstr "ficheiro normal baleiro" - -#: src/diff.c:976 -msgid "regular file" -msgstr "ficheiro normal" - -#: src/diff.c:978 -msgid "directory" -msgstr "directorio" - -#: src/diff.c:981 -msgid "block special file" -msgstr "ficheiro especial de bloques" - -#: src/diff.c:984 -msgid "character special file" -msgstr "ficheiro especial de caracteres" - -#: src/diff.c:987 -msgid "fifo" -msgstr "fifo" - -#: src/diff.c:991 -msgid "socket" -msgstr "socket" - -#: src/diff.c:994 -msgid "message queue" -msgstr "cola de mensaxes" - -#: src/diff.c:997 -msgid "semaphore" -msgstr "semforo" - -#: src/diff.c:1000 -msgid "shared memory object" -msgstr "obxecto de memoria compartida" - -#: src/diff.c:1003 -msgid "typed memory object" -msgstr "obxecto de memoria con tipo" - -#: src/diff.c:1006 -msgid "weird file" -msgstr "ficheiro raro" - -#: src/diff.c:1070 src/diff.c:1256 -#, c-format -msgid "Only in %s: %s\n" -msgstr "S en %s: %s\n" - -#: src/diff.c:1193 -msgid "cannot compare `-' to a directory" -msgstr "non se pode comparar `-' cun directorio" - -#: src/diff.c:1220 -msgid "-D option not supported with directories" -msgstr "A opcin -D non est soportada con directorios" - -#: src/diff.c:1229 -#, c-format -msgid "Common subdirectories: %s and %s\n" -msgstr "Subdirectorios comns: %s e %s\n" - -#: src/diff.c:1266 -#, c-format -msgid "File %s is a %s while file %s is a %s\n" -msgstr "O ficheiro %s un %s mentres que o ficheiro %s un %s\n" - -#: src/diff.c:1345 -#, c-format -msgid "Files %s and %s are identical\n" -msgstr "Os ficheiros %s e %s son idnticos\n" - -#: src/diff3.c:26 -msgid "Written by Randy Smith." -msgstr "Escrito por Randy Smith." - -#: src/diff3.c:328 -msgid "incompatible options" -msgstr "opcins incompatibles" - -#: src/diff3.c:368 -msgid "`-' specified for more than one input file" -msgstr "Especificouse `-' para mis dun ficheiro de entrada" - -#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 -#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 -msgid "read failed" -msgstr "fallou a lectura" - -#: src/diff3.c:441 -msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." -msgstr "" -"-e --ed Producir cambios sen mesturar de FICHVELLO a TEUFICH en MEUFICH." - -#: src/diff3.c:442 -msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." -msgstr "" -"-E --show-overlap Amosar cambios sen mesturar cos conflictos entre " -"corchetes" - -#: src/diff3.c:443 -msgid "-A --show-all Output all changes, bracketing conflicts." -msgstr "" -"-a --show-all Amosar tdolos cambios, cos conflictos entre corchetes." - -#: src/diff3.c:444 -msgid "-x --overlap-only Output overlapping changes." -msgstr "-x --overlap-only Amosa-los cambios que se superpoen." - -#: src/diff3.c:445 -msgid "-X Output overlapping changes, bracketing them." -msgstr "-X Amosa-los cambios que se solapen, pondoos entre corchetes." - -#: src/diff3.c:446 -msgid "-3 --easy-only Output unmerged nonoverlapping changes." -msgstr "-3 --easy-only Amosar cambios non solapados e non mesturados." - -#: src/diff3.c:448 -msgid "-m --merge Output merged file instead of ed script (default -A)." -msgstr "" -"-m --merge Amosa-lo ficheiro mesturado no canto dun script en ed [-A]." - -#: src/diff3.c:449 -msgid "-L LABEL --label=LABEL Use LABEL instead of file name." -msgstr "-L ETIQ --label=ETIQ Usa-la ETIQueta no canto do nome do ficheiro." - -#: src/diff3.c:450 -msgid "-i Append `w' and `q' commands to ed scripts." -msgstr "-i Engadi-los comandos `w' e `q' aos scripts en ed." - -#: src/diff3.c:453 src/sdiff.c:202 -msgid "--diff-program=PROGRAM Use PROGRAM to compare files." -msgstr "" -"--diff-program=PROGRAMA Emprega-lo PROGRAMA para compara-los ficheiros." - -#: src/diff3.c:465 -#, c-format -msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" -msgstr "Uso: %s [OPCIN]... MEUFICH VELLOFICH TEUFICH\n" - -#: src/diff3.c:467 -msgid "Compare three files line by line." -msgstr "Comparar tres ficheiros lia a lia." - -#: src/diff3.c:673 -msgid "internal error: screwup in format of diff blocks" -msgstr "erro interno: fallo no formato dos bloques diff" - -#: src/diff3.c:971 -#, c-format -msgid "%s: diff failed: " -msgstr "%s: diff fallou: " - -#: src/diff3.c:993 -msgid "internal error: invalid diff type in process_diff" -msgstr "erro interno: tipo de diff non vlido en process_diff" - -#: src/diff3.c:1018 -msgid "invalid diff format; invalid change separator" -msgstr "formato de diff non vlido; separador de cambios non vlido" - -#: src/diff3.c:1242 -msgid "invalid diff format; incomplete last line" -msgstr "formato de diff non vlido: derradeira lia incompleta" - -#: src/diff3.c:1265 src/sdiff.c:273 -#, c-format -msgid "subsidiary program `%s' not executable" -msgstr "o programa subsidiario `%s' non executable" - -#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 -#, c-format -msgid "subsidiary program `%s' not found" -msgstr "non se atopou o programa subsidiario `%s'" - -#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 -#, c-format -msgid "subsidiary program `%s' failed" -msgstr "fallou o programa subsidiario `%s'" - -#: src/diff3.c:1294 -msgid "invalid diff format; incorrect leading line chars" -msgstr "formato de diff non vlido: caracteres a principio de lia incorrectos" - -#: src/diff3.c:1370 -msgid "internal error: invalid diff type passed to output" -msgstr "erro interno_ tipo de diff non vlido pasado sada" - -#: src/diff3.c:1647 src/diff3.c:1704 -msgid "input file shrank" -msgstr "o ficheiro de entrada encolleu" - -#: src/dir.c:162 -#, c-format -msgid "cannot compare file names `%s' and `%s'" -msgstr "non se poden compara-los ficheiros `%s' e `%s'" - -#: src/sdiff.c:35 -msgid "Written by Thomas Lord." -msgstr "Escrito por Thomas Lord." - -#: src/sdiff.c:183 -msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." -msgstr "" -"-o FICH --output=FICH Operar interactivamente, mandando a sada ao " -"FICHeiro." - -#: src/sdiff.c:185 -msgid "-i --ignore-case Consider upper- and lower-case to be the same." -msgstr "" -"-i --ignore-case Ignora-las diferencias entre maisculas e minsculas." - -#: src/sdiff.c:188 -msgid "-W --ignore-all-space Ignore all white space." -msgstr "-W --ignore-all-space Ignorar tdolos espacios en branco." - -#: src/sdiff.c:194 -msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." -msgstr "-w NM --width=NM Amosar como moito NM [130] columnas por lia." - -#: src/sdiff.c:195 -msgid "-l --left-column Output only the left column of common lines." -msgstr "-l --left-column Amosar s a columna da esquerda nas lias comns." - -#: src/sdiff.c:196 -msgid "-s --suppress-common-lines Do not output common lines." -msgstr "-s --suppress-common-llines Non amosa-las lias comns." - -#: src/sdiff.c:201 -msgid "" -"-H --speed-large-files Assume large files and many scattered small changes." -msgstr "" -"-H --speed-large-files Asumir ficheiros longos e pequenos cambios " -"dispersos." - -#: src/sdiff.c:214 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 FILE2\n" -msgstr "Uso: %s [OPCIN]... FICH1 FICH2\n" - -#: src/sdiff.c:215 -msgid "Side-by-side merge of file differences." -msgstr "Mestura en das columnas das diferencias entre os ficheiros." - -#: src/sdiff.c:327 -msgid "cannot interactively merge standard input" -msgstr "non se pode mestura-la entrada estndar interactivamente" - -#: src/sdiff.c:588 -msgid "both files to be compared are directories" -msgstr "mbolos dous ficheiros a ser comparados son directorios" - -#: src/sdiff.c:853 -msgid "" -"ed:\tEdit then use both versions, each decorated with a header.\n" -"eb:\tEdit then use both versions.\n" -"el:\tEdit then use the left version.\n" -"er:\tEdit then use the right version.\n" -"e:\tEdit a new version.\n" -"l:\tUse the left version.\n" -"r:\tUse the right version.\n" -"s:\tSilently include common lines.\n" -"v:\tVerbosely include common lines.\n" -"q:\tQuit.\n" -msgstr "" -"ed:\tEditar e usar mbalas das versins, cada unha cunha cabeceira.\n" -"eb:\tEditar e usar mbalas das versins.\n" -"el:\tEditar e logo usa-la versin da esquerda.\n" -"er:\tEditar e logo usa-la versin da dereita.\n" -"e:\tEditar unha nova versin.\n" -"l:\tusa-la versin da esquerda.\n" -"r:\tusa-la versin da dereita.\n" -"e:\tEditar unha nova versin.\n" -"s:\tInclui-las lias comns silenciosamente.\n" -"v:\tInclui-las lias comns faladoramente.\n" -"q:\tSair.\n" - -#~ msgid "" -#~ "SKIP values may be followed by the following multiplicative suffixes:\n" -#~ msgstr "" -#~ "Os valores de N poden ir seguidos polos seguintes sufixos " -#~ "multiplicativos:\n" - -#~ msgid "kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" -#~ msgstr "kB 1000, K 1024, MB 1.000.000, M 1.048.576,\n" - -#~ msgid "GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y.\n" -#~ msgstr "GB 1.000.000.000, G 1.073.741.824 e as para T, P, E, Z e Y.\n" - -#~ msgid "Report bugs to .\n" -#~ msgstr "Informe dos erros a .\n" - -#~ msgid "context length specified twice" -#~ msgstr "a lonxitude do contexto especificouse das veces" - -#~ msgid "multiple `--from-file' options" -#~ msgstr "opcins `--from-file' mltiples" - -#~ msgid "multiple `--to-file' options" -#~ msgstr "opcins `--to-file' mltiples" - -#~ msgid "--inhibit-hunk-merge Do not merge hunks." -#~ msgstr "--inhibit-hunk-merge Non mesturar anacos" - -#~ msgid "regular empty executable file" -#~ msgstr "ficheiro normal executable baleiro" - -#~ msgid "regular executable file" -#~ msgstr "ficheiro normal executable" - -#~ msgid "If a FILE is `-', read standard input.\n" -#~ msgstr "Se un FICHEIRO `-', lese da entrada estndar.\n" - -#~ msgid "--ignore-initial value must be a nonnegative integer" -#~ msgstr "O valor de --ignore-initial debe ser un enteiro non negativo" - -#~ msgid ": not found\n" -#~ msgstr ": non atopado\n" - -#~ msgid "column width must be a positive integer" -#~ msgstr "o ancho da columna debe ser un enteiro positivo" - -#~ msgid "conflicting group format" -#~ msgstr "formato de grupo con conflictos" - -#~ msgid "conflicting line format" -#~ msgstr "formato de lia con conflictos" - -#~ msgid "context length must be a nonnegative integer" -#~ msgstr "a lonxitude do contexto debe ser un enteiro non negativo" - -#~ msgid "horizon must be a nonnegative integer" -#~ msgstr "o horizonte debe ser un enteiro non negativo" diff --git a/src/bin/diffutils/po/he.gmo b/src/bin/diffutils/po/he.gmo deleted file mode 100644 index c9cc2f33eca2b9b2073f588f084cd764df00571d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23365 zcmb`O4RBo7b>E*IE4Cmfwq;3{CEL291cDUzEdfw6DNvBa50Hce0u%t6A}QKf01v>L zz%H~O0x8u^?bJ;iJ9g5<`Di{GCym`UcH+3n^kZ6Q(x#JsOeaa3&Uo6Sg9Y{xTw$^J zFhnf2?M#2?-urgnE*2Ey=^I}B_q})Tx%ZxX?m6e4clgzJ-TS{BbNwOk5y!dfPr!A@ zxo6rueqTHIw;ktw9gg#kS@7H3|E}YF;8E}t_~&4+N7m)rxd>{Bc2o34y!|>8M3;r?qqT@XDJ`g$& zT?U!cLq8AF&qMMax(~k>JP1Nl`11XWe(1>;B|}t0;JzZw?O8*hp{<_z!dlx_;rwZ?)gt3@& z|4-0|!@DO~D;dud!xp7KxtDpo7ZiEe1O6iTB>1mDXg#qCvR((M;|zgELFRHm<}E1v z?g0M?r2T<)5V?-Xc%A@7t{G2c3Pk=QZ-A^z62pu8bExxFTl?eBNRV zg|F*SUv&^d|T&@PC8!eGriO9lRf8d=r0O4uJXF=xE@nw*4cl;8_+I4&j{88`^K={$|??B|F!42?H zrX>7g+?_|k4}urK7Vs(v{Z913J6Mm-ALkxkANr=_yz`wbvCQW$9p~e7;3>yB+y}DX z4*wj;d=JaIK=bfhAblKx7t+s>7eNJ1g3Rs6PlC`t^3N^Ko99n6Cs~B2kAMfjDUdz% z^v{E=#nUn`!M_4~9jA-6)7TF_&Asq}zPkP^2tSW9chP%CS##$w_$BZR_$S~=R1iEC zz4OcogkJZX=J~TvfhSN&uY*0HtS|JQlW{2!nnL$E znTO!FLHd2J44y@Wi=4y5=f4QTx97hHLjTx(An%TS3WWZ#UjrHcu^h;}kIVXTe|!vN z9ghDB_&m74y7BD9W88Pq)lYzo@#Mb+p?6aHeU_nq++r4lPLJ@FarG3z>yVUnqu#0C z0U6gRneQ`90T~kgeOmg3#_8X(&;JK_0u~9sj)0fV^E0w;@Z*fgJLB$^dBMltPlC|z z{RYT5dvAcWf8kLO`Y(7O{CYw5JMCXsVP5ZMY1xCa{(bb}JP3|}4}pwXqx1)F`hE|j zpT7SHeiT--cjWn5X|F(dEbq@=1&@I;f4RQ}KI}OCj6vx2%RFe?&wh}7(*FhUF;Lcn z{`>zJ`~WEPzXuflJph(L=nSw2o%_K9;QK-PlJN|PynPIu1)m1L0{(kY#!H=Za^DIH z-|hmpKz^V5zu@DJ^U|Mz`@v0+J_eyB{SLCXH1=2&xn+EVX>cF-d60D+{9TZF3@(Gn z#}G6ecsC^N81InGM{o^fUl0Ed z`5oXg{-JwO*5MJyxkQoqTzU?q{-u||_kdTxcYzZi^SN{tgzlwR!5;!Y z555=t0?0fr{Q`)5UXt-5H<$hhWIZqaPY}Lel5xX_%d)@V!)3-S{ar?O9N|HVGDrDG z6uAyipr@~C{?fPfE40P$7MXKCMfnUxu5VL@^e^-0Zvisa-=|Db{tkulI>J}E`Y9JF zGX8%+k#WI)(P_?Wlx|9lBJ27q6uExOfb)~!Pg9t;^LvzcQ=Xw956<%x;ll+3{e>(q!A~Gl!``7s#Wn6CTb+5%s;6U)uqR8ww8=n0`?q8-1 zQw~vHr2GzLgz^WJB&C<~Wy()bT2aZgdlQKsLW{XL`9 zbUfju)kG>eqfYhq^>i5G&+d59X(FUFEHGs%R?Buz6FON{GZw%%p;%H<2aCx_2m zxg5QGZm{RXl`C(IC$GKynZBOk;hsUIW>fJ*X2MNpt~0sxtT(16gfIH7?n>F4w2GxX z6=RIa>FMO0U`i#tIW?I|W@jUcXE0?fmiF|Ur-Nl=o^jo`O%i(s13sL5J=IW`D=Sv$b~}VY9)7xs^?% zys_kDBL2EpWtm}+VMEjRdOj_V>uQ;D^=@|A+cU9Dw^oyCC_WRPj-?`M6nQmo0s+(_ zted2j)_Bq)3NbC0t_Vs%OYg*{w5-rqw}T}m4TRKaJP}J>S8C9Ujcci$OT{yu8jodS zDxOgG^$bc@YKySCv#I1{DmK%7ZgAlA;4zfJd9+e+gQ`Sn&WbjhKnT;)O7yNPce(@D z%_Pm;Xc8?hS}{Hm_r}8&yUi|ACoCy*3vEOYiSkk?;xs$eJRd`xMj?*yvqYI>>bmqg zF)mXOyNb(n^p2ln5y@&>|U$>XH(up{F)wo zIy=EnArhZVBvbI8X}O8mjOS|Qta|lhqp9bnyoBY3Xf(|Msj8WBXR9akt*NqxwM!&- z8^wuaA{`$OEXHle!7OIb4gsTL%07^#mU*&1-nff|PMXQ4l{%JAv;DCsJTt4Tc{3yW zJ3SW5V87WSX~<%pwOZ9PPG?f_SvOGd?pO*{DvxS9e=L?t#bXdnd6{e~p-@+P@-hx9 zG+Ht`RaG*=0uk8hPAeImEJHKN$R^@OQqYI7X%{PCvYvs#^=O7-nx~ zHY0L%NGaF#V(IH{GBM4@u>zJ&%y_V49QGxWuX(BI*zBw^VCz2VJ&d$yzQyC_$wNtSB z;$GTuO;=`*WMZSPcWpL?OtPYlqaM$CvT#(w6|j})NfXfQvh1v~tjcQ3+g3xEg-_=`c&Vs<30FEE<0<~o9?!^qDjrqcp{w< zm5fJG)f+VImnORkEc!MqszX{oY9?f2DG@6z=Xwjt-s72BIZ>lXPo1_3ttR~r3zc{x zo{6(zWU18I*j3hzy?|G({;oIcC5$sCFKKx}w={x)u%l06V_ub4BK~tzVsZ3y z>c3oF=O){zZmH4GGrEBuKI1c~uyQ+F!F{W64>Jt8vH~ev6xh z*!h4Ms!(k2of5OvYt)1lT7m! z96!fJ8BN4F=*5f)!-}Roy?l0ESr7ymaihIepqLr%(qmXNk&wpMjT+0GL5Zcsm@-M-_VImH&*c*_o8apQN3Qu)pl2(4UPLjV;muwdKy2YDTP2u#ZWco z?BONG&>IM=Ry4uM%``qnH?U%4u1$9}@@kuQip2dAK2;|zwjr+MC=?p9)fe67ag$?H z?MM`uc|)V4OPXNitFsT2vTq$1D~j}a6B+izban>QVwXc(X5oUoWWf3*`_KAw+Cnm5 z-F`MUi3^MZQs-i6CPk}c;4^aeo}5x6v#Bt>j(2t7E4LX($Yfsa1$Qf50 zu(HOV6isLN9p2e9G6ijZt2DyKIAjH?tgdZy_t<_0!n9pCHHKeS6UM<4L%~_X`f&-> z*L${Ct8uMWy6tV?VT)pv-C`aGipRt~qyxhft5pZY181g4D?ix4uX)qgBWx3+`UC!% z)(r7gp)i_?dlS_`>LtSD!0(jRu!cKS$1!9^-dHx3hO(SZ>`(kHmQWuqw6B>R4OuBB zoK1|=98S0{2Te9DKhikpZ2y2c_$^|!kE-i&k06S7Esh_PiDj}l{rGc1bL<$Njf)SR z$i&C6dBzAZ6nSoJWoAwkg|@kzc0!v@4?vtFj=E`NQ({Pg%XTt}hln;YBGw>~dcfKV z8W$rAogVRsP)Txw2x@bq_o^Yla9@*2B8SGe8ZdN&`*>m^Nu4>VWA(_L*x)&(4@Is! z7az||nG=$w9LPzXz3DjAzTa-Mv_dwtvZdc^(yuk+_3m;L+pg=MJEld{TJmmvyQ>Z7 zEsgNOWtGQ0tfITjDf=xCA_qd5501 z=xRECCfh@%$rh~c)}5~dKJ`w({#rbO&|dXqDLqc2ZxRvN%My*HB$D_Ka&XmNis%SE z_MxZ)rI`LL?M7TZm6>>20@)GT;JTw$664}fSmV~%Vz+8GDmThm5JCh8#Xvi~_AyR~ z4Uvx#(oHJ~DAZmOJ&tLAs#-1dPKRX04}Im0S3XmHj+Pqpw9B6ICbJys>d?lbw~%dNagcXg(Foa(Wqe`jf`vk{>pnt56`~QP^{hyrHw#;=~J??2i5i zbMsCmpN4N3)Y!oj$`4cQTQ6vzhpG`gwju zlc~vPqmK4itnHQ$3OH3JFpm{R=0(?=d$Hv+xZLqs4(o6pb7ewAUb?I0>T%W4-rgQj zFM^#(lc3@S(`zCp#iXq_s$TIw>M39|wjb z>Rd$iMAW5-x@bn+p{p3zNrYF1X+8u9yR}W%MnvM*@KpQOvax6#R-eWlu?rOT5vi9Q z!&gi@!xB!jaX>N2o{dcP52y>r1_zJz4_{;#aj0hm9Gb)cV-{xOgoZQ&r(<)`mW#HhQTw3omMnO5hrqpX4Ii{tL6 zy=coRn1novmtw-I5`2h_VmO5kP8)&*F(U41l%9~*N=Ek6xH>U#?qYBM>8LXte2<>M;EKe?fGW6t?H=Ofn0%TgVUmiF&+&j>J1x2bAkyW}ax2kezT{4IxfbbL$JqoUZY!UKf&dr7mmEzer@f4KR3+(4#WT07 zl0~ARFs6hE729f&?V5xTfRL!B$fQK2Mc|y#=_HC?hry9z^GE{Y@=I$eln+}>j5h;E zoRftdR6)HVbE>ALe$Znxvt6oZ z;FKsRQPmtIbp%sXB)i3aCDKaO_86*Q+*wSfd?+YrMvDPLN*c^Z5rj{Y4uBmIoYR__PQ~D?{-|PBW+Fb3bm9puRhjr`Xh~{vOO%-1bd_o-QNrj(!*wCq zEHV39JT8^FJ}a^=rb6t-r{v)sw3x-QVXZJAMlN|%4m+FV=%?YOlSYSnKt`NqIb2Q<6_Z=zfm<=+ zc*H?5E+0IDkqBq(_i|^q*D@jR8bJt-;VA6eRnsvDN8C;QHB4(;6CVwfnrw;2(a(8t zOrM^o`TS~`axRsW*}1*rF8f&=a`S;-yQ``*dN|tA-g0hW*gYX1u6XU9M9Foj&i3|B zxBW@C{VCP)WLHPK+kT{7D!PMs+CrwT-XXW+5KX$CeCj|uEnE7?6mju;61Y2v8A^RR zt}em!O!{g(uAcFx1QHBYF;ML(zf3biD?sh%czN~%!2 zxkZPI{+23kRBP%qC#NaNw|&@UW~ApMDFXF<2F>-k+%2h!U-q{d-7~va>kL(U)>PAO zqw5<-(=9?}v*K^psC84#W<8bt+y?s#!!V&%{k4VloT}XL%S$CX-8GS?E+>(d1V|nXebnrqg6c?S=G*XNI zxl*{5+sdoeLQd`~Km?SDmsD{nuL{VBB=X!@?YhjXYFkyl%vRiwCQ zZCOIQyX1K}QJtY>NEzu5k&>OYgOaXQpD`vhnktBBp*+8aNUv_97*)=%EcD_Sfpltm2v zP0_9el*_i-+N?6v-71t7lB)b-VSbr* z<@F{08plD;D5r{>H-pjal0qh93SZF$|3;yt=8Hw)&gP~MO?37)H-^7jU>kDEoG=CX zEgNR5P~2R@Wn3+-tB7r#XX~(ejnun!`DJx9q7`3ew~|LrQ8m@xOKPRKQDK>O%P@25 zlEB=WSS*&2i%700##79(mJ^c0cIKEl><-Za+KHov(brhUuP}q%*{@T}s#-&bh&kL;Gt26yrh+RfoJY5@p8i%TXEJbDq(E^uPcjP;+g0lE zl&rMZC!B@aG6=oNtT$#?8A~D>ytt&L>UQ~O4Wx_%T3FjOD~}tsQgB5E${YjKj`Xwo z)-o3H+*fl&wRCe^wwef0O=z0tpzWXm8LsGxD08-1ZO7K_)t4R7EwGs>>-AkJgx0sD zcNhG#?x!N3P3nu(?nqB_bcdlo(VOdAHcXL#*FPdq`H>&l*+mN`fGb$ zd~g>90o-dZwSl}bnphxyW-w2M=^JR`zl~Q55Y>a%6wC32aI&Wfri}TgYG>-iCI}fpe zoyxS@T1JY!!7uQUhOmFsOq(|*xH-&FOTC;t-`>yK(cJP$gG{*M6J}w>aQ||O8VPYl&^DjruU`JD*o2s@BGSm9&iPTYSaw9}Ky86w3Bx~}% z`JdduJ+FY%)TgIn}zMAIw89av8NQb07j@4d5Q!=;|6X^XOuZU_^etaI2t$k>ctfm6_nJGV*3wbd4mS zVlFEMvUg>hV0{+@63sK|oSH4p>WF{sCLh&+d+uktIsbrH&UM@-t^@p z<2Gj4?PzYt!$u+|!#-Ls7dYVsK6W_SZnvgz)|g`vqnZ!WGzX6}G7foB?IVLO*a0hg zy!u#Ll|^HLcc$g-K89c(!KtIphuM*r2c4+o+F6(N_AZSguTLtoDMERAbwi2zH`L;- zq5?$MmNrzO!ns+b>rKDBLDL;sdl*glCWk)FjF1CiH<)hVd>-kVc!hTBxzhO1&JD*u5=A zCQJZUS0%iN-yqt^VQToe61+5T^4qA|=C4AHM#KY^ED_1D)8SQqXtz}7;7Pod2SJXW z+)9IL4&O>%*Bz43BJt58f8<|9MpRU*$P6l@#R&{SUMht`t}VCYh#318Ct$a9J0uDO z&mp%^lH;K&+#tGEi#9R3x?q!urLOvzrj^FCWMPfytHc)GLgqMy6A+7V{`7Cz$f?Yf zgb4y2W`;W`*l{%gQRppHgZ2{MsuC7T5~r9&W68OFtJKwJN=3y*?Mdn%#)$9mMcM_uw`PpOhP|4{gsPEhfTMp zmlb~r9g2{cw&lfzyrX{>!c|xO^70L$aixVd$9Ss2C!75It&*&-V-A}{XRsODi%YI3 zF8NwOoW#yGL{J~>5rdp~A)10@gcKH0hl^XB7Z`p8r=V^O@;0}O*%JxXj$_^H=q|~6 zsv>@Y9J3|Xj_hdVTUf*h716BoYfi)Rg>Tt=#8n8Q_$6FKwX$LU3qxTU9fhQz!9={9 z>IM}F=kL{}_Nja=tC0C%+(PnOuc&poEI(J@I`+>0>?pN=tP2{5-zd zaP(lT^K0ymmH7%^OR5dkTZK(j%gS=aU%t_t`?88ro26%C5bR^T)`(x6XMSsiHG=jx z{c>Sbl`#m;$SZB)k22oX^<~scQyGkk`=@ecwXsOpu7cUc1xD8eseao9Ic(+E*(J4) z3i6T1;Yj4JG6f_?;(M>`6Di)e?fmiR=0iRMhwcfBmg=sr zxWQ-S5LIpTY6H~if(VrkA7fVZM>+d74|}D}*_)_gX1i|uC+-~aAazcGIiKs7vf1T} zszcCTDr?J>BY?|H%?mwSQU%3nQz~Df8u2yU46Q^ty7}|#W&BF*q?+*Qjd>(Td{t5e zO|zZCcKc@fn7y-+BC5hS*=;3V2Ep1;Z~D;Itl27Y#@(CILgu#nRlvBTx-i|kXYGf# z$a(zs&6*9jg)zQuvz^0j;S|@j*(wJ;)M}xalW%I_yb_{|`4$dcO`9oPbS~VkXY?i z@ljWGRamLDO^hL5^(*s*g>5aiI2HI4cT`=c{}nd)wq^qv`6ZUG8Q~zm(QX{0738p? zM$oiB$L4$ z=$hBI6%3_{{-R{lgqqgJ1c$%M+G!Bgs}9;65XJYgi!CFlDg!6%<5v8QMSS%#-nD73 z<$^DMfmBEwf+&u7N?ND5a-<=A6$nS(5oZNAk?$_(q&yK6LT0!@)z4bu0^zdLe`!hQ zfj9_aneQsvU6Ai_T2Jdgd~z+VJKxs{ReG3;k5`2p?BCehcA&IQPDW+BP+V}Vj@{H} z8oU~rz3xf^Kb2c$+^AI?-(?OGw>T!s2xRf<>M;`I)HggfUSUNa!p--(zCeX4@y=!A b;G>AAESYQdBP|oCGgHdv3fdzSx9I-?pex7& diff --git a/src/bin/diffutils/po/he.po b/src/bin/diffutils/po/he.po deleted file mode 100644 index 1f1ed4a925..0000000000 --- a/src/bin/diffutils/po/he.po +++ /dev/null @@ -1,907 +0,0 @@ -# Hebrew messages for GNU Diffutils -*- coding: hebrew-iso-8bit -*- -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. -# Eli Zaretskii , 2001, 2002. -# -msgid "" -msgstr "" -"Project-Id-Version: diffutils 2.7.10\n" -"POT-Creation-Date: 2002-04-05 14:10-0800\n" -"PO-Revision-Date: 2002-03-13 20:45+0200\n" -"Last-Translator: Eli Zaretskii \n" -"Language-Team: Hebrew \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: lib/c-stack.c:188 -msgid "program error" -msgstr " " - -#: lib/c-stack.c:189 -msgid "stack overflow" -msgstr " " - -#: lib/error.c:128 lib/error.c:156 -msgid "Unknown system error" -msgstr "- " - -#: lib/freesoft.c:27 -msgid "" -"This program comes with NO WARRANTY, to the extent permitted by law.\n" -"You may redistribute copies of this program\n" -"under the terms of the GNU General Public License.\n" -"For more information about these matters, see the file named COPYING." -msgstr "" -" . , \n" -".GNU General Public License \n" -" .COPYING , " - -#: lib/getopt.c:693 -#, c-format -msgid "%s: option `%s' is ambiguous\n" -msgstr "%s - `%s' \n" - -#: lib/getopt.c:718 -#, c-format -msgid "%s: option `--%s' doesn't allow an argument\n" -msgstr "%s `--%s' \n" - -#: lib/getopt.c:723 -#, c-format -msgid "%s: option `%c%s' doesn't allow an argument\n" -msgstr "%s `%c%s' \n" - -#: lib/getopt.c:741 lib/getopt.c:914 -#, c-format -msgid "%s: option `%s' requires an argument\n" -msgstr "%s `%s' \n" - -#: lib/getopt.c:770 -#, c-format -msgid "%s: unrecognized option `--%s'\n" -msgstr "%s `--%s' - \n" - -#: lib/getopt.c:774 -#, c-format -msgid "%s: unrecognized option `%c%s'\n" -msgstr "%s `%c%s' - \n" - -#: lib/getopt.c:800 -#, c-format -msgid "%s: illegal option -- %c\n" -msgstr "%s: - -- %c\n" - -#: lib/getopt.c:803 -#, c-format -msgid "%s: invalid option -- %c\n" -msgstr "%s -- %c\n" - -#: lib/getopt.c:833 lib/getopt.c:963 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "%s: -- %c\n" - -#: lib/getopt.c:880 -#, c-format -msgid "%s: option `-W %s' is ambiguous\n" -msgstr "%s - `-W %s' \n" - -#: lib/getopt.c:898 -#, c-format -msgid "%s: option `-W %s' doesn't allow an argument\n" -msgstr "%s `-W %s' \n" - -#: lib/regex.c:1367 -msgid "Success" -msgstr "" - -#: lib/regex.c:1370 -msgid "No match" -msgstr " " - -#: lib/regex.c:1373 -msgid "Invalid regular expression" -msgstr " " - -#: lib/regex.c:1376 -msgid "Invalid collation character" -msgstr "- " - -#: lib/regex.c:1379 -msgid "Invalid character class name" -msgstr " - " - -#: lib/regex.c:1382 -msgid "Trailing backslash" -msgstr "`\\' " - -#: lib/regex.c:1385 -msgid "Invalid back reference" -msgstr " - " - -#: lib/regex.c:1388 -msgid "Unmatched [ or [^" -msgstr "- [^ [" - -#: lib/regex.c:1391 -msgid "Unmatched ( or \\(" -msgstr "- \\( (" - -#: lib/regex.c:1394 -msgid "Unmatched \\{" -msgstr "- \\{" - -#: lib/regex.c:1397 -msgid "Invalid content of \\{\\}" -msgstr "\\{\\} " - -#: lib/regex.c:1400 -msgid "Invalid range end" -msgstr " " - -#: lib/regex.c:1403 -msgid "Memory exhausted" -msgstr " " - -#: lib/regex.c:1406 -msgid "Invalid preceding regular expression" -msgstr " " - -#: lib/regex.c:1409 -msgid "Premature end of regular expression" -msgstr " " - -#: lib/regex.c:1412 -msgid "Regular expression too big" -msgstr " " - -#: lib/regex.c:1415 -msgid "Unmatched ) or \\)" -msgstr "- \\) )" - -#: lib/regex.c:8034 -msgid "No previous regular expression" -msgstr " " - -#: lib/xmalloc.c:63 -msgid "memory exhausted" -msgstr " " - -#: src/analyze.c:809 src/diff.c:1283 -#, c-format -msgid "Files %s and %s differ\n" -msgstr " `%s'- `%s' \n" - -#: src/analyze.c:812 -#, c-format -msgid "Binary files %s and %s differ\n" -msgstr " `%s'- `%s' \n" - -#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 -msgid "No newline at end of file" -msgstr " - " - -#: src/cmp.c:43 -msgid "Written by Torbjorn Granlund and David MacKenzie." -msgstr ".David MacKenzie- Torbjorn Granlund \" " - -#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 -#, c-format -msgid "Try `%s --help' for more information." -msgstr ". `%s --help' " - -#: src/cmp.c:137 -#, c-format -msgid "invalid --ignore-initial value `%s'" -msgstr "--ignore-initial `%s' " - -#: src/cmp.c:146 -msgid "options -l and -s are incompatible" -msgstr " -s- -l " - -#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 -#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 -#: src/util.c:286 src/util.c:293 -msgid "write failed" -msgstr " " - -#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 -#: src/sdiff.c:179 -msgid "standard output" -msgstr " " - -#: src/cmp.c:160 -msgid "-b --print-bytes Print differing bytes." -msgstr " . -b --print-bytes" - -#: src/cmp.c:161 -msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." -msgstr " . N -i N --ignore-initial=N" - -#: src/cmp.c:162 -msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" -msgstr "" -" -i N1:N2\n" -" --ignore-initial=N1:N2" - -#: src/cmp.c:163 -msgid "" -" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." -msgstr ". N2 N1 " - -#: src/cmp.c:164 -msgid "-l --verbose Output byte numbers and values of all differing bytes." -msgstr ". ' -l --verbose" - -#: src/cmp.c:165 -msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." -msgstr " . N -n N --bytes=N" - -#: src/cmp.c:166 -msgid "-s --quiet --silent Output nothing; yield exit status only." -msgstr " . ; -s --quiet --silent" - -#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 -msgid "-v --version Output version info." -msgstr " . -v --version" - -#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 -msgid "--help Output this help." -msgstr " . --help" - -#: src/cmp.c:177 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" -msgstr " %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]] : \n" - -#: src/cmp.c:179 -msgid "Compare two files byte by byte." -msgstr ". " - -#: src/cmp.c:183 -msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." -msgstr " . SKIP2- SKIP1" - -#: src/cmp.c:184 -msgid "" -"SKIP values may be followed by the following multiplicative suffixes:\n" -"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" -"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." -msgstr "" -" : SKIP \n" -" ,M 1,048,576, MB 1,000,000 ,K 1024 ,kB 1000,\n" -" .T, P, E, Z, Y ,G 1,073,741,824 ,GB 1,000,000,000" - -#: src/cmp.c:187 -msgid "If a FILE is `-' or missing, read standard input." -msgstr " . , `-' FILE " - -#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 -msgid "Report bugs to ." -msgstr ". " - -#: src/cmp.c:231 -#, c-format -msgid "invalid --bytes value `%s'" -msgstr "--bytes `%s' " - -#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 -#, c-format -msgid "missing operand after `%s'" -msgstr "`%s' " - -#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 -#, c-format -msgid "extra operand `%s'" -msgstr "`%s' " - -#: src/cmp.c:477 -#, c-format -msgid "%s %s differ: byte %s, line %s\n" -msgstr "%s- %s %s ,%s \n" - -#: src/cmp.c:495 -#, c-format -msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" -msgstr "%s- %s %s ,%s %3o %s %3o %s \n" - -#: src/cmp.c:543 -#, c-format -msgid "cmp: EOF on %s\n" -msgstr "cmp: %s \n" - -#: src/diff.c:41 -msgid "" -"Written by Paul Eggert, Mike Haertel, David Hayes,\n" -"Richard Stallman, and Len Tower." -msgstr "" -" ,David Hayes ,Mike Haertel ,Paul Eggert \" \n" -" .Len Tower- ,Richard Stallman" - -#: src/diff.c:322 -#, c-format -msgid "invalid context length `%s'" -msgstr "`%s' " - -#: src/diff.c:405 -msgid "pagination not supported on this host" -msgstr " " - -#: src/diff.c:420 src/diff3.c:315 -msgid "too many file label options" -msgstr " -L " - -#: src/diff.c:498 -#, c-format -msgid "invalid width `%s'" -msgstr "`%s' " - -#: src/diff.c:502 -msgid "conflicting width options" -msgstr " " - -#: src/diff.c:526 -#, c-format -msgid "invalid horizon length `%s'" -msgstr "--horizon-lines `%s' " - -#: src/diff.c:629 -#, c-format -msgid "`-%ld' option is obsolete; use `-%c %ld'" -msgstr " `-%ld' `-%c %ld'- " - -#: src/diff.c:641 -#, c-format -msgid "`-%ld' option is obsolete; omit it" -msgstr " `-%ld'- " - -#: src/diff.c:709 -msgid "--from-file and --to-file both specified" -msgstr "--to-file --from-file " - -#: src/diff.c:832 -msgid "Compare files line by line." -msgstr ". " - -#: src/diff.c:834 -msgid "-i --ignore-case Ignore case differences in file contents." -msgstr ". -i --ignore-case" - -#: src/diff.c:835 -msgid "--ignore-file-name-case Ignore case when comparing file names." -msgstr ". --ignore-file-name-case" - -#: src/diff.c:836 -msgid "--no-ignore-file-name-case Consider case when comparing file names." -msgstr "" -" . --no-ignore-file-name-case" - -#: src/diff.c:837 src/sdiff.c:186 -msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." -msgstr "" -" . TAB -E --ignore-tab-expansion" - -#: src/diff.c:838 src/sdiff.c:187 -msgid "-b --ignore-space-change Ignore changes in the amount of white space." -msgstr " . -b --ignore-space-change" - -#: src/diff.c:839 -msgid "-w --ignore-all-space Ignore all white space." -msgstr " . -w --ignore-all-space" - -#: src/diff.c:840 src/sdiff.c:189 -msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." -msgstr " . -B --ignore-blank-lines" - -#: src/diff.c:841 src/sdiff.c:190 -msgid "" -"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." -msgstr "" -".RE -I RE --ignore-matching-lines=RE" - -#: src/diff.c:842 src/sdiff.c:191 -msgid "--strip-trailing-cr Strip trailing carriage return on input." -msgstr " . CR --strip-trailing-cr" - -#: src/diff.c:844 -msgid "--binary Read and write data in binary mode." -msgstr " . --binary" - -#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 -msgid "-a --text Treat all files as text." -msgstr " . -a --text" - -#: src/diff.c:848 -msgid "" -"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " -"context.\n" -"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " -"context.\n" -" --label LABEL Use LABEL instead of file name.\n" -" -p --show-c-function Show which C function each change is in.\n" -" -F RE --show-function-line=RE Show the most recent line matching RE." -msgstr "" -" . (3 :\") NUM -c -C NUM --context[=NUM]\n" -" . (3 :\") NUM -u -U NUM --unified[=NUM]\n" -" . LABEL- --label LABEL\n" -" . C -p --show-c-function\n" -" .RE -F RE --show-function-line=RE" - -#: src/diff.c:853 -msgid "-q --brief Output only whether files differ." -msgstr " . -q --brief" - -#: src/diff.c:854 -msgid "-e --ed Output an ed script." -msgstr " .ed -e --ed" - -#: src/diff.c:855 -msgid "--normal Output a normal diff." -msgstr " . --normal" - -#: src/diff.c:856 -msgid "-n --rcs Output an RCS format diff." -msgstr " .RCS -n --rcs" - -#: src/diff.c:857 -msgid "" -"-y --side-by-side Output in two columns.\n" -" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" -" --left-column Output only the left column of common lines.\n" -" --suppress-common-lines Do not output common lines." -msgstr "" -" . -y --side-by-side\n" -" . (130 :\") NUM- -W NUM --width=NUM\n" -" . , --left-column\n" -" . --suppress-common-lines" - -#: src/diff.c:861 -msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." -msgstr "`#ifdef NAME'- , -D NAME --ifdef=NAME" - -#: src/diff.c:862 -msgid "" -"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." -msgstr "" -"GFMT GTYPE ,\" --GTYPE-group-format=GFMT" - -#: src/diff.c:863 -msgid "--line-format=LFMT Similar, but format all input lines with LFMT." -msgstr " .LFMT ,\" --line-format=LFMT" - -#: src/diff.c:864 -msgid "" -"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." -msgstr "" -".LFMT LTYPE ,\" --LTYPE-group-format=LFMT" - -#: src/diff.c:865 -msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." -msgstr " .`changed' LTYPE GTYPE .`unchanged' `new' ,`old' LTYPE" - -#: src/diff.c:866 -msgid "" -" GFMT may contain:\n" -" %< lines from FILE1\n" -" %> lines from FILE2\n" -" %= lines common to FILE1 and FILE2\n" -" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" -" LETTERs are as follows for new group, lower case for old group:\n" -" F first line number\n" -" L last line number\n" -" N number of lines = L-F+1\n" -" E F-1\n" -" M L+1" -msgstr "" -" : GFMT\n" -" FILE1- %<\n" -" FILE2- %>\n" -" FILE2- FILE1- %=\n" -" LETTER printf %[-][WIDTH][.[PREC]]{doxX}LETTER\n" -" :( ) LETTER\n" -" F\n" -" L\n" -" L-F+1 = N\n" -" F-1 E\n" -" M+1 M" - -#: src/diff.c:877 -msgid "" -" LFMT may contain:\n" -" %L contents of line\n" -" %l contents of line, excluding any trailing newline\n" -" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" -msgstr "" -" : LFMT\n" -" %L\n" -" %l\n" -" printf %[-][WIDTH][.[PREC]]{doxX}n" - -#: src/diff.c:881 -msgid "" -" Either GFMT or LFMT may contain:\n" -" %% %\n" -" %c'C' the single character C\n" -" %c'\\OOO' the character with octal code OOO" -msgstr "" -" : LFMT GFMT\n" -" %% %\n" -" C %c'C'\n" -" OOO %c'\\OOO'" - -#: src/diff.c:886 -msgid "-l --paginate Pass the output through `pr' to paginate it." -msgstr " . `pr' -l --paginate" - -#: src/diff.c:887 src/sdiff.c:198 -msgid "-t --expand-tabs Expand tabs to spaces in output." -msgstr " . TAB -t --expand-tabs" - -#: src/diff.c:888 src/diff3.c:452 -msgid "-T --initial-tab Make tabs line up by prepending a tab." -msgstr " . TAB \" -TAB -T --initial-tab" - -#: src/diff.c:890 -msgid "-r --recursive Recursively compare any subdirectories found." -msgstr " . - -r --recursive" - -#: src/diff.c:891 -msgid "-N --new-file Treat absent files as empty." -msgstr " . -N --new-file" - -#: src/diff.c:892 -msgid "--unidirectional-new-file Treat absent first files as empty." -msgstr "" -" . --unidirectional-new-file" - -#: src/diff.c:893 -msgid "-s --report-identical-files Report when two files are the same." -msgstr "" -" . -s --report-identical-files" - -#: src/diff.c:894 -msgid "-x PAT --exclude=PAT Exclude files that match PAT." -msgstr " .PAT -x PAT --exclude=PAT" - -#: src/diff.c:895 -msgid "" -"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." -msgstr "" -"FILE- -X FILE --exclude-from=FILE" - -#: src/diff.c:896 -msgid "" -"-S FILE --starting-file=FILE Start with FILE when comparing directories." -msgstr "" -" .FILE -S FILE --starting-file=FILE" - -#: src/diff.c:897 -msgid "" -"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." -msgstr "" -". FILE1 . FILE1 --from-file=FILE1" - -#: src/diff.c:898 -msgid "" -"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." -msgstr "" -" . FILE2 .FILE2- --to-file=FILE2" - -#: src/diff.c:900 -msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." -msgstr "" -". NUM --horizon-lines=NUM" - -#: src/diff.c:901 src/sdiff.c:200 -msgid "-d --minimal Try hard to find a smaller set of changes." -msgstr " . -d --minimal" - -#: src/diff.c:902 -msgid "" -"--speed-large-files Assume large files and many scattered small changes." -msgstr " . --speed-large-files" - -#: src/diff.c:907 -msgid "" -"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." -msgstr "" -".`FILE... DIR' `DIR FILE...' `DIR1 DIR2' `FILE1 FILE2' FILES" - -#: src/diff.c:908 -msgid "" -"If --from-file or --to-file is given, there are no restrictions on FILES." -msgstr "" -" .FILES ,--to-file --from-file " - -#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 -msgid "If a FILE is `-', read standard input." -msgstr "" -" . ,`-' FILE " - -#: src/diff.c:920 -#, c-format -msgid "Usage: %s [OPTION]... FILES\n" -msgstr "%s [OPTION]... FILES : \n" - -#: src/diff.c:949 -#, c-format -msgid "conflicting %s option value `%s'" -msgstr "%s `%s' " - -#: src/diff.c:962 -msgid "conflicting output style options" -msgstr " " - -#: src/diff.c:976 -msgid "regular empty file" -msgstr " " - -#: src/diff.c:976 -msgid "regular file" -msgstr "" - -#: src/diff.c:978 -msgid "directory" -msgstr "" - -#: src/diff.c:981 -msgid "block special file" -msgstr " " - -#: src/diff.c:984 -msgid "character special file" -msgstr " " - -#: src/diff.c:987 -msgid "fifo" -msgstr "fifo " - -#: src/diff.c:991 -msgid "socket" -msgstr "" - -#: src/diff.c:994 -msgid "message queue" -msgstr " " - -#: src/diff.c:997 -msgid "semaphore" -msgstr "" - -#: src/diff.c:1000 -msgid "shared memory object" -msgstr " " - -#: src/diff.c:1003 -msgid "typed memory object" -msgstr " " - -#: src/diff.c:1006 -msgid "weird file" -msgstr " " - -#: src/diff.c:1070 src/diff.c:1256 -#, c-format -msgid "Only in %s: %s\n" -msgstr "%s- %s\n" - -#: src/diff.c:1193 -msgid "cannot compare `-' to a directory" -msgstr " `-' " - -#: src/diff.c:1220 -msgid "-D option not supported with directories" -msgstr " -D " - -#: src/diff.c:1229 -#, c-format -msgid "Common subdirectories: %s and %s\n" -msgstr "%s- %s : -\n" - -#: src/diff.c:1266 -#, c-format -msgid "File %s is a %s while file %s is a %s\n" -msgstr "%s %s- %s %s \n" - -#: src/diff.c:1345 -#, c-format -msgid "Files %s and %s are identical\n" -msgstr " %s- %s \n" - -#: src/diff3.c:26 -msgid "Written by Randy Smith." -msgstr ".Randy Smith \" " - -#: src/diff3.c:328 -msgid "incompatible options" -msgstr " " - -#: src/diff3.c:368 -msgid "`-' specified for more than one input file" -msgstr " `-' " - -#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 -#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 -msgid "read failed" -msgstr " " - -#: src/diff3.c:441 -msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." -msgstr "MYFILE YOURFILE- OLDFILE- -e --ed" - -#: src/diff3.c:442 -msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." -msgstr "" -" . , -E --show-overlap" - -#: src/diff3.c:443 -msgid "-A --show-all Output all changes, bracketing conflicts." -msgstr " . , -A --show-all" - -#: src/diff3.c:444 -msgid "-x --overlap-only Output overlapping changes." -msgstr "" -" . -x --overlap-only" - -#: src/diff3.c:445 -msgid "-X Output overlapping changes, bracketing them." -msgstr " . -X" - -#: src/diff3.c:446 -msgid "-3 --easy-only Output unmerged nonoverlapping changes." -msgstr " . -3 --easy-only" - -#: src/diff3.c:448 -msgid "-m --merge Output merged file instead of ed script (default -A)." -msgstr " .(-A \") ed -m --merge" - -#: src/diff3.c:449 -msgid "-L LABEL --label=LABEL Use LABEL instead of file name." -msgstr "" -" . LABEL- -L LABEL --label=LABEL" - -#: src/diff3.c:450 -msgid "-i Append `w' and `q' commands to ed scripts." -msgstr " .ed `q'- `w' -i" - -#: src/diff3.c:453 src/sdiff.c:202 -msgid "--diff-program=PROGRAM Use PROGRAM to compare files." -msgstr "" -" . PROGRAM --diff-program=PROGRAM" - -#: src/diff3.c:465 -#, c-format -msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" -msgstr "%s [OPTION]... MYFILE OLDFILE YOURFILE : \n" - -#: src/diff3.c:467 -msgid "Compare three files line by line." -msgstr ". " - -#: src/diff3.c:673 -msgid "internal error: screwup in format of diff blocks" -msgstr "diff : " - -#: src/diff3.c:971 -#, c-format -msgid "%s: diff failed: " -msgstr "%s \" diff :" - -#: src/diff3.c:993 -msgid "internal error: invalid diff type in process_diff" -msgstr "process_diff : " - -#: src/diff3.c:1018 -msgid "invalid diff format; invalid change separator" -msgstr " : " - -#: src/diff3.c:1242 -msgid "invalid diff format; incomplete last line" -msgstr " : " - -#: src/diff3.c:1265 src/sdiff.c:273 -#, c-format -msgid "subsidiary program `%s' not executable" -msgstr " `%s' -" - -#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 -#, c-format -msgid "subsidiary program `%s' not found" -msgstr " `%s' -" - -#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 -#, c-format -msgid "subsidiary program `%s' failed" -msgstr "`%s' - " - -#: src/diff3.c:1294 -msgid "invalid diff format; incorrect leading line chars" -msgstr " : " - -#: src/diff3.c:1370 -msgid "internal error: invalid diff type passed to output" -msgstr " : " - -#: src/diff3.c:1647 src/diff3.c:1704 -msgid "input file shrank" -msgstr " " - -#: src/dir.c:162 -#, c-format -msgid "cannot compare file names `%s' and `%s'" -msgstr "`%s'- `%s' " - -#: src/sdiff.c:35 -msgid "Written by Thomas Lord." -msgstr ".Thomas Lord \" " - -#: src/sdiff.c:183 -msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." -msgstr " .FILE- , -o FILE --output=FILE" - -#: src/sdiff.c:185 -msgid "-i --ignore-case Consider upper- and lower-case to be the same." -msgstr " . -i --ignore-case" - -#: src/sdiff.c:188 -msgid "-W --ignore-all-space Ignore all white space." -msgstr " . -W --ignore-all-space" - -#: src/sdiff.c:194 -msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." -msgstr ". (130 \") NUM -w NUM --width=NUM" - -#: src/sdiff.c:195 -msgid "-l --left-column Output only the left column of common lines." -msgstr " . , -l --left-column" - -#: src/sdiff.c:196 -msgid "-s --suppress-common-lines Do not output common lines." -msgstr "" -" . -s --suppress-common-lines" - -#: src/sdiff.c:201 -msgid "" -"-H --speed-large-files Assume large files and many scattered small changes." -msgstr " . -H --speed-large-files" - -#: src/sdiff.c:214 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 FILE2\n" -msgstr "%s [OPTION]... FILE1 FILE2 : \n" - -#: src/sdiff.c:215 -msgid "Side-by-side merge of file differences." -msgstr ". " - -#: src/sdiff.c:327 -msgid "cannot interactively merge standard input" -msgstr " " - -#: src/sdiff.c:588 -msgid "both files to be compared are directories" -msgstr " " - -#: src/sdiff.c:853 -msgid "" -"ed:\tEdit then use both versions, each decorated with a header.\n" -"eb:\tEdit then use both versions.\n" -"el:\tEdit then use the left version.\n" -"er:\tEdit then use the right version.\n" -"e:\tEdit a new version.\n" -"l:\tUse the left version.\n" -"r:\tUse the right version.\n" -"s:\tSilently include common lines.\n" -"v:\tVerbosely include common lines.\n" -"q:\tQuit.\n" -msgstr "" -"ed -- , ,\n" -"eb -- ,\n" -"el -- ,\n" -"er -- ,\n" -"e -- \n" -"l -- \n" -"r -- \n" -"s -- \n" -"v -- \n" -"q -- \n" diff --git a/src/bin/diffutils/po/id.gmo b/src/bin/diffutils/po/id.gmo deleted file mode 100644 index 9fda1b8a9870639cfffa863bfc50b8b6f9b8e727..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22711 zcmd^{dvqMvecwm5l|--|*|H?dl5JhdB0)-+B>+ky1&R_u5F{Z21PFixX_7H!cL$5n z?#`}uW(dNHo!F_<+I5_#W2Z^;wv#q?>$ver(uZ^0Hm8qsn)I2tr#VU5)ATe=kJGe0 zX;1n%{rrCS&g?9JB`G!kb&oE;yEFIsyT8}{-5>O+H{SQ#p8b3oc$eqh{rA8>^1L^- z?BjdK!4G-fy%U~yR~P&uzyGS|z3nmZH26=zInTTA9pIy20Mh2Z4})(5zXZM$lzs(e zyfN^9fbaIax9=g4B876_D{C_zHLm{2KV8=RL?Ayp!N{`~1Nl2N~x<8IN_n<8JUcxCk=N zJHE^Pmi9+I@1Y05=RkSS8Xo!>2wfif#~|as^M3FINFOrJJE5hw0Dcub=Xnp`3)0WS zS3%bF@DG5D^RT?9-$&jI9s=o8==#VFkamy!4EO~2U%@kM-9z9(aGia+1b&>~w14-% z0pG)akAT#B&lETfegu3T6#7_j_!#&FkhMMW>+bg-fb8GCw}9;5J|Elg~S(vZwoRg2==E?*{3A|K~y4?f(ZLbl?BGApAWl{P8fzJMXRFB=}7r zv=n|Dod+3rbOXE>{3ytJM?VEhyI%%J`R`wVKM(#d5MDWejLGu@{|Wp?w)TGT_d(|5 z!P`%M0|@<}WDJjYPqJ4spC?xx%6Rfy*70Ug_~CKz)8NzK-vH_B$v*_yucxTvt$@cs z*7B6BTTtjd0saa|`=|a0gs;bBK2L(e*UV>Z6NLZ9UIp2gvCo3cf9&tO=Q0j-^<}=$ z!52O=;0cET$UFZd;631vz{k_z=lD(kmHz;~5&WMZV;=%!eTN6<|4KLPFJ{lqHBvxzE5`-vEYrV}3qSj1$>Mp3B8#2pk*y`}``@m`Nt045BdIPu$vL|8}roI!L z0e{+|>_5McF^2SatP4`_nCvfeIQFkW*7rPX^Dcn_cozI6@EJtvF7On11e^lD6wVx)@%u2Z{tx&#OPmB3!HXbuXFdzk@67Lj(CO6uAnQCu zUqbIw9|2zg{~AdBQ(p(6)9e9L`aSpi;CmqX zJ>Y|&tRFhhzX;Ob{08_g@I&C6!5;?Mv-zI|naBL!0-4vmjLY+dH-hxL@DND93r9h8 z%)%P@bKtju@Y8wW7uI)P`0*P+p%ZgC|0xg}E=oQ2X;J7)Ka0NtJ^;!%ftjFdHD zfNzD=kAU#eGIJ9By$lZuA1r?qgs#iK2(mZJUkBfYNq7VJUXVEoy;qo%ykC*=p!G@w zA0yK%3BRG+>Q_K$xBAaO=)U@!?)e{r@YzM_?*;G#I1UPZpx?zWg3$NkuYm^qW03V; zq7RYRON=4>bxG!FKpBU9zVtgF`*}&~zs2*`r2qGT%w6cV#u!3}wPlcJYd1lu_i>Q< zu6+ii{o3b2WOVJ9LDskSRq$@`H$e7f?YA5X9iidcpMcQtGINmrFVBDmgdWoVvh)vq zF8>(Fc$fb&co(Hd*`oY3MLxnm?4N#G{L7p?S%d7;hbTht_ftMdk&n=6MZej9z7=?d z^7E8U%C}QkkM}A?KIbV{C?BKzMT*d~LRp~Ppd6nm~x%+qZFanY076Q?3d^$IalcCX@{~` z&r<#j1(^^%ub;>G_xs)V?{ip&kMiS5_uvxvLzM5Jd^bhp;zuZ-pp-vf;>Q~0FSv)( z;Dq}=4h8C|eeV1F zz(w~xhZp(s`TU1N;j7D(Rmx$?Im*vb)+xV0=}_h!G2JXY9DU$9vwGRuqSc+30oJ=JeeB?1b(7g-x>r zyXs%Rx;A%e_3ZVlm8(n3voqJPzgq9yy!^rW+11tAWn;R%C{8#0B;96lNjI#S4WWy^ z)uD|0k(i(tnt(ZWTCL8OV9&(imTB}lS$E9v45HM6B-A&ZR^7g_Bo(rrHfAI0C8@5} z#96x<_S_H*!h(V!@6H=n+jKS@p^lq*|MXLqO49c%-TVEY3v~F@gvY;oZ!n|Dj)!rY zXoHg6D4LH z`i+j6b;bao^m-P$a@e~s1O@$_8np)=fTa%E~|aWAZO z8gcZ2uppTwkR`*O?{z&Rp6@G9`6|smvfU2S8L2t}d;aB@6XFz3PZIT$( zc+#RmXUdnpFiPH+O5&b>V?227YpE77~Y{L%q@Kke9G)ec%* zv|_Xoh4pg9<5r5yjO)t&q;FUdjtYAy;si;x&ug$#mCj*)wkYlNwq?}Ku+=qYF-t`e zq?_!!Jkd9uUi5)ZtOQJspTEcw&V^yu$TuOX%CShVQ~%vwxDnmd$tT$cU!{|%5qEmf zpJn-R&<=f7&Sp*@TTQ*S8ODwpqS2HBQdNm^XS*ls?W?jKdlz?x&0?k#Cs94O7`L1U zt7xMgazX{hJ&>)Ib+SKU-G@UPcCm>u(@BE(V^Mf!cUfuE7X6*nf)x9Wh$M82c~-Tm zD^Aj0)b(=(@7H>$QhC(Z`L&?eivl|Bg=yA{4eCl4FY|Crqnt5m3eG4qL~f@i9cN6k z4SR7$7Dtv-(1$_G#|l_}G^@QZK+RPXbemJ%%EV%r!*(|nzB+7-?}tIM?RVl9g5wx0 zi`yaOs6)QEb0h4vf^Jtfy}$lxX_#zwwtSg$-mXL=Q~=ITGfcHzC*Ej9wNxl~Qd&BG ztG0r;X*t&v%w}n9wl+IRqUB(9Cm2WT)5j@uetH2rPDdN{aO1fBA%JCv1?G^qOF&29isvZFg^UC%<< zI4a=^xJrzq9VodRISY~%q;|9&O1HC0@jos8oioejMWMlKo9vX+BJwVm{k^t>t1$4ZC4%ojG|) z%QbCj83ATTp9HnApp~%y)}~k-eNO$$#Xj#LMgv=ohHh&Eoj&uko+N4td*c>4tIlPv zrP58r+irvCs;;Uk(J@LW`U+&SX?Qa=xh`OSg$j@tRATXkIO?o@%ZSCI9A8SmVnu>> zCqtjGlY=YOe)NRkTkp{<$#KDXgrWrWF(cL(aYoG(BdcqDGrcN?>v};fv0Voc>>z8U z=J3J39jkS^7+33%GyM@iqqB>7XQ)E4y?5G~tKRQTNTD2@GxTjZ7o>u;j|M)RS$Vx6~yBrhuW1;zTM%>gG(UlT-2i7 zd!ejKVO=KDhO5;8uHpu9{H%*I+K4#l1=fUNMUzms&+RK40t3Ttw08;=GsCZ>hBXro z+4*{>#+?9Ll`B+i7FWg9xiB{Iew7Bh1%Pdro zmrPh+B7e@GQwzz2wS6~e-~yw7%u z`kGm_WTjYe7T0MGC48TQCPK@X1P2}Q&xwQIB3ApD*^WYjDB;ZrKPC;*45uG|E^m$< z!?W@6q2n~FVe_mJU@G$5+RAiG6ouMcPCF%`(+P-k#8EeaHzkIYyKJXAc!+2d%VIki zQYWlVP+g2H{mhC-gi4Yhu%Mb7l~vmT)4d^!gb%H6wP^dze@F2~hdNtQ$LWzfvB6tL z4@JJe71h&CdqQ$O=X^3?Zzc|pA9P}t7NMR-KDkVKQH(La@2Yly=ps<2YLOE-IA?klOi++CyKc~y117p!<< zuvRpNxh`KP)S;Rj)!5ppx#bDNKmDKjwo<9s_iF4a6{#{xPZB3!-V&z~#3kT?th@Ad zM5}51OvFQ$i3k?by8Crbr@0Nt-;YNS+AB_$GGYUL6OV~3OEi`eckmzN;HqAV=m?$r zO2wn6K)*}7bzhg#juHuEkI@F#9kmkI#i4MQ5EbO7AozD}Ly;SFe4rc#f8;h3c~R!bZlSUXEd+xj3v9l?b?S zEJwfhpX{!@5VncE(0nt{6P8_4C;W_nP%^IpspXZC;h%-M+qgHZ)Z^Ev;|Z-|T_<5)nWnu65OS+cS0f_vYiO#zwFnli%j(m*BW{DrJ|gw98opxUtx7n} z#R0`6hb}U8e$lK=FE3A@U%i49aj0ho9Gb)cV;0&Gp&=z;E7+=xT zfJ(@XD^n=p|BheWV_XMRUU8|B2d8(V4#ic8A=g(BU)%-p}#4$nQHhHvd)=@b& z#5k(Ev2&n`cQJ0poh?-IHlolrVXxQe@la2n3~)eH>u|+evd(xMae@k;y!3{1S&Ia3IGB&cz!B2E0QHfTI zNTOx;c{*8@tFKDA&t)WG+pNG&n*+~RH#==2b@QDbZeVE+tDRo;c zhhGS4=fd~{5kj!;@8eo14{*VJoodo)g=u)qbQsG->8+|{a1=e%jC4Z9(SBsR&mjaL zB&sPqDN$)*IIr63py)LW4j0=;5*U|ns-;jqh?p2}CJsNBd|rP9S8uYf#NBTm&c%H?TsQ(;fGBR8h*xnxhKL#w* z9WRQNtJ0`i+LAus5+z2Onp8uH5=OTgZVJw3i;-*bxJF!nPIMUM3tt526h%4JN06=#CH8x?nLBb3-+vT36R%uu{QQQ zZXl8>DET`b&W?VJi3qVoS@bX3i%ION*~8@`A_WhMaHyv(Le-!4juv(;R1qgE2~h zTyR8e?BLY^5A5X|(FHGe8LTx_FWKHzdxak-*DO{G=8se*Cis0_78-g9l!7_jYC6@I zp{19gLqi}Hr&$h{8$`wAr}e-c8*x11pcu)8XFe05jJq%QhP{>rg*OR8a12Lb->RC% zAUtt5^)^hkt&NZ7N=-y!=j^w_2-BzQwAZhWC`-MLtj?dS`^d96zf= znT6G-#*a{So@5ap*C)o~fzzhUDn6Py8}_2@Kq8dSqe`RqZ=PthZ&uN~29ss&oqy2g^7)K_57J(G$nleYLQ95$jw{D^? z=G;lSb1~zU=PJ*PkkFwQ@mzRkHld{+a4}#=pMg}(U|7~t6CrGhgrr&Ako=0B8B0Y4 zVn_`L(Ue4`PE&H0O6f}F!CZb6`AXG*!MTL*Mb@*kSuo@)?Re48SF$gdG=X1xE}fvg zJ*~d}Y$fh3vZmQPU#T9n0t!3J$t8cQ{4&jg zf!w9IgA47Jhbc-~g)Z9g;hwDg8lnfy&8VN<#HHBFSzBgfsqmW8m-g5I#$)SkXO{8= zdy6L=Y=XEOxUpoBw$5wIQL=O@FH21;+-MUv0!!Y(OeN*fy>gXYZP!#ddEHtI@|mQ| za0~UI;dz^>B&RVUu{$>iqu67kMs>Bd5dKwepM=R$m zIjZfbaNC5Xl@QquLzEp3hVyzf&Xu{H7eOa!uJz9RIqaE2w zCxaSC9G0JESQ4A8B=XYcz>kt8X-Q6u!_t+`WN{$0%Tt!DC<;~a7BCs|PHeIC&<_>L zaQ#?eGpuJ^LC8T%wjiZVxwhVuOc-;r-=htSa{k4W$qIkFlIJiLY6#-$39pH%iew6! z$Fv%>yHQJK#w5|5a%pYf?#g9a64Az0l*$sNw*)1~wh=XjRuUy9iHYx7J8R1b&JUI~ zms6RhtAW@*l4v-fB!NW!2WUj3Bq#_aPV7K3+FpB`ge|N=uBPoCmv(n}K9j5|lKs)m zxuXf~$ZNWjtfs8324B~NK}!gQ3b`0|8;yci%&J0IYs`djdt@}74Z1`!@p)_(>&}d( zu86xXT-xu*X)1Bc0FxN!L1^g4am*xBb8gBmjv1QYG%cP=*RIdXy-X)p_qi!=c9Krq zV19??uA-mnv}o^^ip%UiLHapQv>MEFa*gtxFWQXZ4@rEW$vQ-E)l)Z3*h7aNn(}0F zt}J?T3|`FomYGiKklUz+6??3p6Rg`LJmq?_o;8`Gfo&xSp;CIwY^UAx4VqC^qTo$# z^GJ!3%RR_8s~1C(9_H@GifgR?N*(D-v}^4o-0+;ITXVN;KBi_5F28-=)9xi&ox@py z1h`HOlK{DHnfR3JWSjg{%|!2%^$RXuIqzvn66~5*tz-wq0hWsi=FM91K1hQOHf0%NAMhdUE)U6u$|;zO z$zY;TKP9Tq3XVxgh~k{GlL;={iz$&_oBvc!iOR=Pl9ji}9#guVme^L2Nzpe0IZ-9D z=QAB3dSbSDW> z{hpjNAgku@E#wqsJ9AQMSzwRkC~h4#)oFsWv1w6BPjDR5(;eGEuEt`t!ATgo}d zdOcPSN$SwpR^vM^=jgsCaH%i<)O#-uvy-h|`=~!kNn?A8eeFx$HF&pZv zdZ_g1EL^jLgKnA;+gDQ15-?z8n$J|EIGK|yPqdefoXNu0B@N0N&3feLHS?B)+y*kC z+{sq*p@cXwf8!82*H>j&<*zTuYbf3>QBw3O9hI}9`fJ9)@W);9hq@&BH1JR)i%M3#cUsh{o|eUg+MPZ|4x~(gL0OAUjN)LI z1#+O$E{3H>%?G4L3ClPu$^prlWy@gNcu3~UOLz*j?6c}_{@f!ss^mbahdq;}ESK%l zNU)viBe9CZ(xe=-Y_i+#L@dG5yroSb(hz{*+EJ7b;ACio3Q%a}HR6>t zfE7KB!xnp0exF7S$KTGT_BXWDOCbb#U`-XhCmMisDWNw8M1B<+Q#Qs|%9$!2s6VDz zQ}&UnkzILHu2a^`8IsVsC?j19Pl|UoL8?R_n>y9p^}L|lNfbC+(vOGe9Eu|>s+Fo@ zF^CKmDurWCkgx&PYUrXX-b>-59vdfccR2&ibzM99aE*$q zA9vU$WK_zga&y#sHSfHb+#*_!vLlDU&cVJvmq+?ZBy`zT<=1m4ooi%NUHjlbt68)Y zSyYkDYLa_`uvZT@vsN}x?WB;%d1B>WcQ;q6+8Lqu3HzX_s}Z?41-Ws<BO3 z339JQYY)l6^3JQrpov&E(ov5hE*K)CQPVtxg=jW0)$o|IUzYxRT?z-;eQ!@TEjnbwp*mB=f47 zg#Vu>Ud?o>fmuh7<(XG@GhBWbqSgwloUL9CGV+4X5x+yb%I9%&t-&|D61HT3+azoemg{ich}y7G z;v{%E*paX$RgM`Uzxb(x*;>Q`x~OXcXR?BuhNK z4zN#LV1biEewW~^ZV^ZF94Bi0b}*zaHgF)aIJ{~R9TSOgCs4`b8f+l}->Sqb2aITb zI_Mu#yu$veO?AsEQo7W7$W5Qs%I@k2Ni2f6HgX_S@!Z=+fV#|&k2cnuzk;;H)?Hh# zPnaT^OYKFzPnNhGFq3GEa9xv3F1tf6EWRt3Ygp@2HrGHE?OIQ1rChGPY6NjWuqbqy zT(%i2$tokHapj?&a&IJY?RadvkQ6RC>kFS*_Yw1@H}~%NNRmpMzqSwB6-nm0bzKIO zqjzP5oUU{Bs5SznZ9W%vTGG38V>GR6;M%V#d4*(ng)L9_-ExWCoyvVZY@O@SJj;t5 zjEIyj%}=tNW^?ZDD=1zF-Sg)ce)A4MG!6tk; zWpC%EYcEf>xbfN}^NW!D%QkGy0iM4DEw{5o)c<+IE(#oT`)FM(+e)&=nnBldQ{73l zV|}M{AQj9uPD%4hhc_*r|p}1P!a)jK~BC%6q7u$JVQ((9JQwBv{Zh?$aBMNq8Fpc z#v7eQk-;|j&MinadObqs2)iWFtt<0K&uzKE@bE2F*|=bn6HuEqroOu5xRn(r!z5ffX, 2002 -# -msgid "" -msgstr "" -"Project-Id-Version: diffutils 2.7.10\n" -"POT-Creation-Date: 2002-04-05 14:10-0800\n" -"PO-Revision-Date: 2002-04-02 09:35GMT+0700\n" -"Last-Translator: Tedi Heriyanto \n" -"Language-Team: Indonesian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 0.9.5\n" - -#: lib/c-stack.c:188 -msgid "program error" -msgstr "kesalahan program" - -#: lib/c-stack.c:189 -msgid "stack overflow" -msgstr "overflow stack" - -#: lib/error.c:128 lib/error.c:156 -msgid "Unknown system error" -msgstr "Kesalahan sistem tidak dikenal" - -#: lib/freesoft.c:27 -msgid "" -"This program comes with NO WARRANTY, to the extent permitted by law.\n" -"You may redistribute copies of this program\n" -"under the terms of the GNU General Public License.\n" -"For more information about these matters, see the file named COPYING." -msgstr "" -"This program comes with NO WARRANTY, to the extent permitted by law.\n" -"You may redistribute copies of this program\n" -"under the terms of the GNU General Public License.\n" -"For more information about these matters, see the file named COPYING." - -#: lib/getopt.c:693 -#, c-format -msgid "%s: option `%s' is ambiguous\n" -msgstr "%s: option `%s' rancu\n" - -#: lib/getopt.c:718 -#, c-format -msgid "%s: option `--%s' doesn't allow an argument\n" -msgstr "%s: option `--%s' tidak mengijinkan ada argumen\n" - -#: lib/getopt.c:723 -#, c-format -msgid "%s: option `%c%s' doesn't allow an argument\n" -msgstr "%s: option `%c%s' tidak mengijinkan ada argumen\n" - -#: lib/getopt.c:741 lib/getopt.c:914 -#, c-format -msgid "%s: option `%s' requires an argument\n" -msgstr "%s: option `%s' butuh sebuah argumen\n" - -#: lib/getopt.c:770 -#, c-format -msgid "%s: unrecognized option `--%s'\n" -msgstr "%s: option tidak dikenal `--%s'\n" - -#: lib/getopt.c:774 -#, c-format -msgid "%s: unrecognized option `%c%s'\n" -msgstr "%s: option tidak dikenal `%c%s'\n" - -#: lib/getopt.c:800 -#, c-format -msgid "%s: illegal option -- %c\n" -msgstr "%s: option ilegal -- %c\n" - -#: lib/getopt.c:803 -#, c-format -msgid "%s: invalid option -- %c\n" -msgstr "%s: option invalid -- %c\n" - -#: lib/getopt.c:833 lib/getopt.c:963 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "%s: option membutuhkan sebuah argumen -- %c\n" - -#: lib/getopt.c:880 -#, c-format -msgid "%s: option `-W %s' is ambiguous\n" -msgstr "%s: option `-W %s' rancu\n" - -#: lib/getopt.c:898 -#, c-format -msgid "%s: option `-W %s' doesn't allow an argument\n" -msgstr "%s: option `-W %s' tidak memboleh ada argumen\n" - -#: lib/regex.c:1367 -msgid "Success" -msgstr "Sukses" - -#: lib/regex.c:1370 -msgid "No match" -msgstr "Tidak ada kecocokan" - -#: lib/regex.c:1373 -msgid "Invalid regular expression" -msgstr "Ekspresi reguler tidak valid" - -#: lib/regex.c:1376 -msgid "Invalid collation character" -msgstr "Karakter collation tidak valid" - -#: lib/regex.c:1379 -msgid "Invalid character class name" -msgstr "Nama karakter kelas tidak valid" - -#: lib/regex.c:1382 -msgid "Trailing backslash" -msgstr "Trailing backslash" - -#: lib/regex.c:1385 -msgid "Invalid back reference" -msgstr "Back reference tidak valid" - -#: lib/regex.c:1388 -msgid "Unmatched [ or [^" -msgstr "Tidak cocok [ atau [^" - -#: lib/regex.c:1391 -msgid "Unmatched ( or \\(" -msgstr "Tidak cocok ( atau \\(" - -#: lib/regex.c:1394 -msgid "Unmatched \\{" -msgstr "Tidak cocok \\{" - -#: lib/regex.c:1397 -msgid "Invalid content of \\{\\}" -msgstr "Isi \\\\{\\\\} tidak valid" - -#: lib/regex.c:1400 -msgid "Invalid range end" -msgstr "Batas akhir tidak valid" - -#: lib/regex.c:1403 -msgid "Memory exhausted" -msgstr "Memori habis" - -#: lib/regex.c:1406 -msgid "Invalid preceding regular expression" -msgstr "Ekspresi reguler terdahulu tidak valid" - -#: lib/regex.c:1409 -msgid "Premature end of regular expression" -msgstr "Akhir ekspresi reguler prematur" - -#: lib/regex.c:1412 -msgid "Regular expression too big" -msgstr "Ekspresi reguler terlalu besar" - -#: lib/regex.c:1415 -msgid "Unmatched ) or \\)" -msgstr "Tidak cocok ) atau \\)" - -#: lib/regex.c:8034 -msgid "No previous regular expression" -msgstr "Tidak ada ekspresi reguler sebelumnya" - -#: lib/xmalloc.c:63 -msgid "memory exhausted" -msgstr "memori habis" - -#: src/analyze.c:809 src/diff.c:1283 -#, c-format -msgid "Files %s and %s differ\n" -msgstr "File %s dan %s berbeda\n" - -#: src/analyze.c:812 -#, c-format -msgid "Binary files %s and %s differ\n" -msgstr "File biner %s dan %s berbeda\n" - -#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 -msgid "No newline at end of file" -msgstr "Tidak ada newline pada akhir file" - -#: src/cmp.c:43 -msgid "Written by Torbjorn Granlund and David MacKenzie." -msgstr "Ditulis oleh Torbjorn Granlund dan David MacKenzie." - -#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 -#, c-format -msgid "Try `%s --help' for more information." -msgstr "Coba `%s --help' untuk informasi lebih jauh." - -#: src/cmp.c:137 -#, c-format -msgid "invalid --ignore-initial value `%s'" -msgstr "tidak valid --ignore-initial value `%s'" - -#: src/cmp.c:146 -msgid "options -l and -s are incompatible" -msgstr "option -l dan -s tidak kompatibel" - -#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 -#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 -#: src/util.c:286 src/util.c:293 -msgid "write failed" -msgstr "gagal menulis" - -#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 -#: src/sdiff.c:179 -msgid "standard output" -msgstr "output standar" - -#: src/cmp.c:160 -msgid "-b --print-bytes Print differing bytes." -msgstr "-b --print-bytes Cetak byte berbeda." - -#: src/cmp.c:161 -msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." -msgstr "-i SKIP --ignore-initial=SKIP Lewati SKIP byte pertama input." - -#: src/cmp.c:162 -msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" -msgstr "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" - -#: src/cmp.c:163 -msgid "" -" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." -msgstr " Lewati SKIP1 byte pertama FILE1 dan SKIP2 byte pertama FILE2." - -#: src/cmp.c:164 -msgid "-l --verbose Output byte numbers and values of all differing bytes." -msgstr "-l --verbose Output nomor byte dan nilai semua byte yang berbeda." - -#: src/cmp.c:165 -msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." -msgstr "-n LIMIT --bytes=LIMIT Bandingkan paling banyak LIMIT byte." - -#: src/cmp.c:166 -msgid "-s --quiet --silent Output nothing; yield exit status only." -msgstr "-s --quiet --silent Tidak ada output; hanya beri status keluar." - -#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 -msgid "-v --version Output version info." -msgstr "-v --version Tampilkan info versi." - -#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 -msgid "--help Output this help." -msgstr "--help Tampilkan bantuan ini." - -#: src/cmp.c:177 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" -msgstr "Penggunaan: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" - -#: src/cmp.c:179 -msgid "Compare two files byte by byte." -msgstr "Bandingkan dua file byte per byte" - -#: src/cmp.c:183 -msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." -msgstr "SKIP1 dan SKIP2 adalah jumlah byte yang harus dilewati di tiap file." - -#: src/cmp.c:184 -msgid "" -"SKIP values may be followed by the following multiplicative suffixes:\n" -"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" -"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." -msgstr "" -"Nilai SKIP dapat diikuti oleh suffiks perkalian berikut:\n" -"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" -"GB 1,000,000,000, G 1,073,741,824, dan seterusnya untuk T, P, E, Z, Y." - -#: src/cmp.c:187 -msgid "If a FILE is `-' or missing, read standard input." -msgstr "Jika sebuah FILE adalah `-' atau tidak ada, baca input standar" - -#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 -msgid "Report bugs to ." -msgstr "Laporkan bug ke " - -#: src/cmp.c:231 -#, c-format -msgid "invalid --bytes value `%s'" -msgstr "nilai --byte tidak valid `%s'" - -#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 -#, c-format -msgid "missing operand after `%s'" -msgstr "tidak ada operand setelah `%s'" - -#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 -#, c-format -msgid "extra operand `%s'" -msgstr "operand ekstra `%s'" - -#: src/cmp.c:477 -#, c-format -msgid "%s %s differ: byte %s, line %s\n" -msgstr "%s %s berbeda: byte %s, baris %s\n" - -#: src/cmp.c:495 -#, c-format -msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" -msgstr "%s %s berbeda: byte %s, baris %s adalah %3o %s %3o %s\n" - -#: src/cmp.c:543 -#, c-format -msgid "cmp: EOF on %s\n" -msgstr "cmp: EOF pada %s\n" - -#: src/diff.c:41 -msgid "" -"Written by Paul Eggert, Mike Haertel, David Hayes,\n" -"Richard Stallman, and Len Tower." -msgstr "" -"Ditulis oleh Paul Eggert, Mike Haertel, David Hayes,\n" -"Richard Stallman, dan Len Tower." - -#: src/diff.c:322 -#, c-format -msgid "invalid context length `%s'" -msgstr "panjang context tidak valid `%s'" - -#: src/diff.c:405 -msgid "pagination not supported on this host" -msgstr "paginasi tidak didukung pada host ini" - -#: src/diff.c:420 src/diff3.c:315 -msgid "too many file label options" -msgstr "terlalu banyak option label file" - -#: src/diff.c:498 -#, c-format -msgid "invalid width `%s'" -msgstr "lebar tidak valid `%s'" - -#: src/diff.c:502 -msgid "conflicting width options" -msgstr "option lebar konflik" - -#: src/diff.c:526 -#, c-format -msgid "invalid horizon length `%s'" -msgstr "panjang horizon tidak valid `%s'" - -#: src/diff.c:629 -#, c-format -msgid "`-%ld' option is obsolete; use `-%c %ld'" -msgstr "`-%ld' option kuno; gunakan `-%c %ld'" - -#: src/diff.c:641 -#, c-format -msgid "`-%ld' option is obsolete; omit it" -msgstr "`-%ld' option kuno, hilangkan saja" - -#: src/diff.c:709 -msgid "--from-file and --to-file both specified" -msgstr "--from-file dan --to-file keduanya disebutkan" - -#: src/diff.c:832 -msgid "Compare files line by line." -msgstr "Bandingkan file baris per baris" - -#: src/diff.c:834 -msgid "-i --ignore-case Ignore case differences in file contents." -msgstr "-i --ignore-case Abaikan beda case dalam isi file." - -#: src/diff.c:835 -msgid "--ignore-file-name-case Ignore case when comparing file names." -msgstr "--ignore-file-name-case Abaikan case saat membandingkan nama file." - -#: src/diff.c:836 -msgid "--no-ignore-file-name-case Consider case when comparing file names." -msgstr "" -"--no-ignore-file-name-case Pertimbangkan case saat membandingkan nama file." - -#: src/diff.c:837 src/sdiff.c:186 -msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." -msgstr "-E --ignore-tab-expansion Abaikan perubahan akibat ekspansi tab." - -#: src/diff.c:838 src/sdiff.c:187 -msgid "-b --ignore-space-change Ignore changes in the amount of white space." -msgstr "-b --ignore-space-change Abaikan perubahan sejumlah white space." - -#: src/diff.c:839 -msgid "-w --ignore-all-space Ignore all white space." -msgstr "-w --ignore-all-space Abaikan seluruh white space." - -#: src/diff.c:840 src/sdiff.c:189 -msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." -msgstr "-B --ignore-blank-lines Abaikan perubahan baris kosong." - -#: src/diff.c:841 src/sdiff.c:190 -msgid "" -"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." -msgstr "" -"-I RE --ignore-matching-lines=RE Abaikan perubahan baris yang cocok dg RE." - -#: src/diff.c:842 src/sdiff.c:191 -msgid "--strip-trailing-cr Strip trailing carriage return on input." -msgstr "--strip-trailing-cr Hapus trailing carriage return pada input." - -#: src/diff.c:844 -msgid "--binary Read and write data in binary mode." -msgstr "--binary Baca dan tulis data dalam mode biner." - -#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 -msgid "-a --text Treat all files as text." -msgstr "-a --text Perlakukan seluruh file sebagai teks." - -#: src/diff.c:848 -msgid "" -"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " -"context.\n" -"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " -"context.\n" -" --label LABEL Use LABEL instead of file name.\n" -" -p --show-c-function Show which C function each change is in.\n" -" -F RE --show-function-line=RE Show the most recent line matching RE." -msgstr "" -"-c -C NUM --context[=NUM] Output NUM (baku 3) baris isi yang disalin.\n" -"-u -U NUM --unified[=NUM] Output NUM (baku 3) baris unified context.\n" -" --label LABEL Gunakan LABEL alih-alih nama file.\n" -" -p --show-c-function Tampilkan setiap fungsi C yang berubah.\n" -" -F RE --show-function-line=RE Tampilkan baris paling akhir yang cocok " -"dengan RE." - -#: src/diff.c:853 -msgid "-q --brief Output only whether files differ." -msgstr "-q --brief Tampilkan hanya apakah file berbeda." - -#: src/diff.c:854 -msgid "-e --ed Output an ed script." -msgstr "-e --ed Output adalah script ed." - -#: src/diff.c:855 -msgid "--normal Output a normal diff." -msgstr "--normal Output normal diff." - -#: src/diff.c:856 -msgid "-n --rcs Output an RCS format diff." -msgstr "-n --rcs Output dalam format RCS diff." - -#: src/diff.c:857 -msgid "" -"-y --side-by-side Output in two columns.\n" -" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" -" --left-column Output only the left column of common lines.\n" -" --suppress-common-lines Do not output common lines." -msgstr "" -"-y --side-by-side Output dalam dua kolom.\n" -" -W NUM --width=NUM Output paling banyak NUM (baku 130) kolom.\n" -" --left-column Output hanya kolom kiri baris bersama.\n" -" --suppress-common-lines Jangan hasilkan baris bersama." - -#: src/diff.c:861 -msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." -msgstr "" -"-D NAME --ifdef=NAME Output file merge untuk tampilkan `#ifdef NAME' diffs." - -#: src/diff.c:862 -msgid "" -"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." -msgstr "" -"--GTYPE-group-format=GFMT Serupa, tapi format input kelompok GTYPE dg GFMT. " - -#: src/diff.c:863 -msgid "--line-format=LFMT Similar, but format all input lines with LFMT." -msgstr "--line-format=LFMT Serupa, tapi format seluruh baris input dg LFMT." - -#: src/diff.c:864 -msgid "" -"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." -msgstr "" -"--LTYPE-line-format=LFMT Serupa, tapi format baris input LTYPE dg LFMT." - -#: src/diff.c:865 -msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." -msgstr "" -" LTYPE adalah `old', `new', atau `unchanged'. GTYPE adalah LTYPE atau " -"`changed'." - -#: src/diff.c:866 -msgid "" -" GFMT may contain:\n" -" %< lines from FILE1\n" -" %> lines from FILE2\n" -" %= lines common to FILE1 and FILE2\n" -" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" -" LETTERs are as follows for new group, lower case for old group:\n" -" F first line number\n" -" L last line number\n" -" N number of lines = L-F+1\n" -" E F-1\n" -" M L+1" -msgstr "" -" GFMT dapat berisi:\n" -" %< baris dari FILE1\n" -" %> baris dari FILE2\n" -" %= baris bersama FILE1 dan FILE2\n" -" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec untuk LETTER\n" -" LETTERs adalah sebagai berikut untuk grup baru, huruf kecil untuk grup " -"tua:\n" -" F nomor baris pertama\n" -" L nomor baris terakhir\n" -" N jumlah baris = L-F+1\n" -" E F-1\n" -" M L+1" - -#: src/diff.c:877 -msgid "" -" LFMT may contain:\n" -" %L contents of line\n" -" %l contents of line, excluding any trailing newline\n" -" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" -msgstr "" -" LFMT dapat berisi:\n" -" %L isi baris\n" -" %l isi baris, tanpa baris baru\n" -" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec untuk nomor baris input" - -#: src/diff.c:881 -msgid "" -" Either GFMT or LFMT may contain:\n" -" %% %\n" -" %c'C' the single character C\n" -" %c'\\OOO' the character with octal code OOO" -msgstr "" -" GFMT atau LFMT dapat berisikan:\n" -" %% %\n" -" %c'C' karakter tunggal C\n" -" %c'\\OOO' karakter dengan kode oktal OOO" - -#: src/diff.c:886 -msgid "-l --paginate Pass the output through `pr' to paginate it." -msgstr "-l --paginate Berikan output ke `pr' untuk di-paginate." - -#: src/diff.c:887 src/sdiff.c:198 -msgid "-t --expand-tabs Expand tabs to spaces in output." -msgstr "-t --expand-tabs Ekspansi tab ke spasi dalam output." - -#: src/diff.c:888 src/diff3.c:452 -msgid "-T --initial-tab Make tabs line up by prepending a tab." -msgstr "-T --initial-tab Buat tab beraturan dg menambahkan sebuah tab." - -#: src/diff.c:890 -msgid "-r --recursive Recursively compare any subdirectories found." -msgstr "-r --recursive Membandingkan subdirektori secara rekursif." - -#: src/diff.c:891 -msgid "-N --new-file Treat absent files as empty." -msgstr "-N --new-file Perlakukan tiada file sebagai kosong." - -#: src/diff.c:892 -msgid "--unidirectional-new-file Treat absent first files as empty." -msgstr "" -"--unidirectional-new-file Anggap file tidak ada pertama sebagai kosong." - -#: src/diff.c:893 -msgid "-s --report-identical-files Report when two files are the same." -msgstr "-s --report-identical-files Laporkan ketika dua file sama." - -#: src/diff.c:894 -msgid "-x PAT --exclude=PAT Exclude files that match PAT." -msgstr "-x PAT --exclude=PAT Tanpa file yang cocok dengan PAT." - -#: src/diff.c:895 -msgid "" -"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." -msgstr "" -"-X FILE --exclude-from=FILE Abaikan file yang cocok dengan pola dalam FILE" - -#: src/diff.c:896 -msgid "" -"-S FILE --starting-file=FILE Start with FILE when comparing directories." -msgstr "" -"-S FILE --starting-file=FILE Mulai dengan FILE ketika membandingkan " -"direktori." - -#: src/diff.c:897 -msgid "" -"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." -msgstr "" -"--from-file=FILE1 Bandingkan FILE1 ke semua operand. FILE1 dapat berupa " -"direktori." - -#: src/diff.c:898 -msgid "" -"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." -msgstr "" -"--to-file=FILE2 Bandingkan semua operand dengan FILE2. FILE2 dapat berupa " -"direktori." - -#: src/diff.c:900 -msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." -msgstr "--horizon-lines=NUM Pertahankan NUM baris prefiks dan suffiks umum." - -#: src/diff.c:901 src/sdiff.c:200 -msgid "-d --minimal Try hard to find a smaller set of changes." -msgstr "-d --minimal Usahakan mencari perubahan terkecil." - -#: src/diff.c:902 -msgid "" -"--speed-large-files Assume large files and many scattered small changes." -msgstr "--speed-large-files Asumsikan file besar dan banyak perubahan kecil." - -#: src/diff.c:907 -msgid "" -"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." -msgstr "" -"FILES adalah `FILE1 FILE2' atau `DIR1 DIR2' atau `DIR FILE...' atau `FILE... " -"DIR'." - -#: src/diff.c:908 -msgid "" -"If --from-file or --to-file is given, there are no restrictions on FILES." -msgstr "" -"Bila --from-file atau --to-file diberikan, tidak ada batasan untuk FILES." - -#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 -msgid "If a FILE is `-', read standard input." -msgstr "Jika sebuah file FILE adalah `-', baca standard input." - -#: src/diff.c:920 -#, c-format -msgid "Usage: %s [OPTION]... FILES\n" -msgstr "Penggunaan: %s [OPTION]... FILES\n" - -#: src/diff.c:949 -#, c-format -msgid "conflicting %s option value `%s'" -msgstr "Nilai option %s konflik dengan `%s'" - -#: src/diff.c:962 -msgid "conflicting output style options" -msgstr "option gaya output konflik" - -#: src/diff.c:976 -msgid "regular empty file" -msgstr "file reguler kosong" - -#: src/diff.c:976 -msgid "regular file" -msgstr "file reguler" - -#: src/diff.c:978 -msgid "directory" -msgstr "direktori" - -#: src/diff.c:981 -msgid "block special file" -msgstr "blok file khusus" - -#: src/diff.c:984 -msgid "character special file" -msgstr "karakter file khusus" - -#: src/diff.c:987 -msgid "fifo" -msgstr "fifo" - -#: src/diff.c:991 -msgid "socket" -msgstr "soket" - -#: src/diff.c:994 -msgid "message queue" -msgstr "antrian pesan" - -#: src/diff.c:997 -msgid "semaphore" -msgstr "semafor" - -#: src/diff.c:1000 -msgid "shared memory object" -msgstr "obyek memori bersama" - -#: src/diff.c:1003 -msgid "typed memory object" -msgstr "objek memori bertipe" - -#: src/diff.c:1006 -msgid "weird file" -msgstr "file aneh" - -#: src/diff.c:1070 src/diff.c:1256 -#, c-format -msgid "Only in %s: %s\n" -msgstr "Hanya dalam %s: %s\n" - -#: src/diff.c:1193 -msgid "cannot compare `-' to a directory" -msgstr "tidak dapat membandingkan `-' dg direktori" - -#: src/diff.c:1220 -msgid "-D option not supported with directories" -msgstr "-D option tidak didukung dg direktori" - -#: src/diff.c:1229 -#, c-format -msgid "Common subdirectories: %s and %s\n" -msgstr "Subdirektori sama: %s dan %s\n" - -#: src/diff.c:1266 -#, c-format -msgid "File %s is a %s while file %s is a %s\n" -msgstr "File %s adalah %s sementara file %s adalah %s\n" - -#: src/diff.c:1345 -#, c-format -msgid "Files %s and %s are identical\n" -msgstr "File %s dan %s identik\n" - -#: src/diff3.c:26 -msgid "Written by Randy Smith." -msgstr "Ditulis oleh Randy Smith" - -#: src/diff3.c:328 -msgid "incompatible options" -msgstr "option tidak kompatibel" - -#: src/diff3.c:368 -msgid "`-' specified for more than one input file" -msgstr "`-' dispesifikasikan lebih dari satu file input" - -#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 -#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 -msgid "read failed" -msgstr "gagal membaca" - -#: src/diff3.c:441 -msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." -msgstr "" -"-e --ed Output perubahan tanpa dimerge dari OLDFILE ke YOURFILE ke dl " -"MYFILE." - -#: src/diff3.c:442 -msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." -msgstr "-E --show-overlap Output perubahan unmerge, konflik dl tanda kurung." - -#: src/diff3.c:443 -msgid "-A --show-all Output all changes, bracketing conflicts." -msgstr "-A --show-all Output seluruh perubahan, konflik dalam tanda kurung." - -#: src/diff3.c:444 -msgid "-x --overlap-only Output overlapping changes." -msgstr "-x --overlap-only Tampilkan perubahan yang overlap." - -#: src/diff3.c:445 -msgid "-X Output overlapping changes, bracketing them." -msgstr "-X Output perubahan overlap, beri tanda kurung." - -#: src/diff3.c:446 -msgid "-3 --easy-only Output unmerged nonoverlapping changes." -msgstr "-3 --easy-only Output unmerged perubahan nonoverlap." - -#: src/diff3.c:448 -msgid "-m --merge Output merged file instead of ed script (default -A)." -msgstr "-m --merge Tampilkan file yang dimerge bukan script ed (baku -A)." - -#: src/diff3.c:449 -msgid "-L LABEL --label=LABEL Use LABEL instead of file name." -msgstr "-L LABEL --label=LABEL Gunakan LABEL bukan nama file." - -#: src/diff3.c:450 -msgid "-i Append `w' and `q' commands to ed scripts." -msgstr "-i Tambah perintah `w' dan `q' ke script ed." - -#: src/diff3.c:453 src/sdiff.c:202 -msgid "--diff-program=PROGRAM Use PROGRAM to compare files." -msgstr "--diff-program=PROGRAM Gunakan PROGRAM untuk membandingkan file." - -#: src/diff3.c:465 -#, c-format -msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" -msgstr "Pemakaian: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" - -#: src/diff3.c:467 -msgid "Compare three files line by line." -msgstr "Bandingkan tiga file baris per baris." - -#: src/diff3.c:673 -msgid "internal error: screwup in format of diff blocks" -msgstr "kesalahan internal: kacau dalam format blok diff" - -#: src/diff3.c:971 -#, c-format -msgid "%s: diff failed: " -msgstr "%s: diff gagal: " - -#: src/diff3.c:993 -msgid "internal error: invalid diff type in process_diff" -msgstr "kesalahan internal: tipe diff tidak valid dalam process_diff" - -#: src/diff3.c:1018 -msgid "invalid diff format; invalid change separator" -msgstr "format diff tidak valid; separator perubahan tidak valid" - -#: src/diff3.c:1242 -msgid "invalid diff format; incomplete last line" -msgstr "format diff tidak valid; baris akhir tidak lengkap" - -#: src/diff3.c:1265 src/sdiff.c:273 -#, c-format -msgid "subsidiary program `%s' not executable" -msgstr "program subsider `%s' tidak dapat dieksekusi" - -#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 -#, c-format -msgid "subsidiary program `%s' not found" -msgstr "program subsider `%s' tidak ditemukan" - -#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 -#, c-format -msgid "subsidiary program `%s' failed" -msgstr "program subsider `%s' gagal" - -#: src/diff3.c:1294 -msgid "invalid diff format; incorrect leading line chars" -msgstr "format diff tidak valid; karakter leading line tidak tepat" - -#: src/diff3.c:1370 -msgid "internal error: invalid diff type passed to output" -msgstr "kesalahan internal: tipe diff tidak valid dimasukkan ke output" - -#: src/diff3.c:1647 src/diff3.c:1704 -msgid "input file shrank" -msgstr "file input mengecil" - -#: src/dir.c:162 -#, c-format -msgid "cannot compare file names `%s' and `%s'" -msgstr "tidak dapat membandingkan nama file `%s' dan `%s'" - -#: src/sdiff.c:35 -msgid "Written by Thomas Lord." -msgstr "Ditulis oleh Thomas Lord." - -#: src/sdiff.c:183 -msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." -msgstr "" -"-o FILE --output=FILE Operasi secara interaktif, kirim output ke FILE." - -#: src/sdiff.c:185 -msgid "-i --ignore-case Consider upper- and lower-case to be the same." -msgstr "-i --ignore-case Abaikan huruf kapital dan huruf kecil." - -#: src/sdiff.c:188 -msgid "-W --ignore-all-space Ignore all white space." -msgstr "-W --ignore-all-space Abaikan seluruh white space." - -#: src/sdiff.c:194 -msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." -msgstr "" -"-w NUM --width=NUM Output paling banyak NUM (baku 130) kolom per baris." - -#: src/sdiff.c:195 -msgid "-l --left-column Output only the left column of common lines." -msgstr "-l --left-column Hanya tampilkan kolom kiri baris yang sama." - -#: src/sdiff.c:196 -msgid "-s --suppress-common-lines Do not output common lines." -msgstr "-s --suppress-common-lines Jangan tampilkan baris yang sama." - -#: src/sdiff.c:201 -msgid "" -"-H --speed-large-files Assume large files and many scattered small changes." -msgstr "" -"-H --speed-large-files Asumsikan file besar dan banyak sebaran perubahan " -"kecil." - -#: src/sdiff.c:214 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 FILE2\n" -msgstr "Pemakaian: %s [OPTION]... FILE1 FILE2\n" - -#: src/sdiff.c:215 -msgid "Side-by-side merge of file differences." -msgstr "Merge side-by-side beda file." - -#: src/sdiff.c:327 -msgid "cannot interactively merge standard input" -msgstr "tidak dapat menggabung input standar secara interaktif" - -#: src/sdiff.c:588 -msgid "both files to be compared are directories" -msgstr "kedua file yang dibandingkan adalah direktori" - -#: src/sdiff.c:853 -msgid "" -"ed:\tEdit then use both versions, each decorated with a header.\n" -"eb:\tEdit then use both versions.\n" -"el:\tEdit then use the left version.\n" -"er:\tEdit then use the right version.\n" -"e:\tEdit a new version.\n" -"l:\tUse the left version.\n" -"r:\tUse the right version.\n" -"s:\tSilently include common lines.\n" -"v:\tVerbosely include common lines.\n" -"q:\tQuit.\n" -msgstr "" -"ed:\tEdit lalu gunakan kedua versi, dekorasikan dengan header.\n" -"eb:\tEdit lalu gunakan kedua versi.\n" -"el:\tEdit lalu gunakan versi kiri.\n" -"er:\tEdit lalu gunakan versi kanan.\n" -"e:\tEdit versi baru.\n" -"l:\tGunakan versi kiri.\n" -"r:\tGunakan versi kanan.\n" -"s:\tSertakan baris bersama secara diam-diam.\n" -"v:\tSertakan baris bersama secara verbose.\n" -"q:\tKeluar.\n" diff --git a/src/bin/diffutils/po/insert-header.sin b/src/bin/diffutils/po/insert-header.sin deleted file mode 100644 index b26de01f6c..0000000000 --- a/src/bin/diffutils/po/insert-header.sin +++ /dev/null @@ -1,23 +0,0 @@ -# Sed script that inserts the file called HEADER before the header entry. -# -# At each occurrence of a line starting with "msgid ", we execute the following -# commands. At the first occurrence, insert the file. At the following -# occurrences, do nothing. The distinction between the first and the following -# occurrences is achieved by looking at the hold space. -/^msgid /{ -x -# Test if the hold space is empty. -s/m/m/ -ta -# Yes it was empty. First occurrence. Read the file. -r HEADER -# Output the file's contents by reading the next line. But don't lose the -# current line while doing this. -g -N -bb -:a -# The hold space was nonempty. Following occurrences. Do nothing. -x -:b -} diff --git a/src/bin/diffutils/po/ja.gmo b/src/bin/diffutils/po/ja.gmo deleted file mode 100644 index 0ad1cef514d8ad497a100f055d62ad384ece8f8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22004 zcmd^_dwg8gb?*;tk_Ls`B)mePDF=dW9vWGa9Wb&D*s^R3Y)eRTh+~|1BppeEr5P~~ zY(taYq_@4dX_DUFHtFN`_IBhm4j38a7nW>G@(W3p>=Crah7ev31Z>j)GEhnapMKZg z`<$7PG{)r9|2p>8@0|VKYp=c5+Uu+zf8xUDE&ba8{Jv#<@*wz@WqqbqXMe63{ElUP zuEes=YX`e{f5fuBa22=^d;+YrtP8&gUI_+4+FbZu@C)Ep@JpcdD=6a?g71M}wycY$ zfTWAcb^b*mFu?myKpT{HQ^8k2`oH)BgY;o7;hkjN4*nfTyNh22ziL^RTnJtZE(WP{ z$-N-sU(yFI0G|eLwX92-gEb#qrSmWSCy;S2mGM~D7e5Kk1*<^D`Qi`FyR@HWS(jZ3 z-V91PYq;#sKk}bTN1vNFOrJm!PG!6x;{iVOf`d4y2#USAwkR^1lWd=W;2h z-zzQvr-SqGjOJ`ZI6S2BjoS`52lTdOz0C2d-v#OK zD%N1#0ra4kr?DgOwOdpdO; z$a$Fh7a;vl?F4BzbqIv+Q(pw(?`gsxmxGj9p9f39PlM1>_-)z}ka4Fqfu95a1Z2I_ zehf;x9&j4}kAhpk-+=JSwVW}@zxH+T_t@Ht!IL0!vf%COKLtYn>lwqM?0WV}=5u|W zK^afpWgQoQ!Vg!2e*?}0cY*YE{Tm?rbpv&*T5vYVT5gba3ktnUzp|gb=2O@L!heMifb2_Q3S|C;gC<|bfvy3WFLVe9pV{DT27@4Ff$xFmgZ}^@&jUB| zPX9%(fu8_>4Knt0K-M??5|H^#XDkcaPhSDj_w*lt(097*GxVPRG{`$qV z6$^jCBgJuDUfcmPUU47DeilCo!b`;`K>90w6TF(Hp8=tN3AB^)k~)yQl6sK#C1DVn zmV6gvJtaQ^nRm(Gg6v(%X7Im(+d=42asY%+O8y0$3XXwSu_U1v^DdnYUIg9+7JzF& z`Y%NuoVO7CW8NK(6zAu>o7iHZ@1JutWnUJ7Z-X-}>&7`C^tka}koDgve8@a*lzrk1 z+<463yC8JAi9M72n-+l3_$E2`k}vdSjGKgypvO(8b@?p%l6tdlH26*MHs1dfgjZ(C zIPlNSp9Gob%|#%5baN9}3H~L>-rW2wI17|{-)vcBj4AUkYX(_E8T=viDtiWm_siY` z>3=qDWWBTR1L2?9vX5U?O<+b)<^`Y3X#k6GS;#a z;3bw-Rbo)+Tgdw=uoV102;HiBLHMKU*C4!I&7N2`$R5l7RIdctzv}Or{7oS1t{yQc zEtmaf zeamIN%x8HI$b6O`0~v4mN$@<9%wsJH9#X#>_zRz_Un_qvA_)&%LHZ8qX41Dv-zLeg zizI9Ee!^Em`z@pv(tjsiKze{AKX}DjLHaY&-;;!oi%3gJ_mSq3f}|gl{x3;>8#Gw| z3;ZDoI$MvDevdSV^cB)=q@R%fk|aNP+!9{0Ny|yz4_c^SJAcEZRV3NVa?(PQ@CExM zw3B;<`pq=B4!n^hdjPM9oKU~3`1@Dp`TrQqhCkuudXw=r@b5@}O!^B_2k9S3KOklQ zgdgrA{kh4U2bP%UB_L-~@NfYDjVx<@Zw!Vh39fk*+lFe+_<* z)M(xXE;P^I0ISTi2eAe^fKK?pM7=H%o4${M<)uipD2uaS;k4XQMB)`v)+DM<0 z7k-;be?+>5bUR6YYcyEj1wTzHBsru{klg|q{iN*QH_gj~;NOt` zi6m#^YLff{8sw~rJXF7!!D6tU6e3lVzD&B4^jXprQWHsjoJ+BtL|%x_vbK@DUnvjQ zkv5XfC(R;FBmEE3pOTWKIO!6S{Qj0Sn{+AZ9@6JY-fun+-&ZfTT@i}6I8l4i!liX~ zBx)}aYzwZp8zSL&FcdB;u=!1yLeftS)5@pWHf`)!DBRrY*bObgXs{tpALU++yQ`|I zOr=ceS_ZNs4e?+reK$Hbbu3$tJ8`@@w%r;EJ2AT{8fmi^RxYV1(VgEip`cV3%=HQy zB5iGvupN)+W_B>#sGdx{m4Q_&@2Xr-w|LdcqLtM(73Hf|J=~sIl$# zXebc!Q>r z^j$&sfz0btI=rF8;_u`e%xJRXPB5Xc z{ZhKAT@z|oOsnZ#dq-t;iCw=w4u?TO#b1h1gs(GIN^`4}7FknbHvbz#O-)X;OqKG^ zRk1=52E>?fe(=)a6&Tz8HWm78=jyesI=5XkK$0wO4kS4>VMSDi&5vVz!ca(xQmY6ki5}QM|s? zNu0DV!}R`fFkMLl>8d^y4o278c8wEkR9w3@8j3r1V=x}HLt)z#w;^PuwlHg;JsN3_ z2HWOV*HkU4nTIe~j#Tnq5S0kcc9CXHFkwtuiQEmyn;IYxh)48WeFP~kQZdvNavHNM z&ef;LE;n82SNetp;V37HAdYcTb$$cvR8QwHKU)-!MAyrxElz8@ZC54YA_(Fw?7QTs zl1MakeyXyU&x7B0X>vHBk^E; zz**NGgeTe2@w0ABII?k6!W1x-7)f=Y$YsdslguZzp>1BeEmjo&&*I-oyC!>4NbrUh zcFIT*Df7<$WZS`3s1|g>;+EJ;=FP9bP6}|c>YdiP=2axAehh_UaS_Q_6u#V`;WBBG zmtm2&*{oWtg%6SqC&D`inArDgBBT3ARNN$P;!lccrQybwdbf>(Q>3>w>WeMF^;DMr>fj za;2UaS((=B;wwdQt@4Q_y6ajFb}-Qzw`W|J(PIsfc9g3&$eDgYAVFu#z0MGYqI=J^ zGgCd&n~*|ru*c9J!NHjG0kpCagbjfv3~yzY+O;BdAW%b#U2gl?PLOv)UNm?pTqHd# zG)Ga12d}O=h;!u}s;-3cZ4vG~m;@ruMJ(#Q7s{$r*eDZegR7MStiufA`q?PLs42un zFQ`=*S~TXU?KAtzhQPqE8|{q%Ma}RQYe1U`hm0>CFR}DZv}(x$#kq{PqH1}KdS?G4 z_Rp*BBgj3FdTk6~v_+Jh&gf`}S@_i(}u$PJiP z2^#O_rW?;=7)Y^t?KCyi>U*atqe#pzp_9L8(G4M6u0mN;Hu7Sw&YtAjl(`alYF_tI zQYKB%^8V_xyE3I#04)mlIZbiSL~EiA)nc|oX=b5<6f$8|$oVt&oYIg?Sha5tHe&)K zfb8mEj78BZ;@OPcy_;L?)$P$~vRJ=nNcLDYM$y-c&h-YC18Z*6a>;45xnL!k- z(>wcQx5*Ne`t|$BR>oOcz$bO)mIiXM2K2`#od;O%o$ktHc6lrEn_`9N_z$*7b!P6D|5Z`svn8@m}en zJ{oeG{7I@ULghg3sFARmI#kCnWJOLxA{wJ-xto|r>@BuXT`rWZnW)dwQY<(TZlpPs z2n4uja%g#oVW4yTJ>p=uh}NEMuMasmQJi%l?3j2kp1|nGp7WZc$FOVy*wEp4r~#d) zl>k$be61_vYei5foy%<}>(HqQh;hVKHwJHt56Lsx7DTWRktUkO#xbOturh)gMaj}n zg;+$0Bzb`amAX-9Rd>L2?~_HshuXHP(*1hxp>R`#I%}nlkt64#gV);XQWOZR4K>DF z^bN`M?D0vCzA2eee4ROFF&o}c!j^H@$+$+1=bFot=yp}VdY)oYqsiy0*StEMQW{}{ z%Pu!MXi!Xm#c-V${@TS@85i8XwlSE7z`!6Hi(R;}`3 zu9n9VWl)t)Q@*tYl{F%I?yxmR+)0iiXD3Q19yMh&qqo%ILc&?I?V|#^>Pgp$;D;OuY|*e zYdP{glQXgMQl|~y3(Z@C32rZq*0PAUxa7h3b8Q5OSQO@7BP9%WUkHC8i=8ljmE5s8 z$Ku))F0PI`*zXB;#&j}Co0vz%RZJ6Alb}s8s9(AQ%L{6-%V9k8Hq`0`a(7ppK zomprvC8JPsRPIuFnK`TQt2fBv4a&9=sh4QL zR*YG7;!ZPuKvBt#@k}kNvhSK#Q!{T_-3m?-mwINvrAZVpYN0KJYe*5WHMq8@U_~SW zd#q>M8$)u$aDa--jq8eWz-7iLK(nJ(q&qB*Hs3+FXxVamkrT!UX|<~p_3VMYB!syi zbBYQULL~T6tQ75573V{+9>ppBV6?$VbcV-0hR~C)m5`D1)M%GiRj;UAwy212#R?bSvS^3SZoVy>emd9|ADapRFs=BVSYS}6TsS-p+=oXx{%1V*8rS?kUk`fK2 zt5&T#Tcg^1h5DXid-oXc5>sH^g%6ocm!ne6h19NSZg!$^_&t5WJ6% z4~v8AomgQ(4HrL=m3SpuTk#}nc3(m#b@J(}D7()ZPQrS-7ItdM$**gPwBe~+5{Y64 zX3e2460N@{f+~hmnS8q5I!6+ zQQk}(e$KLaEgYO;PMUHipl&Kzp78NCd>%(>$;T5BD)Qjf%Q5L~EediKndPgN+(|dI zwU^lyRSQKxiKylxsXUk>A~`MQE0GeaX2h%t+MGpY%7;>2HI~zZvPAt7j|A&2K69O4 z(a7#_fWx+Ig8Hgp3}6nol5&lFxse--@l*!+6c9w96csr2XKhY}*6|fYQmA{S8G|~} z$?8Ny%`I^|Q_0l9!Omx0Kb!8wWiqi-`t%CM^%N^RzZTvI$CYZ7kEi~Z3VpLJxUcN| zuj!j<-YWN&oquP7i)?{~e2xa8too>;ccv-S6tO~K#Z~c8eb$y__!ciQr)dq<5Tdxz zwS+5!v)N+KwOCwse0{s{x~K}#8{d-5b7;|yVZ&abKr~-WXo9E3S&Pe&uFWSi)Rh`h zou(KK^enh`st>bSY?moAHzMO((06rB0I!bmwXxsfW{#vfC|;QwPLDpDi3qVoSY$r5 z`;(YZGm6QDM+zR4!=Wr~IaHZxk87dVLKQK>Vh*Ap$X71E{}%l{YtmWjbE78SHr_l# zZHqFo?@c%f$1=vN&k4aMHdZg$97r3dhsXR2%-1#_6yMC$K>mR1ZI>Hu*un&ooYgjY;n zwFPe2i0cs-#gKgP^kyQIG2hFre8sXLXB|!muHgvmvsF_*2usXO^)*aMTkRk9gqj?Q z@v~p+giw8Io%-{uAxd>LBC88jHU>D)Vvv{FV)6)kD3jGLExM_wq`08EsxDA2AFrqq zSb(4_vrCJMO9RC-1I1spOJ zI*`%$n$Z@xCwN;cwqC3#7D+@K98OQOQxtaMw-hX`Tw0M?WJytR0j^Fl90PR_tPHbn zU3_|bYcLd^E&kvrF4?&i%gY0|S7$29Xk3>96&yx6S!MRD`Vc`1Ix@(8S-yF@BkpL| z@YX%<*zTtfo^l7>&F=GVPoBu6;qKkc!idhgFAUUkbl}910ZlYquidZg-{$tXr?-CCbJQJk({7*Zy8YRe@{$UF zsSeA^P-)=9^r+03J#@G6Z%_qIK&WE`3MG#xkD;;!{3sz_HmHaWcT`t>IC)HqXQ{q{ ze#|~AGduM}%1sTq-iE3Rn#mhW^`thZ4y2?JMiT$Ko^^-aQ;I2VU5VUeN6%3}0!==u zPQIX^J-Y^vnuwr7NB8b8{)q4zC!vl>Q}(!|)H)KjS>+<)3l5B+l6zqlhNP6+WkbmU3Z&iBT- zL%uK0O{e>YKQJ;{=)2SHXC;1B^&O(bw)bs^zCTNyOr2pm>U@>BV=_>3gFb+xsln8S z)a$87Q$sR!_r%tNYET^<#8FT0J#l!iJJ$O|dQ=xoj1AiR+CZl}H1h7ydkCox_p}IP zcNhn_h@Nff;pbFCV@!$?&yEN3)_=IqP49nIt~Yvrqgsy( z^wC;yC}*d$wz$;Ix5as*eD-(mdV#rfIQMn!IqIhURgFIOjyvSOKuM3xWQMrvvm$-^ zjt?B6-2j?~w#g2dV0X`}Xn&!B&q3qDd{m<`_fh_xN_Onqo?Cgo3}HAYC$i_UcLv8e z+gn7py6Ii?@3G6|fjoK#lgF}xb`W@jdmeOqWRm_8{b?@92&M@X9E2u2QqQq3L+Dn$ zVkOYe8rGBQPaS)_d)vdg)2&e7J0$AKeDbmFT#`&q#eAVVABPV^CQ882S9#vB3bO)s zYAW23uGbG77fXWl40}6)-uXgxJd&z|{fherI(tNg?qoz8c2IV(PKNKiw(dBNJA1&+ zI8mk!fy{i@bIA@lC33!YkGe0pO01~wXy$6GBX(qi+(BwQ@1BOM(1!cE+!2*KcHkIX zJ+ObL`=D-}Cu(QkcEy-JGZL(my_=kiPWNQ8BbUj)u8bjdm~=Ewc7TpdeBgwe-ZqeW z(ujf~Z%ceKjrIO!TbCTktoR(gU#S74Nsky;!l%8j9r-}2<&V&j>0?^toT!O$ILZb) z?U`tYdiOjiy`C)!C$%kg6!n5c+}G9piqZ}CwcCHq4P%sG98Wr&J^1GF50EAw)q{{R zC*Z~-QeHm9X3i6Gvu!|c)b{7y7t7uB_NV*brk63jUTO9baW)(uf3FVqJ@%41Jf^u7 z$c?U1_Rwi1(mLHU?i20-cR+3&?he=0!mImX_aFjKF)tteb$pG}$nHLhmN+i5$kWn( zv2i^M=X>5~_h~n+9n)y*ez=+wGP#VI7+vGhQmz`~)%C!ZuGh7~{&?*?xlOB_#iY47 zjUuYhlQS3cFfqpLt76B!+k_Rjnb)Uu}Dzr)4795itIYJ2f5P-b3z2{))c$ zd3<~jj5;05d()ge21d)iz-iRg{1V%h}aX- zdv1_R>Iq>nxw-beIgIHj?W9(oFqiR4YqIE;o}-Vy>z2+hr4O3WQ1jduM4$;-94z*4uR^hBPOPnc4-z$!)VXN>SM zOq1>KmSSZnODF8@jB}_nt{-!9C-x<$vR2HWD^^`Y+l?kJZo zaTDQZfj;gDcc(WZHW>F47nf83ft;3en(UCPo>CZNa%neI&9wOFy4oqU|lfAbqeMUPH{VWMManqt!y*jV;;Dp-Id8oI$*JKTic8!Wy@@kk; z)$!K8eb1&|N}WiZ66@M^w;o2ddwv0BF3Jm}@X4;P>&iVS*Hc3&3yU}HjjQghUIE)E z;&)`|(e8(JsL7Gu?Z2VR!+!O&njQDx&FHa5+|yox1*dhnW5#~zcTeUCE78J|X%BE2 z+$)9;8|SHOH;n?s^Ofw_lXTNNyTzM^ixYbYC&dukYdqD-4PIDDvO|ZJBs;RhN_fkJ zl_WbR#FgMI%8e^Yc0jrQx@1RnvZEr|@r`813g&ST1{!crh$DhYCXad3EYaqQ_gcy; zQ^t7rJOjQ%Q|vB%1pD8Xb(#uF{iaI~4DTBf4Q}myr2F6h>x7dO;AK_5_tD*3dyX7_ zN0>XgVI(O|nBDL8yy#PYv=6uXj?KOQOb*%wR>fY>3#Q z=R?nCIFZg?clj((kTdmk-_Mz{t5h>1nn)UW*mXC0T%b-%)_N?@pTFa&Jx}cY5Qf9i zt>bINrexl)xu^PmzUvuxSgZVl+tqFTg>0f&hus5dmbX(3o79UqmmW-=EMfK z_gA^4BN?xCUncM-JLfubuFJ_;>ApF>78q?%j`sO=H|LX($1W&Y*lu+PmTi(xF;&qo*%6c zq@w6{Wjl|0*AR6%%2ZGu*ORE~{+xNLh#ha%D8RHRP5CI3MQGHL8MQOZ|A|p%$%sOY ztjgo79QuIcnAx=P#kuQOp*)IU>7haVQcpwIy>fi}KGe>FBkvt~Qtnp6M|-_0c!k8(?CQ=}NNmlPjrj`8&hOtTJ(`{-bi~jT+LK3AjPb+smEb6Kc}K%ppnN%u}faZW1>C* zPEt*>Jf_D^kt_8`YBYsQ(b#P!;zsNlZyl;H-_LD)k`pS3@~FHDN|wVhH)eMuV=M6F-8xh zcFQ#sHM2SON^+0VSsYUF>j=|(U!}6G&&, 2002. -# This file is distributed under the same license as the diffutils package. -# -msgid "" -msgstr "" -"Project-Id-Version: GNU diffutils 2.7.10\n" -"POT-Creation-Date: 2002-04-05 14:10-0800\n" -"PO-Revision-Date: 2002-03-14 12:16+0900\n" -"Last-Translator: IIDA Yosiaki \n" -"Language-Team: Japanese \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=EUC-JP\n" -"Content-Transfer-Encoding: 8bit\n" - -#: lib/c-stack.c:188 -msgid "program error" -msgstr "ץࡦ顼" - -#: lib/c-stack.c:189 -msgid "stack overflow" -msgstr "åСե" - -#: lib/error.c:128 lib/error.c:156 -msgid "Unknown system error" -msgstr "̤ΤΥƥࡦ顼Ǥ" - -#: lib/freesoft.c:27 -msgid "" -"This program comes with NO WARRANTY, to the extent permitted by law.\n" -"You may redistribute copies of this program\n" -"under the terms of the GNU General Public License.\n" -"For more information about these matters, see the file named COPYING." -msgstr "" -"This program comes with NO WARRANTY, to the extent permitted by law.\n" -"You may redistribute copies of this program\n" -"under the terms of the GNU General Public License.\n" -"For more information about these matters, see the file named COPYING.\n" -"-- ʲϻǤˡŪʻˤĤƤϾεҤˤäƤ\n" -"ˡεϰϤˤơڤݾڤϤޤ󡣤ʤϡΥץ\n" -"ʣGNU General Public License˴ŤƺۤǤޤ\n" -"ˤĤƤξܤϡCOPYINGȤե򸫤Ƥ" - -#: lib/getopt.c:693 -#, c-format -msgid "%s: option `%s' is ambiguous\n" -msgstr "%s: ץ%sפۣǤ\n" - -#: lib/getopt.c:718 -#, c-format -msgid "%s: option `--%s' doesn't allow an argument\n" -msgstr "%s: ץ--%sפϰդޤ\n" - -#: lib/getopt.c:723 -#, c-format -msgid "%s: option `%c%s' doesn't allow an argument\n" -msgstr "%s: ץ%c%sפϰդޤ\n" - -#: lib/getopt.c:741 lib/getopt.c:914 -#, c-format -msgid "%s: option `%s' requires an argument\n" -msgstr "%s: ץ%sפˤϰɬפǤ\n" - -#: lib/getopt.c:770 -#, c-format -msgid "%s: unrecognized option `--%s'\n" -msgstr "%s: ǧǤʤץ--%sפǤ\n" - -#: lib/getopt.c:774 -#, c-format -msgid "%s: unrecognized option `%c%s'\n" -msgstr "%s: ǧǤʤץ%c%sפǤ\n" - -#: lib/getopt.c:800 -#, c-format -msgid "%s: illegal option -- %c\n" -msgstr "%s: ʥץǤ -- %c\n" - -#: lib/getopt.c:803 -#, c-format -msgid "%s: invalid option -- %c\n" -msgstr "%s: ̵ʥץǤ -- %c\n" - -#: lib/getopt.c:833 lib/getopt.c:963 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "%s: ץϰ׵ᤷޤ -- %c\n" - -#: lib/getopt.c:880 -#, c-format -msgid "%s: option `-W %s' is ambiguous\n" -msgstr "%s: ץ-W %sפۣǤ\n" - -#: lib/getopt.c:898 -#, c-format -msgid "%s: option `-W %s' doesn't allow an argument\n" -msgstr "%s: ץ-W %sפϡդޤ\n" - -#: lib/regex.c:1367 -msgid "Success" -msgstr "" - -#: lib/regex.c:1370 -msgid "No match" -msgstr "פޤ" - -#: lib/regex.c:1373 -msgid "Invalid regular expression" -msgstr "̵ɽǤ" - -#: lib/regex.c:1376 -msgid "Invalid collation character" -msgstr "̵ʸǤ" - -#: lib/regex.c:1379 -msgid "Invalid character class name" -msgstr "̵ʸ饹̾Ǥ" - -#: lib/regex.c:1382 -msgid "Trailing backslash" -msgstr "³ռ" - -#: lib/regex.c:1385 -msgid "Invalid back reference" -msgstr "̵ʵջ" - -#: lib/regex.c:1388 -msgid "Unmatched [ or [^" -msgstr "ʤ[[^" - -#: lib/regex.c:1391 -msgid "Unmatched ( or \\(" -msgstr "ʤ(\\(" - -#: lib/regex.c:1394 -msgid "Unmatched \\{" -msgstr "ʤ\\{" - -#: lib/regex.c:1397 -msgid "Invalid content of \\{\\}" -msgstr "̵\\{\\}" - -#: lib/regex.c:1400 -msgid "Invalid range end" -msgstr "̵ϰϽλ" - -#: lib/regex.c:1403 -msgid "Memory exhausted" -msgstr "ۥȤ̤ޤ" - -#: lib/regex.c:1406 -msgid "Invalid preceding regular expression" -msgstr "̵ɽ" - -#: lib/regex.c:1409 -msgid "Premature end of regular expression" -msgstr "ͽɽνλ" - -#: lib/regex.c:1412 -msgid "Regular expression too big" -msgstr "礭ɽ" - -#: lib/regex.c:1415 -msgid "Unmatched ) or \\)" -msgstr "ʤ)\\)" - -#: lib/regex.c:8034 -msgid "No previous regular expression" -msgstr "ɽޤ" - -#: lib/xmalloc.c:63 -msgid "memory exhausted" -msgstr "ۥȤ̤ޤ" - -#: src/analyze.c:809 src/diff.c:1283 -#, c-format -msgid "Files %s and %s differ\n" -msgstr "ե%s%sϰ㤤ޤ\n" - -#: src/analyze.c:812 -#, c-format -msgid "Binary files %s and %s differ\n" -msgstr "Хʥ꡼ե%s%sϰ㤤ޤ\n" - -#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 -msgid "No newline at end of file" -msgstr "ե˲Ԥޤ" - -#: src/cmp.c:43 -msgid "Written by Torbjorn Granlund and David MacKenzie." -msgstr "ϡTorbjorn GranlundDavid MacKenzie" - -#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 -#, c-format -msgid "Try `%s --help' for more information." -msgstr "%s --helpפǡܺ٤ʾĴ٤ƤߤƤ" - -#: src/cmp.c:137 -#, c-format -msgid "invalid --ignore-initial value `%s'" -msgstr "̵--ignore-initial͡%s" - -#: src/cmp.c:146 -msgid "options -l and -s are incompatible" -msgstr "ץ-l-sξΩޤ" - -#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 -#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 -#: src/util.c:286 src/util.c:293 -msgid "write failed" -msgstr "߼" - -#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 -#: src/sdiff.c:179 -msgid "standard output" -msgstr "ɸ" - -#: src/cmp.c:160 -msgid "-b --print-bytes Print differing bytes." -msgstr "-b --print-bytes ۤʤХȤɽ" - -#: src/cmp.c:161 -msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." -msgstr "-i SKIP --ignore-initial=SKIP ϤƬSKIPХȤ򥹥åס" - -#: src/cmp.c:162 -msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" -msgstr "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" - -#: src/cmp.c:163 -msgid "" -" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." -msgstr " FILE1SKIP1ХȤFILE2SKIP2ХȤ򥹥åס" - -#: src/cmp.c:164 -msgid "-l --verbose Output byte numbers and values of all differing bytes." -msgstr "-l --verbose ٤ƤΰۤʤХȤλؿͤϡ" - -#: src/cmp.c:165 -msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." -msgstr "-n LIMIT --bytes=LIMIT ⡹LIMITХȤӡ" - -#: src/cmp.c:166 -msgid "-s --quiet --silent Output nothing; yield exit status only." -msgstr "-s --quiet --silent ϤʤλơΤߡ" - -#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 -msgid "-v --version Output version info." -msgstr "-v --version Сϡ" - -#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 -msgid "--help Output this help." -msgstr "--help ϡ" - -#: src/cmp.c:177 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" -msgstr "" -"ˡ: %s [ץ]... ե1 [ե2 [å1 [å2]]]\n" - -#: src/cmp.c:179 -msgid "Compare two files byte by byte." -msgstr "2ĤΥեХȤȤӤޤ" - -#: src/cmp.c:183 -msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." -msgstr "֥å1פȡ֥å2פϡƥե򥹥åפХȿ" - -#: src/cmp.c:184 -msgid "" -"SKIP values may be followed by the following multiplicative suffixes:\n" -"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" -"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." -msgstr "" -"åפͤˤϡη³뤳ȤǤޤ\n" -"kB 1000K 1024MB 1,000,000M 1,048,576\n" -"GB 1,000,000,000G 1,073,741,824ޤTPEZYˤĤƤƱ͡" - -#: src/cmp.c:187 -msgid "If a FILE is `-' or missing, read standard input." -msgstr "⤷ե뤬ʤ-פΤȤɸϤɤߤޤ" - -#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 -msgid "Report bugs to ." -msgstr "Х򸫤Ĥ𤷤Ƥ" - -#: src/cmp.c:231 -#, c-format -msgid "invalid --bytes value `%s'" -msgstr "̵--bytes͡%s" - -#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 -#, c-format -msgid "missing operand after `%s'" -msgstr "%sפθΥڥɤޤ" - -#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 -#, c-format -msgid "extra operand `%s'" -msgstr ";פʥڥɡ%s" - -#: src/cmp.c:477 -#, c-format -msgid "%s %s differ: byte %s, line %s\n" -msgstr "%s %s ۤʤޤ: Х %s %s\n" - -#: src/cmp.c:495 -#, c-format -msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" -msgstr "%s %s ۤʤޤ: Х %s %s %3o %s %3o %s\n" - -#: src/cmp.c:543 -#, c-format -msgid "cmp: EOF on %s\n" -msgstr "cmp: ե%s\n" - -#: src/diff.c:41 -msgid "" -"Written by Paul Eggert, Mike Haertel, David Hayes,\n" -"Richard Stallman, and Len Tower." -msgstr "" -"ϡPaul EggertMike HaertelDavid Hayes\n" -"Richard StallmanLen Tower" - -#: src/diff.c:322 -#, c-format -msgid "invalid context length `%s'" -msgstr "̵%s" - -#: src/diff.c:405 -msgid "pagination not supported on this host" -msgstr "ΥۥȤǤϥڡդ򥵥ݡȤޤ" - -#: src/diff.c:420 src/diff3.c:315 -msgid "too many file label options" -msgstr "ե롦٥롦ץ¿ޤ" - -#: src/diff.c:498 -#, c-format -msgid "invalid width `%s'" -msgstr "̵%s" - -#: src/diff.c:502 -msgid "conflicting width options" -msgstr "Υץ󤬾ͤƤޤ" - -#: src/diff.c:526 -#, c-format -msgid "invalid horizon length `%s'" -msgstr "̵ʲ%s" - -#: src/diff.c:629 -#, c-format -msgid "`-%ld' option is obsolete; use `-%c %ld'" -msgstr "-%ldץץϡ٤Ǥ-%c %ldפȤޤ礦" - -#: src/diff.c:641 -#, c-format -msgid "`-%ld' option is obsolete; omit it" -msgstr "-%ldץץϡ٤Ǥάޤ礦" - -#: src/diff.c:709 -msgid "--from-file and --to-file both specified" -msgstr "--from-file--to-fileξꤷޤ" - -#: src/diff.c:832 -msgid "Compare files line by line." -msgstr "2ĤΥեԤȤӤޤ" - -#: src/diff.c:834 -msgid "-i --ignore-case Ignore case differences in file contents." -msgstr "-i --ignore-case եƤʸʸ̵롣" - -#: src/diff.c:835 -msgid "--ignore-file-name-case Ignore case when comparing file names." -msgstr "--ignore-file-name-case ե̾ʸʸ̵롣" - -#: src/diff.c:836 -msgid "--no-ignore-file-name-case Consider case when comparing file names." -msgstr "--no-ignore-file-name-case ե̾ʸʸ̡" - -#: src/diff.c:837 src/sdiff.c:186 -msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." -msgstr "-E --ignore-tab-expansion Ÿκ̵롣" - -#: src/diff.c:838 src/sdiff.c:187 -msgid "-b --ignore-space-change Ignore changes in the amount of white space." -msgstr "-b --ignore-space-change κ̵롣" - -#: src/diff.c:839 -msgid "-w --ignore-all-space Ignore all white space." -msgstr "-w --ignore-all-space ̵롣" - -#: src/diff.c:840 src/sdiff.c:189 -msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." -msgstr "-B --ignore-blank-lines ιԤκ̵롣" - -#: src/diff.c:841 src/sdiff.c:190 -msgid "" -"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." -msgstr "-i RE --ignore-matching-lines=RE RE˰פ뤹٤ƤιԤκ̵롣" - -#: src/diff.c:842 src/sdiff.c:191 -msgid "--strip-trailing-cr Strip trailing carriage return on input." -msgstr "--strip-trailing-cr Ϥå꥿" - -#: src/diff.c:844 -msgid "--binary Read and write data in binary mode." -msgstr "--binary Хʥ꡼⡼ɤɤ߽񤭡" - -#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 -msgid "-a --text Treat all files as text." -msgstr "-a --text ٤ƥƥȤȤƽ" - -#: src/diff.c:848 -msgid "" -"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " -"context.\n" -"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " -"context.\n" -" --label LABEL Use LABEL instead of file name.\n" -" -p --show-c-function Show which C function each change is in.\n" -" -F RE --show-function-line=RE Show the most recent line matching RE." -msgstr "" -"-c -C NUM --context[=NUM] ԡNUM (3) ϡ\n" -"-u -U NUM --unified[=NUM] 礷NUM (3) ϡ\n" -" --label LABEL ե̾LABELѡ\n" -" -p --show-c-function ѹޤCδؿ̾ɽ\n" -" -F RE --show-function-line=RE REȰפľιԤɽ" - -#: src/diff.c:853 -msgid "-q --brief Output only whether files differ." -msgstr "-q --brief ե뤬ۤʤ뤫ɤϡ" - -#: src/diff.c:854 -msgid "-e --ed Output an ed script." -msgstr "-e --ed edץȤϡ" - -#: src/diff.c:855 -msgid "--normal Output a normal diff." -msgstr "--normal ɸŪʺʬϡ" - -#: src/diff.c:856 -msgid "-n --rcs Output an RCS format diff." -msgstr "-n --rcs RCSκʬϡ" - -#: src/diff.c:857 -msgid "" -"-y --side-by-side Output in two columns.\n" -" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" -" --left-column Output only the left column of common lines.\n" -" --suppress-common-lines Do not output common lines." -msgstr "" -"-y --side-by-side ϡ\n" -" -W NUM --width=NUM ⡹NUM (130) ǽϡ\n" -" --left-column ̹ԤϺϡ\n" -" --suppress-common-lines ̹ԤνϤ޻ߡ" - -#: src/diff.c:861 -msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." -msgstr "-D NAME --ifdef=NAME ʬ#ifdef NAMEפǼʻեϡ" - -#: src/diff.c:862 -msgid "" -"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." -msgstr "--GTYPE-group-format=GFMT ƱͤGTYPEϷGFMT" - -#: src/diff.c:863 -msgid "--line-format=LFMT Similar, but format all input lines with LFMT." -msgstr "--line-format=LFMT ƱͤϹԤLFMT" - -#: src/diff.c:864 -msgid "" -"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." -msgstr "--LTYPE-line-format=LFMT ƱͤLTYPEϹԤLFMT" - -#: src/diff.c:865 -msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." -msgstr "" -" LTYPEϡoldסnewסunchangedסGTYPELTYPEchangedס" - -#: src/diff.c:866 -msgid "" -" GFMT may contain:\n" -" %< lines from FILE1\n" -" %> lines from FILE2\n" -" %= lines common to FILE1 and FILE2\n" -" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" -" LETTERs are as follows for new group, lower case for old group:\n" -" F first line number\n" -" L last line number\n" -" N number of lines = L-F+1\n" -" E F-1\n" -" M L+1" -msgstr "" -" GFMTˤϰʲǤޤ:\n" -" %< FILE1ι\n" -" %> FILE2ι\n" -" %= FILE1FILE2ζ̹\n" -" %[-][WIDTH][.[PREC]]{doxX}LETTER printfǤLETTER\n" -" LETTERϡʲʸǿʸǸŤ:\n" -" F ǽιֹ\n" -" L Ǹιֹ\n" -" N Կ = L-F+1\n" -" E F-1\n" -" M L+1" - -#: src/diff.c:877 -msgid "" -" LFMT may contain:\n" -" %L contents of line\n" -" %l contents of line, excluding any trailing newline\n" -" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" -msgstr "" -" LFMTˤϰʲǤޤ:\n" -" %L \n" -" %l ³ԤΤ\n" -" %[-][WIDTH][.[PREC]]{doxX}n printfǤϹԿ" - -#: src/diff.c:881 -msgid "" -" Either GFMT or LFMT may contain:\n" -" %% %\n" -" %c'C' the single character C\n" -" %c'\\OOO' the character with octal code OOO" -msgstr "" -" GFMTLFMTˤϰʲǤޤ:\n" -" %% %\n" -" %c'C' ʸCʸ\n" -" %c'\\OOO' 8ʥOOOʸ" - -#: src/diff.c:886 -msgid "-l --paginate Pass the output through `pr' to paginate it." -msgstr "-l --paginate Ϥprפǥڡʬ䡣" - -#: src/diff.c:887 src/sdiff.c:198 -msgid "-t --expand-tabs Expand tabs to spaces in output." -msgstr "-t --expand-tabs ϤΥ֤Ÿ" - -#: src/diff.c:888 src/diff3.c:452 -msgid "-T --initial-tab Make tabs line up by prepending a tab." -msgstr "-T --initial-tab ֤ǻϤޤԤϡ˥֤֤·롣" - -#: src/diff.c:890 -msgid "-r --recursive Recursively compare any subdirectories found." -msgstr "-r --recursive Ĥḁ̈ǥ쥯ȥ꡼ƵŪӡ" - -#: src/diff.c:891 -msgid "-N --new-file Treat absent files as empty." -msgstr "-N --new-file ¸ߤʤե϶Ȥߤʤ" - -#: src/diff.c:892 -msgid "--unidirectional-new-file Treat absent first files as empty." -msgstr "--unidirectional-new-file ¸ߤʤԤΥե϶Ȥߤʤ" - -#: src/diff.c:893 -msgid "-s --report-identical-files Report when two files are the same." -msgstr "-s --report-identical-files ξե뤬ƱȤ" - -#: src/diff.c:894 -msgid "-x PAT --exclude=PAT Exclude files that match PAT." -msgstr "-x PAT --exclude=PAT PATȰפե" - -#: src/diff.c:895 -msgid "" -"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." -msgstr "" -"-X FILE --exclude-from=FILE FILEγƥѥȰפե" - -#: src/diff.c:896 -msgid "" -"-S FILE --starting-file=FILE Start with FILE when comparing directories." -msgstr "" -"-S FILE --starting-file=FILE ǥ쥯ȥ꡼ӤݡFILEϤ롣" - -#: src/diff.c:897 -msgid "" -"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." -msgstr "" -"--from-file=FILE1 ڥɤFILE1ӡFILE1ϥǥ쥯ȥ꡼ġ" - -#: src/diff.c:898 -msgid "" -"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." -msgstr "" -"--to-file=FILE2 FILE2ڥɤӡFILE2ϥǥ쥯ȥ꡼ġ" - -#: src/diff.c:900 -msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." -msgstr "--horizon-lines=NUM Ƭˤ붦̤NUMԤݡ" - -#: src/diff.c:901 src/sdiff.c:200 -msgid "-d --minimal Try hard to find a smaller set of changes." -msgstr "-d --minimal ǤФäơʬ򸫤Ĥ롣" - -#: src/diff.c:902 -msgid "" -"--speed-large-files Assume large files and many scattered small changes." -msgstr "--speed-large-files ʥեʬѹȲꡣ" - -#: src/diff.c:907 -msgid "" -"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." -msgstr "FILESϡFILE1 FILE2סDIR1 DIR2סDIR FILE...סFILE... DIRס" - -#: src/diff.c:908 -msgid "" -"If --from-file or --to-file is given, there are no restrictions on FILES." -msgstr "--from-file--to-fileꤹСFILES¤Ϥޤ" - -#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 -msgid "If a FILE is `-', read standard input." -msgstr "ե뤬-פΤȤɸϤɤߤޤ" - -#: src/diff.c:920 -#, c-format -msgid "Usage: %s [OPTION]... FILES\n" -msgstr "ˡ: %s [ץ]... FILES\n" - -#: src/diff.c:949 -#, c-format -msgid "conflicting %s option value `%s'" -msgstr "%sץ͡%sפͤƤޤ" - -#: src/diff.c:962 -msgid "conflicting output style options" -msgstr "ϻꥪץ󤬾ͤƤޤ" - -#: src/diff.c:976 -msgid "regular empty file" -msgstr "̾ե" - -#: src/diff.c:976 -msgid "regular file" -msgstr "̾ե\"" - -#: src/diff.c:978 -msgid "directory" -msgstr "ǥ쥯ȥ꡼" - -#: src/diff.c:981 -msgid "block special file" -msgstr "֥åüե" - -#: src/diff.c:984 -msgid "character special file" -msgstr "饯üե" - -#: src/diff.c:987 -msgid "fifo" -msgstr "̾Ĥѥ" - -#: src/diff.c:991 -msgid "socket" -msgstr "å" - -#: src/diff.c:994 -msgid "message queue" -msgstr "å塼" - -#: src/diff.c:997 -msgid "semaphore" -msgstr "ޥե" - -#: src/diff.c:1000 -msgid "shared memory object" -msgstr "ͭ꡼֥" - -#: src/diff.c:1003 -msgid "typed memory object" -msgstr "Ĥ꡼֥" - -#: src/diff.c:1006 -msgid "weird file" -msgstr "䤷ʥե" - -#: src/diff.c:1070 src/diff.c:1256 -#, c-format -msgid "Only in %s: %s\n" -msgstr "%sȯ: %s\n" - -#: src/diff.c:1193 -msgid "cannot compare `-' to a directory" -msgstr "-פϥǥ쥯ȥ꡼ӤǤޤ" - -#: src/diff.c:1220 -msgid "-D option not supported with directories" -msgstr "-Dץϥǥ쥯ȥ꡼ǤΥݡȤ򤷤Ƥޤ" - -#: src/diff.c:1229 -#, c-format -msgid "Common subdirectories: %s and %s\n" -msgstr "̤β̥ǥ쥯ȥ꡼: %s%s\n" - -#: src/diff.c:1266 -#, c-format -msgid "File %s is a %s while file %s is a %s\n" -msgstr "ե%s%sե%s%s\n" - -#: src/diff.c:1345 -#, c-format -msgid "Files %s and %s are identical\n" -msgstr "ե%s%sƱ\n" - -#: src/diff3.c:26 -msgid "Written by Randy Smith." -msgstr "ϡRandy Smith" - -#: src/diff3.c:328 -msgid "incompatible options" -msgstr "ξΩʤץ" - -#: src/diff3.c:368 -msgid "`-' specified for more than one input file" -msgstr "ϥեˡ-פʣꤵޤ" - -#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 -#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 -msgid "read failed" -msgstr "ɹ߼" - -#: src/diff3.c:441 -msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." -msgstr "-e --ed OLDFILEYOURFILEؤMYFILEˤ̤ʻѹϡ" - -#: src/diff3.c:442 -msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." -msgstr "-E --show-overlap ͤ򤯤ꡢ̤ʻѹϡ" - -#: src/diff3.c:443 -msgid "-A --show-all Output all changes, bracketing conflicts." -msgstr "-A --show-all ͤ򤯤ꡢѹϡ" - -#: src/diff3.c:444 -msgid "-x --overlap-only Output overlapping changes." -msgstr "-x --overlap-only ʣѹϡ" - -#: src/diff3.c:445 -msgid "-X Output overlapping changes, bracketing them." -msgstr "-X ͤ򤯤ʤ顢ѹϡ" - -#: src/diff3.c:446 -msgid "-3 --easy-only Output unmerged nonoverlapping changes." -msgstr "-3 --easy-only ͤƤʤ̤ʻѹϡ" - -#: src/diff3.c:448 -msgid "-m --merge Output merged file instead of ed script (default -A)." -msgstr "" -"-m --merge edץȤˡʻ礷ե (-A)" - -#: src/diff3.c:449 -msgid "-L LABEL --label=LABEL Use LABEL instead of file name." -msgstr "-L LABEL --label=LABEL ե̾LABELѡ" - -#: src/diff3.c:450 -msgid "-i Append `w' and `q' commands to ed scripts." -msgstr "-i edץȤθˡwפȡqץޥɤɲá" - -#: src/diff3.c:453 src/sdiff.c:202 -msgid "--diff-program=PROGRAM Use PROGRAM to compare files." -msgstr "--diff-program=PROGRAM եӤPROGRAMѡ" - -#: src/diff3.c:465 -#, c-format -msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" -msgstr "ˡ: %s [ץ]... MYFILE OLDFILE YOURFILE\n" - -#: src/diff3.c:467 -msgid "Compare three files line by line." -msgstr "3ĤΥեԤȤӤޤ" - -#: src/diff3.c:673 -msgid "internal error: screwup in format of diff blocks" -msgstr "顼: ʬ֥åη˥ϥޤ" - -#: src/diff3.c:971 -#, c-format -msgid "%s: diff failed: " -msgstr "%s: diff: " - -#: src/diff3.c:993 -msgid "internal error: invalid diff type in process_diff" -msgstr "顼: process_diff̵ʺʬ" - -#: src/diff3.c:1018 -msgid "invalid diff format; invalid change separator" -msgstr "̵ʺʬ; ̵ѹڤ" - -#: src/diff3.c:1242 -msgid "invalid diff format; incomplete last line" -msgstr "̵ʺʬ; ǽԤ̤ü" - -#: src/diff3.c:1265 src/sdiff.c:273 -#, c-format -msgid "subsidiary program `%s' not executable" -msgstr "̥ץ%sפ¹ǽǤ" - -#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 -#, c-format -msgid "subsidiary program `%s' not found" -msgstr "̥ץ%sפĤޤ" - -#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 -#, c-format -msgid "subsidiary program `%s' failed" -msgstr "̥ץ%sפ" - -#: src/diff3.c:1294 -msgid "invalid diff format; incorrect leading line chars" -msgstr "̵ʺʬ; ʹƬʸ" - -#: src/diff3.c:1370 -msgid "internal error: invalid diff type passed to output" -msgstr "顼: ϤϤ̵ʺʬ" - -#: src/diff3.c:1647 src/diff3.c:1704 -msgid "input file shrank" -msgstr "ϥե뤬̤" - -#: src/dir.c:162 -#, c-format -msgid "cannot compare file names `%s' and `%s'" -msgstr "ե̾%sפȡ%sפӤǤޤ" - -#: src/sdiff.c:35 -msgid "Written by Thomas Lord." -msgstr "ϡThomas Lord" - -#: src/sdiff.c:183 -msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." -msgstr "-o FILE --output=FILE ŪϤFILEء" - -#: src/sdiff.c:185 -msgid "-i --ignore-case Consider upper- and lower-case to be the same." -msgstr "-i --ignore-case եƤʸʸƱ롣" - -#: src/sdiff.c:188 -msgid "-W --ignore-all-space Ignore all white space." -msgstr "-W --ignore-all-space ̵롣" - -#: src/sdiff.c:194 -msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." -msgstr "-w NUM --width=NUM ⡹NUM (130) ǽϡ" - -#: src/sdiff.c:195 -msgid "-l --left-column Output only the left column of common lines." -msgstr "-l --left-column ̹ԤϺϡ" - -#: src/sdiff.c:196 -msgid "-s --suppress-common-lines Do not output common lines." -msgstr "-s --suppress-common-lines ̹ԤνϤ޻ߡ" - -#: src/sdiff.c:201 -msgid "" -"-H --speed-large-files Assume large files and many scattered small changes." -msgstr "-H --speed-large-files ʥեʬѹȲꡣ" - -#: src/sdiff.c:214 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 FILE2\n" -msgstr "ˡ: %s [ץ]... ե1 ե2\n" - -#: src/sdiff.c:215 -msgid "Side-by-side merge of file differences." -msgstr "ե뺹ʬ2ʻ" - -#: src/sdiff.c:327 -msgid "cannot interactively merge standard input" -msgstr "ɸϤŪʻǤޤ" - -#: src/sdiff.c:588 -msgid "both files to be compared are directories" -msgstr "оݤξȤǥ쥯ȥ꡼" - -#: src/sdiff.c:853 -msgid "" -"ed:\tEdit then use both versions, each decorated with a header.\n" -"eb:\tEdit then use both versions.\n" -"el:\tEdit then use the left version.\n" -"er:\tEdit then use the right version.\n" -"e:\tEdit a new version.\n" -"l:\tUse the left version.\n" -"r:\tUse the right version.\n" -"s:\tSilently include common lines.\n" -"v:\tVerbosely include common lines.\n" -"q:\tQuit.\n" -msgstr "" -"ed:\tξǤ˥إåǾäơѤԽ\n" -"eb:\tξ¦ǤѤԽ\n" -"el:\t¦ǤѤԽ\n" -"er:\t¦ǤѤԽ\n" -"e:\tǤԽ\n" -"l:\t¦Ǥѡ\n" -"r:\t¦Ǥѡ\n" -"s:\t̹Ԥۤ˴ޤࡣ\n" -"v:\t̹Ԥ˴ޤࡣ\n" -"q:\tλ\n" diff --git a/src/bin/diffutils/po/pl.gmo b/src/bin/diffutils/po/pl.gmo deleted file mode 100644 index 72a5bb982469686d40916f0c9e74c82f4d0b8bec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23351 zcmb`PdvILWec!JdJFy_Uvh}ho)z*=05_;f*04SLhC`trLkc5br0MHOXG3LeY1#q#u z_pbKtYPqY}t(7KeUQQdwv6H%XY{zz**hv^Vn!XZFrmr*|Pm*zxdZsg(Hci-8X`8BS zr*@M+`uY9Nxx054SW15E=4o1K$Bkzk)K} z2>5mIot}65K9F+z3H$u^2=w{=)1U#R-G1=TK>EMq%?|0qo8>pfdm8*1kal+IQT6%NfZ-Hk$@19#h`nl&k z$eQl?DUfmQk@xg_@0-B`Abkp5?|lKJ-MwD`-veF;PqTG*gAaih*{An`Kf-U?zwm^1I*1k2-d)NgP#Xk=L5e3GS3J8pZ)!A z#_}GeiqyLX%6QD-Js$?|2fqZew)gz5`~Bx2`?v2cAp5t^2ls0 zLlEBHPaCPX{~3@y-G2#09`^qPNdNo42-0rH`FqQ}H53GUoec;DH z=zBo+8G0Z18pu8#5c)FDvAaRqjR}9jBV%>@e(WDDA+<%OG@r{LevnXY!rkBj9dgY%wu z1X{|vjsze)cI0=#Ix0!VW&9^(oX5ehfltz<)Q`Ytz#jzvDfkqxj)RmZUvl^_!IW2T z0-5(y-v=`OQ=bH9P}#SD%0x)MqcI&VsX`%=ZxZ2O#4ge>3QV@}Bu0 zZ-EEE-v&>DUk4AeCG;)!^u+W0rrpUu0pX`<=HfjEo(7MBKM$S({|uzxQ==gJc#1l* z{!^cEzrO;WLUrB_J`JvebKvK|2f^zg`+bJJlzE&HK7wv%J^?cSGk*j!&W!9UW6#KY z);aSj`+nx%gN*;Q^#3S01v1Xl@Sp7G)4v5C17)0VV4|oabe)y?vY)eyAbd9)gUo04 zBkuh_126FVk3ssMdje#Rb35QWK%wt4_-T+a=l&1)7^G#+A`kNw5WO=0A@FVB$3b{t z{ue>UoBs{>Tj=|CeoK4yXyGm35Qt0*-4`e#cMGy_w}K)E@c+U~paH)KGQWkdfL{Rr z5`?c7KMTU=i~k9vzh}M+WKGWq9q$JJEeH*s`BU%?&s$>7GT$X=phzEz?*re;b6L*= z;0HlyxFqX_9!r1ZeqRUQ4@smw<1YUl5c)3v0tj7}{}sr)<-YoLQ^gLGt4fq1cJkEU#gl6Zy41N!YJl<3Q{~fNs)t9WK!(^>dPSWTm1|0Ue9~>T_F4QEIcafd6qRw{bxS_J`R2f zWZuvIXZwClsfyzNc(l_>ThT%{jSS6f+s;}y8bLU0?IzYC+oiivTy5u2twEOuY>e^p0$gf zKQH~bnP}b)i zqx>}G?@{Cf?|J7bhH{RQePsResZwIf1A|Lo(KbQFTy_CO3 z*-x3K$mf2_NA#QL{iMS@`~W}T75%)Ae}9JZ{gj`ee1`G~%8yab6Y17DVjUmMmU&%{ClJ=y(u~qqy4Wp@mF$Wo>cVM5(z5 z{f0-(MaBT2^uad;Fy%Iet$^1kzyZk9_?Rhib(d-?3l;<(vp)!{HGsQjgj zB7EJgGSORQV$|E08vZLro10;6Qs45Mt!CAH8G4QPvW|TR6Y0W&G?>)x%qBDpi<3s5 zMCEe0g`gzWdIT@~zS&o>b))!&pd1zVc;o6`+*jC_4x3^Urtxsy1j3pu4PM=9RM=kI zO{X$dnN(2Oh_)I@Lsu}Fb$(Ggs)f%tq8fA>*oW_b69f9Itp0UR&($6{!@VY#r&c4b zg@t4*j@n^|WR^gd412!U^$dBwuRP_eH2cVQC8!@&HEEWkN>mPNBW44BwQn*8R2J4I zsZot5Ek@}~`O+6g$@)@B+_Nvo^c`_x zbp<6WwS`&zYAxBS1(lWc8PwcOa z1T8LFG1`p6V!q;0D@Epn>&pJ5Z&(nH3Tr6h6iKzu3$W7$ox}WWQ9Y@(WYq1jTs3B) zQ5Qu}-)7(CiM~l{Q9Fs1fa%fsb1dO(7*>sZ6QZgdi}X76U#*3k(IuUH+Suf)bP{dF zNe%k5EI$q^p|8r>%;;mQshitj?5H6cO(`H%l_;-o_hh|YRo1t6aWZHYCz3dgikZc@ z;XGJH1?`X#DlqPWY_+VD{RxXc9J*x}n;J8frieclg=cn`l{OX8-)SMJW4{rRlx{K4 zs#bNyX}uOz{Y=68g&L|<9(8qoA*j`&fKF>+y-|w|>PivPaA1BTH)Esu4jy8+o=2830P2Npi85ALt zNt%oA){5E;9Sb+eR8D64JWlE+ZB(mCt%i z#YQL_MJ9T^-Kgmb3Hp22z_fs^f{Tjt-T~sn2MMrPYa9)}WWLWfVo>iAsKPnOG zK~307`CLUvWRGWd=R}RdJw4hgx0{T+BE3X$RF4oC*(x&^l-M_9#X2mFDjp2}ZdeUt z>&(eZTCQqK%Lp(#`XnfX9a;(dH@C&&=yU2n+u7$m#HeSh(a;rbpwnl5){{g{VQ<_b zr`5U4v{Zc?@wVF_x~i(GN_318ioODwY(2bGH<>PAejODcFQ~-gJL0Ib_AMiJ7UlR- z`V}h@RFVezgq`eNsrI8M1mAj(W>Jm{&Lb2hppO}`z=$W*JTbDm)|cw%#c*Bd5KC;= zg9vueDA&!whq`vGkW?|Q)*)y5Lw80%88xIr90i=vD+BMy3jHDOrMG}P^L`^tvEz_1(bodU(o z@GC7~&4fexU-xS)dlFrkJ*k|_cxwyimh?OOpP0Ed`A$EP4C55PbuT)G9n~Awe6_oJ zHni>sjd6rz=_!83o;_qrDnQlPvqu;g&>JwTDw^!%W*bj245YZ&9M+*OK0mBZk+@$% zr_Q3qHbh2_Lb)kBeR0%2-s9NRJrZSR-u5v*DNV5Qoz>^Na&J8!D+>38n{{NO+^Aq$ z+;*sC7AnX~Caf=!Kj+V>g=E6oz8Y-d0;7P;Vvw>ZS|yp!$k}^q+gz;HhGnsxnvv|W zHpb9zh|SFg7J+rAX*uK+4F{}-^(RHsS$gLsyCO?a^V{hoZ;W$RphN1enEO)?F%g#S z`?UgoS(h1?PAq3<3FpVfW_D(7M%B1#m80%w=3$Fs6lt-KGsR=$9x{NXiPNeJ;(@bL zxRoym@C#wNHG-H})t}MNwq}aYOAi~hDBSE!Qnv_`1HEfb!&>T49mkLrg@r~frDr*t zxUcwIY@r@5)Yoims15GA}6;m6d2 zdIP5)e=ci|9mBKn@uA~-RKVt0BfwPTxwVz`rYH)vxtw-#LZ=fD=ZK?j3U5jbDRbFQ zCU}Tw6U$7ikT1U*6|1I#w zaeGd;{I<_37r@HQkcSvcpfc@|h)KdDs)Zz)M2+sL+*(5%Hc^G6op<%^TA2AtYA<)! z=}stnVU#0i+U z#AyU^33wpu&OIH{Y8pQi@sMRAf*ony{W_!5%qHaT#v=&rbxxKt;uiWQ9uZlVXe=d8 z@E_#hs$Pod2%Y=#s7FtMewTI^eO*c=N+pmzLK|Fn)Jj|whr$`R{uYC(xv1O*XF)n5 zI4B0%n{khELR^TvKu9+=5>V*ABzhdEKh>$0d#52;@k5_`@wpFlo};A-p}Op~aI3+g zUXEd+xj3wKDiLtuSdM=0KG|J)F02rHq4{>u;Pg`T<`e62$rl&TH7F4ADBQV5-Z0n; z5%EG6yKDRfIb$Qo6513lUaW=q?+tdwb+SjBrCr^iI&qAmEzha%jmDO$($F}{r^wXG*dJ@r_e?UoA#oGKfb#|p#qqU-H%vE>z9?x@OP9m->_Y=|gKCx=SM z&G^{Z*oZj`PCPnd=6En7PxR@W{CM>6$YY1zJ2G@S|4Lt&9AH>MI7px0f#0rz?g+fL}*9}SPq(_ zLu*L`_Gq!~#YjYq0H}oAIIg$=Tz8BiEIVdJy2InBbOLmz=g*nbVT=<}Hj9l7_Q1?W zxcg~1I&=ym!H?pl*s!VuAA$`Gr}Tr<1|!iK5%(0OCta(O5qT<_6AO!LGxMiMy_M`f zLc}pe;?j& z$wRp(=jF-y@6A1V?nUohN`Oo?`}u{%m6?V43n)@mL{8}r-LT4e(Y6!jyl~05g^3Fn zF5IZm@}QUYoMN(bOm>JF@>Yo=g|lJYju3*2{ywgSvH%y%mu#d-Ijo0AOu|?us^6$e1CFAH zf{{+BINXhFcR7RrghVxkCnYK^4Cif>6BNCM!Qo>2NCM;XO|=xt2N4tF&BWp7oX_hK z;1qY#y=MY?QprWa`)hP~9HS+dC!$p3OIEMPr8ia;^cpg+V_JGAU8qzi&Gf=4QBb0) zIY?>*Q&c3<;%0Ux6yE~=N>_uNs>EzAJ@J3u$(r>u6EMv0<+;AeJw7H6hXxHVHY>wYxIITV#dWgQ@ge`g~&mf))j);xzy&B+wy?i6O;AJj@wT9{?+q-J7kY$0yAAW0PZJkBs574$YD+;^X_oxID1hq*)3!gDV96({_pUlu~4# zsI@D{qC#afEH*}~6Rr`KJvy_z;2%Ex z*yH|0x3Y}LvB{rCC`H01&0+4j$yRVFLXk^cNwzMVcF>H_eAfo#CRN#hV(ZmHyJgyO zP}-H2qz@BQN{YA;<~m#od0Lg8grwwZ*guR-NuovDEY8lHJ=c?v)P3BOj>O|;TD@Mz zdnlFz*Um)tOD-X4d3}0G@{vw1oc(MkA8CekBrYJu%V=#zrJ%4An5LTB2BLrtM}5-i ztkhf6oEy?*^oL0=bH+^TuT&d5m$|u-YB;vx4hcw&YRf!W39i_uNLwv?{7_F~5{D2} z366cOnYO8d#)~313gc)35*5%8K|PLkRp8PqDkm>rv+c|`mz}f+^%;HhG!HzY;1~pq(E*IJ%^QtHhG~DvLi`XaWNqdo<&}@$4ugGC6tTo&+ddcsRb2KX! zFPEEyW-2!}`jV5VcUtOceSK~10+~zj_hPLbrlrKrH=}rqJCx5V zGfh{D#U&9g&E+d?TzRFq*K=FZB`Zm%71{Jk6kfwl*-WKImZ~IOUKE{=f4?hJsq+#M z4z_{;t!<9d>lw$T9DNg2cL+8a>Z5hy1m#ko4rCsYp!P`anrDh~W)U3LVKdyFVz7mkSX( z5}s7=P{#FqU)Z^Kc$?BRaCm+F?GE2iF=F^E4eCU@h0g#BMQ~;{N?Woj)En0gOjv92 zo2c`kR464*mJNlaCcKr@t~Vh$#34vjy51c1q4&__!;%rdT)qnu_yQi6rK|>tlOS8QExEGbK{J%E=a6D$BB2Q>!i3 zt}CyHTZtx4HS}#y<`j_xW7b7$V?$*r@<7#MW~pdfMI#k!R4S2BCcj$thjiy0@ZL*w zy42^&P}n>aLMee~=vf?6>A}%dH>a`J678Dfpxx}yoSVX3`Er9;dvD(AD*S$u=9pTR zH8?NpT(iAZMu|mA+izoO%%E>|SsvGFD~?Lo_Nwd)RBJa|r7N;stlN&pajPg{H7l$eNZlYa=Bt%u|itf;#MT8SNMgh-^PiwlTm`xzAt60 z+dM}utviATD$$k_XD2oQc??oIq>F*MV?9Eqov4!q$GG`hNu~=)9a~@3xn#Lx`m;No zYGT(SYz7lG)Jd!+rJ${9PrZb~V1nk8&FC3NhB2*C7p-C)1ntx5s_V@gCYbH9w6vNu zv14d+*6o@Mcv|f9%G7bu*FJgk#JN1U`a>;7bD{E(GrdOsQf=yTJJTT|1!E+DRu$m|f@nO)t=xJC| zBp(mHH*IZz5US*f6lF|E+hsL!x&b{|Y$E^I3UQI59g`Hbnw)0(>_cYYbR+e4*#&%T z9@}cmnP(z5ax77Um3cWG2DnicTV|-71%}RYDnxxHMLjmL29nxx{IW~b`(*an&Wd|7 z+U$aJ`qsJ=xm^`^quEYs1qQcXz7W4BsjW+R*IHFpJuIbYMXR+2=eO;_TyiiIE7QN? zTymQp)$;_frv_EK953AQgNfQSH}xuVX>R-`&272F#gL=4)OfI%R9Y{WML$evwi`Q# z4%CG-I$3V6uTGYm?Q2l`w$|eSk3WVc%XKH*XTvyM&UaEm`umMVASxpQ$lHLtH|b_I zwW^XUs772W>_q0o2pd?cU$2R};smZ*rKR1xM)KRDQ@e!Gdymr@pK!d+B)c~O?pzvO zaTI1d%OMdBaat?Tc!y&<6lrfn3FlXx4EsfDj?IGW_c==32ofhGZ#?L!l{uArXiSc4 zuN0Bo<&~+Wwf8Hl2WEa@)qO7}IgK^<)u*)vQ`ns$N6@Nc;PGCBevx$|CAHA{kaZLc z338Gev%7;C$yIf9u$C*EoBC_wVMpQ@wfLgliJz?v7-#_GwH>nbEJU2t2< zp#*hGnk?5+Yiq+zLP6Dx45+$R*Kg0wbwt~(L@2u|*=LNo$uqQkl>b&$>=fzD(JbUht)oGYj2GQ*VHhrAN$&!y{U zY3n`Xk&;@+3I?UqxyiyEm+T{{|-UpJ$7^-lU^ z1;wU4HnWP$q`{RCFPGY?{S3&Y>YJ8^P4j%bJJD{b>k?X{kN%Z&=?*7QyDph~Z?avN z@GiwbG&dHQQ2mamgaK)Hy;ii}a5nW6jj-C>JGEflfjUgpwPB)hGy%`qVC(M5_<|oJ+0QSv^Xxr2@yepH)ISI+TQvVZdy1-1*Syak-dQ8oEx4*dI(MxahqP-UkC3Fmv8_bPUxP<1Wsj=ISv?LUPFf-I z<{_erf9UCRnN82F2-BwHR}1(8Y;D8VswOfUMuV8y5J8snCl0r_qE@2`6J*JLG-$F* zDSxcvCc1aaRX62ae|C%7q{0x|B5N_(tdKW}I%g}nM?eE{ud!G9pAqpf_Iikujd)S# zxKZG)P@<(p8?DXXh{=glW17)-JmoJElSlL!O`smxuB1P?)Uk7%5Pl^At}Qva_Cg1} zT+O0$a@|)7t`;R)<+KJltk&JAx0J#f~ll)K&J40NAA2I5CQi(r2y-dhRg4SZNmF>Do zd}rZBPPe8(AXx+~DK=|KJ#KmP6642LMeStSeCo0iDdMl9H~?K!72bsH!<|uKd?H%V z_sV5bF*UKTq0)e-phpI-Lsegp*e62LeasORHS*j;eUH!UV^aKjYfGA+9xAguzY|YS zX_{Y7SCf=?gDU5xrl$D`hmh^Z0l}vE4Qw1_o& zcGX*^EQ*gZ$S!s~ky+y8(A3qsrip^>PK~g#SDoAigS#@d*+90ttyl7=6-JN{FcZlc zMN#y6-52yPLM(L`4WKx1LS|U(-OaI0ln;^sIuU35q(Gl);Ac&^xU= zFWX#s>g|!|sNoU@TXNN_zJpv`BpdXgUORzwlq4FbjUw8*a=pocqmrcw4r*kx1S2bt zt|LfoPt;j@U~gkPnp6_Sh;A7QB|lIr+4~cBiWrgvK^tJ|w$Y>d=#Zoc_P@%yBT4Y2 zM&(tZ_qnTP13|TCmV`tI@g2$4Zn01@2XD{}%V9$t71tVr${i!QgzN0*tM-6EN?{xn zi2|b$Tb-OVaCY1#dCJxq$D_zOtrB69m{aSDr>eFYHse?Dc;gl}Tao}s z!EaS9N!ro0eQilZJbRKiS9+lybjARc>gq977R3q7o7c zpt|NFWLYFxo*|ZGc=x;B7>^}|>!5h0u_b9JonT|`ZD(K^@ramSf)|oxh;+E%UZ5U- zV29jYU$`ME64kSpbCForDmTxU>o{zBR@k$pqj4wG&_?{Sb!Af~8?Oa<>W$o#`I}iM za_AVPMc#4LBMtY!EQ3%h5{Wz8xrFPo3R0nM`$e7fLvF@XPoqg1OcGTjMO8E^t{kya z)>ub^Nd<2ckC2_kTDyF|hA6s*DquO0wCbMTkD^=U(oQvO=Ly=@le9zf8_>28pTGOd zd|znbRFZ-mN%U_E zhUv{ZN`23}tL0i3*2K5MjnOV`$d>>6MAj$Xch;%++)7gG50h7m?u<-WZ=v7pbtsI% lg4vK=OKqEk!@, 1996, 2002. -# corrections: Pawe Krawczyk , 1996 -# -msgid "" -msgstr "" -"Project-Id-Version: GNU diffutils 2.7.10\n" -"POT-Creation-Date: 2002-04-05 14:10-0800\n" -"PO-Revision-Date: 2002-03-12 15:00+0100\n" -"Last-Translator: Rafa Maszkowski \n" -"Language-Team: Polish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-2\n" -"Content-Transfer-Encoding: 8-bit\n" - -#: lib/c-stack.c:188 -msgid "program error" -msgstr "bd programu" - -#: lib/c-stack.c:189 -msgid "stack overflow" -msgstr "przepenienie stosu" - -#: lib/error.c:128 lib/error.c:156 -msgid "Unknown system error" -msgstr "Niezany bd systemu" - -#: lib/freesoft.c:27 -msgid "" -"This program comes with NO WARRANTY, to the extent permitted by law.\n" -"You may redistribute copies of this program\n" -"under the terms of the GNU General Public License.\n" -"For more information about these matters, see the file named COPYING." -msgstr "" -"Autorzy nie daj ADNYCH gwarancji, do granic, na ktre zezwala prawo.\n" -"Program moe by rozpowszechniany na warunkach Oglnej Licencji Publicznej\n" -"GNU; szczegly s opisane w pliku COPYING." - -#: lib/getopt.c:693 -#, c-format -msgid "%s: option `%s' is ambiguous\n" -msgstr "%s: opcja `%s' is ambiguous\n" - -#: lib/getopt.c:718 -#, c-format -msgid "%s: option `--%s' doesn't allow an argument\n" -msgstr "%s: opcja `--%s' nie moe mie argumentu\n" - -#: lib/getopt.c:723 -#, c-format -msgid "%s: option `%c%s' doesn't allow an argument\n" -msgstr "%s: opcja `%c%s' nie moe mie argumentu\n" - -#: lib/getopt.c:741 lib/getopt.c:914 -#, c-format -msgid "%s: option `%s' requires an argument\n" -msgstr "%s: opcja `%s' wymaga argumentu\n" - -#: lib/getopt.c:770 -#, c-format -msgid "%s: unrecognized option `--%s'\n" -msgstr "%s: nierozpoznana opcja `--%s'\n" - -#: lib/getopt.c:774 -#, c-format -msgid "%s: unrecognized option `%c%s'\n" -msgstr "%s: unrecognized option `%c%s'\n" - -#: lib/getopt.c:800 -#, c-format -msgid "%s: illegal option -- %c\n" -msgstr "%s: nielegalna opcja -- %c\n" - -#: lib/getopt.c:803 -#, c-format -msgid "%s: invalid option -- %c\n" -msgstr "%s: bdna opcja -- %c\n" - -#: lib/getopt.c:833 lib/getopt.c:963 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "%s: opcja wymaga argumentu -- %c\n" - -#: lib/getopt.c:880 -#, c-format -msgid "%s: option `-W %s' is ambiguous\n" -msgstr "%s: opcja `-W %s' jest niejednoznaczna\n" - -#: lib/getopt.c:898 -#, c-format -msgid "%s: option `-W %s' doesn't allow an argument\n" -msgstr "%s: opcja `-W %s' nie moe mie argumentu\n" - -#: lib/regex.c:1367 -msgid "Success" -msgstr "Powodzenie" - -#: lib/regex.c:1370 -msgid "No match" -msgstr "Nie pasuje" - -#: lib/regex.c:1373 -msgid "Invalid regular expression" -msgstr "Ze wyraenie regularne" - -#: lib/regex.c:1376 -msgid "Invalid collation character" -msgstr "Zly znak zbiorczy" - -#: lib/regex.c:1379 -msgid "Invalid character class name" -msgstr "Za nazwa klasy znakw" - -#: lib/regex.c:1382 -msgid "Trailing backslash" -msgstr "Kocowy ukonik odwrotny" - -#: lib/regex.c:1385 -msgid "Invalid back reference" -msgstr "Zy odnonik wstecz" - -#: lib/regex.c:1388 -msgid "Unmatched [ or [^" -msgstr "Nie sparowany [ lub [^" - -#: lib/regex.c:1391 -msgid "Unmatched ( or \\(" -msgstr "Nie sparowany ( lub \\(" - -#: lib/regex.c:1394 -msgid "Unmatched \\{" -msgstr "Nie sparowany \\{" - -#: lib/regex.c:1397 -msgid "Invalid content of \\{\\}" -msgstr "Za zawarto \\{\\}" - -#: lib/regex.c:1400 -msgid "Invalid range end" -msgstr "Zy koniec zakresu" - -#: lib/regex.c:1403 -msgid "Memory exhausted" -msgstr "Brak pamici" - -#: lib/regex.c:1406 -msgid "Invalid preceding regular expression" -msgstr "Ze poprzedzjce wyraenie regularne" - -#: lib/regex.c:1409 -msgid "Premature end of regular expression" -msgstr "Przedwczesny koniec wyraenia regularnego" - -#: lib/regex.c:1412 -msgid "Regular expression too big" -msgstr "Wyraenia regularne jest za due" - -#: lib/regex.c:1415 -msgid "Unmatched ) or \\)" -msgstr "Nie sparowany ) lub \\)" - -#: lib/regex.c:8034 -msgid "No previous regular expression" -msgstr "Brak porzedniego wyraenia regularnego" - -#: lib/xmalloc.c:63 -msgid "memory exhausted" -msgstr "brak pamici" - -#: src/analyze.c:809 src/diff.c:1283 -#, c-format -msgid "Files %s and %s differ\n" -msgstr "Pliki %s i %s rni si\n" - -#: src/analyze.c:812 -#, c-format -msgid "Binary files %s and %s differ\n" -msgstr "Pliki binarne %s i %s si rni\n" - -#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 -msgid "No newline at end of file" -msgstr "Brak znaku nowej linii na kocu pliku" - -#: src/cmp.c:43 -msgid "Written by Torbjorn Granlund and David MacKenzie." -msgstr "Napisany przez Torbjorna Gralunda i Davida MacKenzie." - -#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 -#, c-format -msgid "Try `%s --help' for more information." -msgstr "Napisz `%s --help' eby dowiedzie si wicej." - -#: src/cmp.c:137 -#, c-format -msgid "invalid --ignore-initial value `%s'" -msgstr "bdna warto --ignore-initial `%s'" - -#: src/cmp.c:146 -msgid "options -l and -s are incompatible" -msgstr "sprzeczne opcje -l i -s" - -#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 -#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 -#: src/util.c:286 src/util.c:293 -msgid "write failed" -msgstr "zapis nieudany" - -#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 -#: src/sdiff.c:179 -msgid "standard output" -msgstr "standardowe wyjcie" - -#: src/cmp.c:160 -msgid "-b --print-bytes Print differing bytes." -msgstr "-b --print-chars Wypisanie rnicych si bajtw." - -#: src/cmp.c:161 -msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." -msgstr "-i OMI --ignore-initial=OMI PRzeskoczenie pierwszych OMI bajtw." - -#: src/cmp.c:162 -msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" -msgstr "-i SKOK1:SKOK2--ignore-initial=SKOK1:SKOK2" - -#: src/cmp.c:163 -msgid "" -" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." -msgstr " Przeskoczenie pierwszych SKOK1 bajtw PLIKU1 i SKOK2 bajtw PLIKU2." - -#: src/cmp.c:164 -msgid "-l --verbose Output byte numbers and values of all differing bytes." -msgstr "" -"-I --verbose Wypisanie pooe i kodw wszystkich rnicych si bajtw." - -#: src/cmp.c:165 -msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." -msgstr "-n LIMIT --bytes=LIMIT Porwnanie najwyej LIMIT bajtw." - -#: src/cmp.c:166 -msgid "-s --quiet --silent Output nothing; yield exit status only." -msgstr "" -"-s --quiet --silnet Bez wypisania wynikw; tylko przekazanie statusu." - -#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 -msgid "-v --version Output version info." -msgstr "-v --version Wypisanie informacji o wersji." - -#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 -msgid "--help Output this help." -msgstr "--help Wypisanie tego helpu." - -#: src/cmp.c:177 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" -msgstr "Uycie: %s [OPCJA]... PLIK1 [PLIK2 [SKOK1 [SKOK2]]]\n" - -#: src/cmp.c:179 -msgid "Compare two files byte by byte." -msgstr "Porwnanie plikw bajt po bajcie." - -#: src/cmp.c:183 -msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." -msgstr "SKOK1 i SKOK2 to liczby bajtw do pominicia w kadym z plikw." - -#: src/cmp.c:184 -msgid "" -"SKIP values may be followed by the following multiplicative suffixes:\n" -"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" -"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." -msgstr "" -"Po wartoci SKOKU mog by dodane nastpujce przyrostki:\n" -"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" -"GB 1,000,000,000, G 1,073,741,824, i tak dalej dla T, P, E, Z, Y." - -#: src/cmp.c:187 -msgid "If a FILE is `-' or missing, read standard input." -msgstr "Jeeli PLIK to `-' lub go brak, czytane jest standardowe wejcie." - -#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 -msgid "Report bugs to ." -msgstr "Inofmracje o bdach: bug-gnu-utils@gnu.org ." - -#: src/cmp.c:231 -#, c-format -msgid "invalid --bytes value `%s'" -msgstr "bdna warto --bytes `%s'" - -#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 -#, c-format -msgid "missing operand after `%s'" -msgstr "brakujcy argument po `%s'" - -#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 -#, c-format -msgid "extra operand `%s'" -msgstr "nadmiarowy argument `%s'" - -#: src/cmp.c:477 -#, c-format -msgid "%s %s differ: byte %s, line %s\n" -msgstr "%s %s rni si: bajt %s, linia %s\n" - -#: src/cmp.c:495 -#, c-format -msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" -msgstr "%s %s rni si: bajt %s, linia %s zawiera %3o %s %3o %s\n" - -#: src/cmp.c:543 -#, c-format -msgid "cmp: EOF on %s\n" -msgstr "cmp: EOF przy %s\n" - -#: src/diff.c:41 -msgid "" -"Written by Paul Eggert, Mike Haertel, David Hayes,\n" -"Richard Stallman, and Len Tower." -msgstr "" -"Napisany przez Paula Eggerta, Mike'a Haertela, Davida Hayesa,\n" -"Richarda Stallmana i Lena Towera." - -#: src/diff.c:322 -#, c-format -msgid "invalid context length `%s'" -msgstr "bdna dugo kontekstu `%s'" - -#: src/diff.c:405 -msgid "pagination not supported on this host" -msgstr "stronicowanie nie jest moliwe na tej maszynie" - -#: src/diff.c:420 src/diff3.c:315 -msgid "too many file label options" -msgstr "za duo opcji etykietowania plikw" - -#: src/diff.c:498 -#, c-format -msgid "invalid width `%s'" -msgstr "bdna szeroko `%s'" - -#: src/diff.c:502 -msgid "conflicting width options" -msgstr "sprzeczne opcje szerokoci" - -#: src/diff.c:526 -#, c-format -msgid "invalid horizon length `%s'" -msgstr "bdna dugo horyzontu `%s'" - -#: src/diff.c:629 -#, c-format -msgid "`-%ld' option is obsolete; use `-%c %ld'" -msgstr "opcja `-%ld' jest przestarzaa, uyj `-%c %ld'" - -#: src/diff.c:641 -#, c-format -msgid "`-%ld' option is obsolete; omit it" -msgstr "opcja `-%ld' jest przestarzaa, opu j" - -#: src/diff.c:709 -msgid "--from-file and --to-file both specified" -msgstr "rwnoczenie podane --from-file i --to-file" - -#: src/diff.c:832 -msgid "Compare files line by line." -msgstr "Porwnanie plikw kolejnymi liniami." - -#: src/diff.c:834 -msgid "-i --ignore-case Ignore case differences in file contents." -msgstr "" -"-i --ignore-case Ignorowanie rnic midzy wielkimi i maymi literami." - -#: src/diff.c:835 -msgid "--ignore-file-name-case Ignore case when comparing file names." -msgstr "" -"--ignore-space-change Zignorowanie wielkoci liter przy porwnywaniu\n" -" nazw plikw." - -#: src/diff.c:836 -msgid "--no-ignore-file-name-case Consider case when comparing file names." -msgstr "" -"--no-ignore-file-name-case Uwzgldnianie wielkoci liter przy porwnywaniu\n" -" nazw plikw." - -#: src/diff.c:837 src/sdiff.c:186 -msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." -msgstr "" -"-E --ignore-tab-expansion Zignorowanie zmian spowodowanych rozwiniciem\n" -" TABw." - -#: src/diff.c:838 src/sdiff.c:187 -msgid "-b --ignore-space-change Ignore changes in the amount of white space." -msgstr "-b --ignore-space-change Zignorowanie zmian iloci znakw odstpu." - -#: src/diff.c:839 -msgid "-w --ignore-all-space Ignore all white space." -msgstr "-w --ignore-all-space Zignorowanie znakw odstpu." - -#: src/diff.c:840 src/sdiff.c:189 -msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." -msgstr "-B --ignore-blank-lines Zignorowanie zmian iloci pustych linii." - -#: src/diff.c:841 src/sdiff.c:190 -msgid "" -"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." -msgstr "" -"-I RE --ignore-matching-lines=RE Zignorowanie zmian w liniach pasujcych\n" -" do RE." - -#: src/diff.c:842 src/sdiff.c:191 -msgid "--strip-trailing-cr Strip trailing carriage return on input." -msgstr "--strip-trailing-cr Pominicie znakw nowej linii na wejciu." - -#: src/diff.c:844 -msgid "--binary Read and write data in binary mode." -msgstr "--binary Czytanie i zapisywanie danych binarnie." - -#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 -msgid "-a --text Treat all files as text." -msgstr "-a --text Traktowanie plikw jako tekstowych." - -#: src/diff.c:848 -msgid "" -"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " -"context.\n" -"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " -"context.\n" -" --label LABEL Use LABEL instead of file name.\n" -" -p --show-c-function Show which C function each change is in.\n" -" -F RE --show-function-line=RE Show the most recent line matching RE." -msgstr "" -"-c -C ILE --context[=ILE] Skopiowanie ILE (domylnie 2) linii kontekstu.\n" -"-u -U ILE --unified[=ILE] ILE (domylnie 2) linii zunifikowanego " -"kontekstu.\n" -" --label ETYKIETA Uycie ETYKIETY zamiast nazwy pilku.\n" -" -p --show-c-function Wskazanie funkcji C, w ktrych s zmiany.\n" -" -F RE --show-function-line=RE Pokazanie ostatniej linii pasujcej do RE." - -#: src/diff.c:853 -msgid "-q --brief Output only whether files differ." -msgstr "-q --brief Wypisanie wyniku tylko gdy pliki si rni." - -#: src/diff.c:854 -msgid "-e --ed Output an ed script." -msgstr "-e --ed Wynik w postaci komend ed-a" - -#: src/diff.c:855 -msgid "--normal Output a normal diff." -msgstr "--normal Wynik w postaci zwykego diff-a." - -#: src/diff.c:856 -msgid "-n --rcs Output an RCS format diff." -msgstr "-n --rcs Wynik w postaci diff-a z RCS." - -#: src/diff.c:857 -msgid "" -"-y --side-by-side Output in two columns.\n" -" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" -" --left-column Output only the left column of common lines.\n" -" --suppress-common-lines Do not output common lines." -msgstr "" -"-y --side-by-side Wynik w dwch kolumnach.\n" -" -W ILE --width=ILE Wypisanie najwyej ILE (domynie 130) znakw w " -"linii.\n" -" --left-column Wypisanie tylko lewej kolumny dla wsplnych linii.\n" -" --suppress-common-lines Bez wypisywania wsplnych linii." - -#: src/diff.c:861 -msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." -msgstr "" -"-D NAZWA --ifdef=NAZWA Wypisanie poczonego pliu dla pokazania rnic\n" -" w `#ifdef NAZWA'." - -#: src/diff.c:862 -msgid "" -"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." -msgstr "" -"--TYPG-group-format=GFMT Podobnie, ale z uyciem GFMT do sformatowania " -"grup\n" -" wejciowych type TYPG" - -#: src/diff.c:863 -msgid "--line-format=LFMT Similar, but format all input lines with LFMT." -msgstr "" -"--line-format=LFMT Podobnie, ale z uyciem LFMT do sformatowania linii\n" -" wejciowych." - -#: src/diff.c:864 -msgid "" -"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." -msgstr "" -"--TYPL-group-format=LFMT Podobnie, ale z uyciem LFMT do sformatowania " -"grup\n" -" wejciowych typu TYPL" - -#: src/diff.c:865 -msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." -msgstr "TYPL to `old', `news' lub `unchanged'. TYPG to TYPL lub `changed'." - -#: src/diff.c:866 -msgid "" -" GFMT may contain:\n" -" %< lines from FILE1\n" -" %> lines from FILE2\n" -" %= lines common to FILE1 and FILE2\n" -" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" -" LETTERs are as follows for new group, lower case for old group:\n" -" F first line number\n" -" L last line number\n" -" N number of lines = L-F+1\n" -" E F-1\n" -" M L+1" -msgstr "" -" GFMT moe zawiera:\n" -" %< linie z PLIKU1\n" -" %> linie z PLIKU2\n" -" %= linie wsplne dla PLIKU1 i PLIKU2\n" -" %[-][SZER][.[DOK]]{doxX}LITERA specyfikacja w stylu printf dla LITERY\n" -" LITERY s nastpujce dla nowej grupy (mae dla starej grupy):\n" -" F numer pierwszej linii\n" -" L numer ostatniej linii\n" -" N ilo linii = L-F+1\n" -" E F-1\n" -" M L+1" - -#: src/diff.c:877 -msgid "" -" LFMT may contain:\n" -" %L contents of line\n" -" %l contents of line, excluding any trailing newline\n" -" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" -msgstr "" -" LFMT moe zawiera:\n" -" %L zawarto linii\n" -" %l zawartoc linii, z wyczeniem znaku nowej linii\n" -" %[-][SZER][.[DOK]]{doxX}n specyfikacj numeru linii w stylu printf" - -#: src/diff.c:881 -msgid "" -" Either GFMT or LFMT may contain:\n" -" %% %\n" -" %c'C' the single character C\n" -" %c'\\OOO' the character with octal code OOO" -msgstr "" -" GFMT i LFMT mog zawiera:\n" -" %% %\n" -" %c'C' pojedyczy znak C\n" -" %c'\\OOO' znak o kodzie semkowym OOO" - -#: src/diff.c:886 -msgid "-l --paginate Pass the output through `pr' to paginate it." -msgstr "-I --paginate Przepuszczenie wyniku przez `pr' eby go stronnicowa." - -#: src/diff.c:887 src/sdiff.c:198 -msgid "-t --expand-tabs Expand tabs to spaces in output." -msgstr "-t --expand-tabs Rozwinicie TABw w spacje w wyniku." - -#: src/diff.c:888 src/diff3.c:452 -msgid "-T --initial-tab Make tabs line up by prepending a tab." -msgstr "-T --initial-tab Wyrwnanie linii przez uycie TABw." - -#: src/diff.c:890 -msgid "-r --recursive Recursively compare any subdirectories found." -msgstr "-r --recursive Porwnanie podkatalogw rekurencyjnie." - -#: src/diff.c:891 -msgid "-N --new-file Treat absent files as empty." -msgstr "-N --new-file Traktowanie brakujcych plikw jak pustych." - -#: src/diff.c:892 -msgid "--unidirectional-new-file Treat absent first files as empty." -msgstr "" -"--unidirectional-new-file Traktowanie brakujcych pierwszych plikw\n" -" w pierwszym zestawie jako pustych." - -#: src/diff.c:893 -msgid "-s --report-identical-files Report when two files are the same." -msgstr "" -"-s --report-identical-files Informowanie gdy dwa pliki s takie same." - -#: src/diff.c:894 -msgid "-x PAT --exclude=PAT Exclude files that match PAT." -msgstr "-x WZR --exclude=WZR Wykluczenie plikw pasujcych do WZORu." - -#: src/diff.c:895 -msgid "" -"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." -msgstr "" -"-X PLIK --exclude-from=PLIK Pominicie plikw pasujcych do wzorcw w " -"PLIKu." - -#: src/diff.c:896 -msgid "" -"-S FILE --starting-file=FILE Start with FILE when comparing directories." -msgstr "" -"-S PLIK --starting-file=PLIK Zacznij od PLIKu przy porwnywaniu katalogw." - -#: src/diff.c:897 -msgid "" -"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." -msgstr "" -"--from-file=PLIK1 Porwnanie PLIKU1 z wszystkimi argumentami.\n" -" PLIK1 moe by katalogiem." - -#: src/diff.c:898 -msgid "" -"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." -msgstr "" -"--to-file=PLIK2 Porwnanie wszystkich argumentw z PLIKIEM2.\n" -" PLIK2 moe by katalogiem." - -#: src/diff.c:900 -msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." -msgstr "" -"--horizon-lines=ILE Zostawienie ILE linii wsplnego przedrostka i " -"przyrostka." - -#: src/diff.c:901 src/sdiff.c:200 -msgid "-d --minimal Try hard to find a smaller set of changes." -msgstr "-d --minimal Usiowanie znalezienia mniejszego zbioru zmian." - -#: src/diff.c:902 -msgid "" -"--speed-large-files Assume large files and many scattered small changes." -msgstr "--speed-large-files Due pliki i rozrzucone mae zmiany." - -#: src/diff.c:907 -msgid "" -"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." -msgstr "" -"PLIKI to `PLIK1 PLIK2' albo `KATALOG1 KATALOG2' albo `KATALOG PLIK...' albo\n" -"PLIK... KATALOG'." - -#: src/diff.c:908 -msgid "" -"If --from-file or --to-file is given, there are no restrictions on FILES." -msgstr "" -"Jeeli uyta jest opcja --from-file albo --to-file, nie ma ogranicze co do\n" -"PLIKW." - -#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 -msgid "If a FILE is `-', read standard input." -msgstr "Jeeli PLIK to `-', czytane jest standardowe wejcie." - -#: src/diff.c:920 -#, c-format -msgid "Usage: %s [OPTION]... FILES\n" -msgstr "Uycie: %s [OPCJA]... PLIKI\n" - -#: src/diff.c:949 -#, c-format -msgid "conflicting %s option value `%s'" -msgstr "sprzeczna warto opcji %s: `%s'" - -#: src/diff.c:962 -msgid "conflicting output style options" -msgstr "sprzeczne opcje stylu wyniku" - -#: src/diff.c:976 -msgid "regular empty file" -msgstr "zwyky pusty plik" - -#: src/diff.c:976 -msgid "regular file" -msgstr "zwyky plik" - -#: src/diff.c:978 -msgid "directory" -msgstr "katalog" - -#: src/diff.c:981 -msgid "block special file" -msgstr "specjalny plik blokowy" - -#: src/diff.c:984 -msgid "character special file" -msgstr "specjalny plik znakowy" - -#: src/diff.c:987 -msgid "fifo" -msgstr "fifo" - -#: src/diff.c:991 -msgid "socket" -msgstr "gniazdo" - -#: src/diff.c:994 -msgid "message queue" -msgstr "kolejka komunikatw" - -#: src/diff.c:997 -msgid "semaphore" -msgstr "semafor" - -#: src/diff.c:1000 -msgid "shared memory object" -msgstr "obiekt w pamici dzielonej" - -#: src/diff.c:1003 -msgid "typed memory object" -msgstr "obiekt w pamici z okreleniem typu" - -#: src/diff.c:1006 -msgid "weird file" -msgstr "dziwny plik" - -#: src/diff.c:1070 src/diff.c:1256 -#, c-format -msgid "Only in %s: %s\n" -msgstr "Tylko w %s: %s\n" - -#: src/diff.c:1193 -msgid "cannot compare `-' to a directory" -msgstr "nie mona porwna `-' z katalogiem" - -#: src/diff.c:1220 -msgid "-D option not supported with directories" -msgstr "-D opcja nie dziaa dla katalogw" - -#: src/diff.c:1229 -#, c-format -msgid "Common subdirectories: %s and %s\n" -msgstr "Wsplne podkatalogi: %s i %s\n" - -#: src/diff.c:1266 -#, c-format -msgid "File %s is a %s while file %s is a %s\n" -msgstr "Plik %s jest %s, podczas gdy plik %s jest %s\n" - -#: src/diff.c:1345 -#, c-format -msgid "Files %s and %s are identical\n" -msgstr "Pliki %s i %s s identyczne\n" - -#: src/diff3.c:26 -msgid "Written by Randy Smith." -msgstr "Napisany przez Randiego Smitha." - -#: src/diff3.c:328 -msgid "incompatible options" -msgstr "niezgodne opcje" - -#: src/diff3.c:368 -msgid "`-' specified for more than one input file" -msgstr "`-' podany dla wicej ni jednego pliku wejciowego" - -#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 -#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 -msgid "read failed" -msgstr "nieudany odczyt" - -#: src/diff3.c:441 -msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." -msgstr "" -"-e --ed Wypisanie niezczonych zmian midzy STARY_PLIK a NOWY_PLIK do\n" -" MJ_PLIK." - -#: src/diff3.c:442 -msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." -msgstr "" -"-E --show-overlap Wypisanie niezczonych zmian, konflikty w nawiasach." - -#: src/diff3.c:443 -msgid "-A --show-all Output all changes, bracketing conflicts." -msgstr "-A --show-all Wypisanie wszystkich zmian, konflikty w nawiasach." - -#: src/diff3.c:444 -msgid "-x --overlap-only Output overlapping changes." -msgstr "-x --overlap-only Wypisanie nachodzcych zmian." - -#: src/diff3.c:445 -msgid "-X Output overlapping changes, bracketing them." -msgstr "-X Wypisanie nachodzcych zmian w nawiasach." - -#: src/diff3.c:446 -msgid "-3 --easy-only Output unmerged nonoverlapping changes." -msgstr "-3 --easy-only Wypisanie niezczonych nienachodzcych zmian." - -#: src/diff3.c:448 -msgid "-m --merge Output merged file instead of ed script (default -A)." -msgstr "" -"-m -merge Wypisanie poczonych plikw zamiast komend ed-a (domylnie -A)." - -#: src/diff3.c:449 -msgid "-L LABEL --label=LABEL Use LABEL instead of file name." -msgstr "-L ETYKIETA --label=ETYKIETA Uycie ETYKIETY zamiast nazwy pliku." - -#: src/diff3.c:450 -msgid "-i Append `w' and `q' commands to ed scripts." -msgstr "-i Dodanie komendy `w' i `q' do komend ed-a." - -#: src/diff3.c:453 src/sdiff.c:202 -msgid "--diff-program=PROGRAM Use PROGRAM to compare files." -msgstr "--diff-program=PROGRAM Uycie PROGRAMU do porwnania plikw." - -#: src/diff3.c:465 -#, c-format -msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" -msgstr "Uycie: %s [OPCJA]... MJ_PLIK STARY_PLIK TWJ_PLIK\n" - -#: src/diff3.c:467 -msgid "Compare three files line by line." -msgstr "Porwnanie trzech plikw linia po linii." - -#: src/diff3.c:673 -msgid "internal error: screwup in format of diff blocks" -msgstr "bad wewntrzny: spieprzony format blokw diff" - -#: src/diff3.c:971 -#, c-format -msgid "%s: diff failed: " -msgstr "%s: diff nie zadziaa: " - -#: src/diff3.c:993 -msgid "internal error: invalid diff type in process_diff" -msgstr "bd wewntrzny: bdny typ diff w process_diff" - -#: src/diff3.c:1018 -msgid "invalid diff format; invalid change separator" -msgstr "bdny format diff; bdny separator zmian" - -#: src/diff3.c:1242 -msgid "invalid diff format; incomplete last line" -msgstr "bdny format diff; niekompletna ostatnia linia" - -#: src/diff3.c:1265 src/sdiff.c:273 -#, c-format -msgid "subsidiary program `%s' not executable" -msgstr "program pomocniczy `%s' nie jest wykonywalny" - -#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 -#, c-format -msgid "subsidiary program `%s' not found" -msgstr "nie znaleziono programu pomocniczego `%s'" - -#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 -#, c-format -msgid "subsidiary program `%s' failed" -msgstr "nie zadziaa program pomocniczy `%s'" - -#: src/diff3.c:1294 -msgid "invalid diff format; incorrect leading line chars" -msgstr "bdny format diff; nieprawidowe znaki na pocztku linii" - -#: src/diff3.c:1370 -msgid "internal error: invalid diff type passed to output" -msgstr "bd wenwtrzny: bdny typ diff-a przekazany na wyjcie" - -#: src/diff3.c:1647 src/diff3.c:1704 -msgid "input file shrank" -msgstr "plik wejciowy si zmiejszy" - -#: src/dir.c:162 -#, c-format -msgid "cannot compare file names `%s' and `%s'" -msgstr "nie mona porwna nazw plikw `%s' i `%s'" - -#: src/sdiff.c:35 -msgid "Written by Thomas Lord." -msgstr "Napisany przez Thomasa Lorda." - -#: src/sdiff.c:183 -msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." -msgstr "-o PLIK --output=PLIK Tryb interakcyjny, wyniki wysyane do PLIKu." - -#: src/sdiff.c:185 -msgid "-i --ignore-case Consider upper- and lower-case to be the same." -msgstr "-i --ignore-case Traktowanie maych i wielkich liter tak samo." - -#: src/sdiff.c:188 -msgid "-W --ignore-all-space Ignore all white space." -msgstr "-W --ignore-all-space Ignorowanie wszystkich znakw odstpu." - -#: src/sdiff.c:194 -msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." -msgstr "" -"-w ILE --width=ILE Wypisanie najwyej ILE (domynie 130) znakw w linii." - -#: src/sdiff.c:195 -msgid "-l --left-column Output only the left column of common lines." -msgstr "-I --left-column Wypisanie tylko lewej kolumny dla wsplnych linii." - -#: src/sdiff.c:196 -msgid "-s --suppress-common-lines Do not output common lines." -msgstr "-s --suppress-common-lines Bez wypisania wsplnych linii." - -#: src/sdiff.c:201 -msgid "" -"-H --speed-large-files Assume large files and many scattered small changes." -msgstr "-H --speed-large-files Due pliki i rozrzucone mae zmiany." - -#: src/sdiff.c:214 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 FILE2\n" -msgstr "Uycie: %s [OPCJA]... PLIK1 PLIK2\n" - -#: src/sdiff.c:215 -msgid "Side-by-side merge of file differences." -msgstr "Interaktywne poczenie plikw." - -#: src/sdiff.c:327 -msgid "cannot interactively merge standard input" -msgstr "nie mog interakcyjnie czy standardowego wejcia" - -#: src/sdiff.c:588 -msgid "both files to be compared are directories" -msgstr "oba majce by porwnane pliki to katalogi" - -#: src/sdiff.c:853 -msgid "" -"ed:\tEdit then use both versions, each decorated with a header.\n" -"eb:\tEdit then use both versions.\n" -"el:\tEdit then use the left version.\n" -"er:\tEdit then use the right version.\n" -"e:\tEdit a new version.\n" -"l:\tUse the left version.\n" -"r:\tUse the right version.\n" -"s:\tSilently include common lines.\n" -"v:\tVerbosely include common lines.\n" -"q:\tQuit.\n" -msgstr "" -"ed:\tEdycja i uycie obu wersji, kadej z nagwkiem.\n" -"eb:\tEdycja i uycie obu wersji.\n" -"el:\tiUycie wersji po lewej.\n" -"er:\tEdycja i uycie wersji po prawej.\n" -"e:\tEdycja nowej wersji.\n" -"l:\tUycie wersji po lewej.\n" -"r:\tUycie wersji po prawej.\n" -"s:\tDoczenie wsplnych linii bez informoawania o tym.\n" -"v:\tDoczenie wsplnych linii z podaniem informacji.\n" -"q:\tZakoczenie.\n" diff --git a/src/bin/diffutils/po/quot.sed b/src/bin/diffutils/po/quot.sed deleted file mode 100644 index 0122c46318..0000000000 --- a/src/bin/diffutils/po/quot.sed +++ /dev/null @@ -1,6 +0,0 @@ -s/"\([^"]*\)"/“\1”/g -s/`\([^`']*\)'/‘\1’/g -s/ '\([^`']*\)' / ‘\1’ /g -s/ '\([^`']*\)'$/ ‘\1’/g -s/^'\([^`']*\)' /‘\1’ /g -s/“”/""/g diff --git a/src/bin/diffutils/po/remove-potcdate.sin b/src/bin/diffutils/po/remove-potcdate.sin deleted file mode 100644 index 2436c49e78..0000000000 --- a/src/bin/diffutils/po/remove-potcdate.sin +++ /dev/null @@ -1,19 +0,0 @@ -# Sed script that remove the POT-Creation-Date line in the header entry -# from a POT file. -# -# The distinction between the first and the following occurrences of the -# pattern is achieved by looking at the hold space. -/^"POT-Creation-Date: .*"$/{ -x -# Test if the hold space is empty. -s/P/P/ -ta -# Yes it was empty. First occurrence. Remove the line. -g -d -bb -:a -# The hold space was nonempty. Following occurrences. Do nothing. -x -:b -} diff --git a/src/bin/diffutils/po/ru.gmo b/src/bin/diffutils/po/ru.gmo deleted file mode 100644 index 3c67e6d2a83ecf10b4f4cb6b7712b5ae0a13f854..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23983 zcmche3w&HxedjMMk46+Ikc1E(ISDw56OAG%A#vp>#PKU4wx!5&9LF|zBwa~^r5R-& zv7PYfZh@BFmZjYSeYe}!mTsZTmfh}$(p`_Di9MDyBWp$(%LW$%Asdp|!A>@%ux!8o z|2g;0j5Kl#+g*Kf{F{64dH&D;b^hm{&%Wx-r#<`k72qA7_v){K-}k)N?Xj=lXuywp z-W#v=yjM(sf5`KfJnv0!0ylw&!EVoc^J~Ft!27^9@F9>oZ~i0jZJ_ioSO8nV{|Ua+ z^WJg=xC*?*zJJRuFv9aEK?6#=>%j$({@?N=in7g+DJPN+g^R9e7csID!zQ6J_AmdyqNM~KM%_H_23~8x?J^lAmhL7Rp4D9bCYr276%#YZC?iO1^*97KUecx=yLVP zLB_dSzSHm3vfi6L@9npN(Dm)ZAa&pVdGI~px53S9-Oqrl!Cv<1e(({VY5&gS;Jf(m zb++ESZUooyoCKlWyM(^2;P*l1e~kf|$2CJBYr5vwKzJ#@o?kZrz8m};$U3k4D#&`S`<{J%cL#VY zRixf`K^c$ryyv6fwczi8ZwLQ}dp-qT!}I?J*}qlq1g{52K-#VPH27BVi|%_4Y^TZ_ zLF!%49K9>SQScq$$3XhO{&zvzUH{)e=zjei_$E;J<7&@qel7TO;B_E-(JcJ@HW1p$ zxXtW|#~95Sko7iy0+e=N0Gs)53j8woEZ7C>{JwpE!`DIjUi~WYY4B&kH-rBRg#I^P z23`(AJDJao8yw1b@+|A1&5e(M%C7WvX3`E3o_3(_DI^b(MI$}+mQX<_UjKijh4>%n=D{@T6?LWi~= zg3!O6y_N6nLU&}Wy$_^)`v*Yi-u@8CdfGn-* zVf(khYgrO)W!@dKFHPWPkbXND=M}88sxLxLZ75FF!f872X?tLDFPPc#8zF$Kfk@q#y?=|2rf*s%= zgY>iJ35OTJPoaXKq2h0YwCj8ixD9*|q+RD1Kp*@%2tC){4KnYwqagEM`xW>65BB*E zp)-7UhtQF^-XV0OUYGDc{dT3m9&i%ehzepaME~FU07%)!-c<`=R)6!C&Qh23*b5WS!Jo z|8cMlJkCCyV=AxY`RAG9c@R2oY5|$UCh7`5ZW8`m2MS$oK_#+R-aVj?oMWX?T&6F%(O3BD18x1|3b;cM2}Bl||39;pv4d%h1| z>3O|Ew|9c@p73Wcdo6O;%U%or_kIk7pL%~Egjaj>AhOnb5@a3sy#{1I?xT+PH{b&x zbm^n6@N3`w;H$w8vwrB=_pf+<4=nXxLFT{x6v(*!vd%YwYaBvzecl7Uj`wj8I`lsR zLht@R23c3Xtfv$FA;`Y&xDAA-cL+bx-;U3N%y-8ZK<9CCa6icWAN(|UEhzKp0KX2h?%nLQ z@Y!ym7vFcwJgx$TPuPRq!Y9yScL9XPyT1uu4azu-w}&}My*<4SqagF!lLUVj{3OVF z_WU~#y6*WMkp0~ACHMRlkpA}^0pWu^i{LGux0g0TpS^2A=)KnmUk`o;WW2q?Pp_cJ zI0q;)U-@ILV(0X4jDMMn_b({SUHoj(2_hHXM=0|5pD5e)m;L9%fYAEOlu^nrP*{iP zLjBvuzq=@(qWm^R*568z{ePI!MG+c&mLhAFKiMPs`(?_nQrN9Z5?u73yl_cqEaDc4gr zQsnPiitLa4{kny^e?P$!d!T>!^Y3p_evu+P_(zoArThw|_U}LQu#@s{+{<-fyZgNb zyqR(j<#zXO4>;m}ZvZotK}sKGGe!RXg9Xu7-WMp>xaZ#hg>Q%4v%s6(?+3vi_d5Xe zhWD4jgTp@nAE5M8;6JgE-hZU*qx>}`LFuM^n(|8&`FkB@oFY0*{=P{0809?_ktg}v zZ^8SQ;LlK6D8kFHqBK$df^vu=eUBPGj`nNZZ>sq+1PG7zjN7#4*Q`i_%N6lA5X+hI$@icXnaV2 zxq7=Jdw1{b-q3%~-rcRcd;2!7-@EtGp~S%lKC)$FfB(ilV0~s+`M5c}w zGTr`Ny&Fv|W%fb8<`%P$F#ssNFB6Bk;v@c0b1Qrl)Uyrbd-#=Zw(pNkDAQVcZ@;&@ zx7`dJO2c7LQ29$4Mfkc}rK7$|N2|9gW%zF>HazSnJM}BiY&EOqN7KuEmvyYVB_Ul{ zkOrOFof(FP{!pjUH?grXe*{5EOr&G*awK9_4cfY~_`}h$*ieHnuI|27gR4@_W+>sO z;>~Fj71m^F@ajlrob9#Ugq5kvq@v>kv5`z7qbukPI^QQ9CH;pou_Sa_v5!dPCm1lY zlht4H^jz%~XV_?RwbaVQlm1|0Bp!Rj4@qVTWXaI*yRN6ni$s*CA}Y-hWP3cC?ou^r zw#UX}W6@-b8Gv8ymw*A4g|$h_sK%2Pt#qb*84*Sa`cg@3*q3AaP#j!W(m=Wzh{dDH zL&o&^(IMs91Ibw0H$%~M)WqV(eI7^2N^N1*$V4(Rl8lab_4f5_?pud4*nw6G9#EAi z%?Z(F!!Th=T8Z9`$de8biKG+uX&`|X7p)i@j`>5i6}zkynf0zK`$*rgAROfh^JyhfyKD!JXpmz+94oR)VLS2)v`|Z#~+Hop(A#& zDPz{9Qiwkmg?DzBl{Vv|zf*(JH1-=2NzpClS=FkpIF(MuCL)1?j|?VJrSht(^9Q5J zWGqUjNk5%Q#trI97ccX0OrxC9VM5NRWr)B|cR0@IU>h27MkXG!oPs`#jzzEnmLE-j z(vPC%22$uYr@EDi#W4Hh6KUbATa1ZB{AlV>BoQA&a2$hW;^RK#7=nE9#KV4aEIKhE zn_gZ2I%$|1O&o~GoP%~XG(rX7{OtGB+Aa|v9*Yg8g>rXGOUG{mW6}72%ef|GHcMl3 zU^IawS`Josf^oDyeQYq>)@{X()6wvdKip-X+~nQVl|d0QnWWkGZmp=z(6MlXOl3o$ z&*O=-No6J`63H}+R_zo>U(8Q=5j&KXk#uw*;vbxd!jtUi(pe8>eAzfE;R?7)jHDeX zxg0q|l7*ypv|W*I_bA2xx%ju+^wlm34L&%^PB|?i-vZfhv>j}PwxAOhx5aE(clSp8 zqzIBV;E#2=N71DAXDpsdi%Q0$2=xXHw@H%~85Vt8%c|Q|KPnN@(WJ1I^0|tT$R6+P z&WRd@d+M}R&2BPozw{D|$I>wbMz+dqjqYdPkQM8&WG3)n@OS+QKW?2l`AEy1+R`!t z%#J>Z4*DUjg#8bUipA0Q)PEq{=LTX_x7BFqac!W}XMWa`L``9D+#)xsa~Wu<^eEzO zw?TB(gsLjhF-j=Ty z$@-OQKYBulSntvF%5lMYgrWrWH6so(;(9etjI6Hp!Srr1Tzf-eiS4=p!H#Ce(&m=c zRXaAAn83JNhn(p*MKW}@Bj^lOD7N=fJ9E{my$LClg9Cki<9MrE zYPO5gfk1hoG(sVwcFFb|sV_PjKeJB@lHkYSHe! zP*$aING384SE~W+#|`56IV8$xIL1LQYE2kcH0A5|xqW3rU|`sd_D+FfW_U^sV$Fm@ zmVREUvFu5-XUhiVT*lkgv!hRcv;PURb(j36pO_5e6u)&ZLc@;g^^*~`yLvXX?gx!= zgkF<~Qu4))?1VfsoWyF^{ZU%|uvsB$6D& zFRL#rS;F~oakHg+YqzR#)hb=?G4QZOF^aU<*MZ`(aSs{5(!^=i9`V3gDcs5r z1o&Zp>`)70VpV@YKiirqJ|sO1BxC+?I7!_iOb+x;It^>7Lvc7c|F?;n_s+q2uY;AU4k$0j47Ft*uNS5JjOjm(xy-(CGxkIpV0Bf;T0G6u4{~ z5_pJc6U$;t7*Z#!PSB7TS^C*19uX=@9$-N=H!7>P1E%}1ED}DnzEzLyH+YW4hZEE} zAa$G`xfC0G!04eU5;+hXN{`wTlIuC(lRA6TeoNbGCuS)FZ>X|m+=DW%GvoE{as%70 z^?TPTi#ki*rH?DxaK6$AA6#~M$j6E*hI=jcmp!ubpHj=Q^QT#v+UUA&etNAV<}313 z@W$QtoNoDTl~pc)m6;|FF_u7Os!k$036H22l4ue&s;6>m4RP2+6}E=o(xXW~@RihF zF0T>tysA3B3$}Vgf z7NjGBgJPh)Zuc4|#D&NQ3F)Sc1Qe8M zk7PL1%P~we7l*a55&;*E<>>e7o8^_a`s2i2Xg(UvaC#Z?wk52`B|ls|*PuYeqj2XM z`NCii$A}lQ*k$AQ$Qc_sme8hfac|Pcf6uTpu9F6B`j&Nr>claMjd)Id4`fDEo!-HZ z$VfaB$)sarsk`{qnn;e^+3Kms;%v8EDBx7tz&utMo)=wjpT(As<8sF)IIKf?%#{rh z`KivP{db%8wzjqwb1&F&Ym3>+ixzpKZ@0?Bt!rA|d;4uIO`B^!>F3Sz`Sx2{Zojp? zWsS5JPERF-1?6&}zs2;nn2jyw!4|X2&bVExSl3CISEgw%0)*UZ)76Mb{2H37Z!LmF z>ss|`-4VAzwLT*CGK2VvDX(9`X)X>ZCfRq9sck)G=eoYWb=&%PAw?YOnE{6;F~FFG z@fe{YCE!@}Kx@;kLST|hz?*lr5~I&7>Uk^xTjEh(zPlXk*6WE zzNdFr_qNTgUVm^OA>x=q;zoIO$m~Pq*brm0?#9xATD=|d{qe*BRPrH2Vchu1WFpB+ zJ$*934Wb(N+)(powZ2(h^Jcfa+5Lf^nmP0*k^>(~5Kr8U8XJR^R8H*hTcd;b`te6%2*JL{Dz1fs02j=c z7)T|?{ItK;BpA!Y(if|efurbQ&`2j#Y_3MOs~kcALZX_&lMp?xy z@Jm2~Lmt;$mu(zkcM#yXkxkHB1?K=G+^XeBgW=vQeF6Y-BWTs+C+F0_QrO)8QlAcnXmu-hP;%POFa(Now zRM?Yk)5D#Y-EU8(D^_`^^RoLg9Auk3^m8%_W%W|U?#ys(IN`O6|*=#X#EgqLiADR$e7gHg2{!Gj_k>S>EmRj0kAgl!7y5B>&0@7+@Jdx;3cqiHh5B9!O2Hg%HHm=_K}#=%4)uYwIL&gn z940CzkJbZsY{c=1gJMiBJcF4CW!!zax6)@>kbjUM1jld`_Qk4c48jw4Q*Xmm+uHbO zpwtfdG0dE<$zHWO0`w*mvXV&mPz2c(=i6T9t7~dHTGur7_Vh>A%MBIZA{)?Vou;F$ zts~NQYozVHrv28=_O?jdnzlA7M*486rH`fcZjpLzx82lsEA_UJ5)#3|iR0J6Po1WR zOaZgK)%3?k0C^U80c=I$L}qw|q2` zjY{SD;&k5RPnz$Z`QEcw!6K2(#9?1vUpocu;UXQpP3yOu0WyQoPw`r*^(pFVp= z@{L|N_v5oczR|Z{eCDMy#ynn}pUsxF19|fUQ(-dsnH=1XnjY508e=QZ&F2gG*{m#K zCO5TkSVlfs$ezv>^2fD@Lb0-V)Et>#n44?S7o~D`o;NaCD3Ys7Jt`C-l$p!TSBl3R z0o-VseB?eCWvD`KSq*NrPUlNAMcdL`YWk7e^hVpj)tcpl{A@8-JE2v?ZI^v%G5ON; z%;D47g3y!`15&6>*5;#46d#*&?Yc`v;1^z(46 zOn!2)d}2vXQhp|1o0QaIo|5Y1?v#t>i5z^f&sqcWmAvQYi*pO?Go8o=F!i(TW-@!M zY#z@Zo5?B*wbLZ{*s=6un2R)@JvoyITuHZ723b`q}lG(*$M)pG%93(3ha+TbCp}_~O=rWb2iZf3z zbiOoKoH=o_SV0Svj+@EcNt2yFvM`$~l(RNjr;wA~5q=N5+=nHwA6<_ahQ|F3hP@SM zYg^dlrN(U<%)t)h(vmK@Ril~PK5C}IF~oH^xww=X%V%H6@=+Q>e%65q6-(oW`ICGcB4)ROTt1 z0Csw|fcVbl8||;%a8&r@e6a-UEy5DBxtVFIN*GM@yf)xm@ZB##a7G} ztK;~vTlKrLc12E{n9&CF^mE^rwb@)TeF&$8LYv8!7sY2%D{G0wq!6Kn>BsVi!_+a_ z;hxZ&i~ZCe41c1WvBtA+fs0O7gbPLTOVjg<<$P`y?KZhEbNsQqaL`7*Zuu{_5|1YuYHs@c`t+Odt8gJ&*4mB!Ngj zn_eiE$|nxjSmlMoWwkX0bkKr9e?k9w{asm{&*GBh4@=V9b5FkT3|1{jdUKC;Mo!+n zXez?jXm#{SUe!~Ut>lzYoBMV#k!>KW+f_9vH`FD=iNY}E`FZ>bv3LxaM*&%zRY6gm z7DHt<%o!%3*V8UyWE0_DVujdbweSJw9mXb2W-BwtIZ$XHa<;KY&Y+4g=L)%TbsHpF zU~axRnVUHwY;Jp5q%nzdp-ir%U23!j*0M%TJP=Z&E@{pZ<7qt%iJn$EVkAzW+{G%g z<&`;n3bwl>UPXR3GLxSyuE;CaS`;U-7ms0`I1;NnBoZsrk>Q?XDN)%Ln|5~rD<~9~ zW!qgW=ceI>3WkQ7E9c(T5iOMDK)(e9M91ki6e~ezbqRPOL4zZX)z)&D5|Z0IJm-+q zWa8-?a`B!i&ILY&t#rd&(JagsXHI9407=VJ850eztICGycwwJmLSE2kIHimA_%a*7 zHdM_KzF6%9ApKIo4CM6E1e38>Na<5Q&$=}0Babf>#5i!AwDFm5;IszYlyg~qR&zDT z>XQ#Oz0KjmoN@-5Zj`7C(z9hwx_)_rz`)`iiw6@bEPe+1DkuJGeS+Zgi^7>0?*i%xqxGj5T{B(O zrVNH1RK=SJiR?*WLTdb23*?7^_FN_dJOjgSH394?>y&XZV4cbn1`JX?2MEg$U5 z0V0kreqY~${)8%|c!Un;qnN3#`TU)_oYEuc> zhaBcv%!S*;Ky4GiGDOhSfY2x@Q?E%VJfE9hm@mml*63T~Jy)D^hF>gA<1E6n9PQje zlvA|j9D)-ZMui*n{PK-#PGXL3C*_!+U9FT+ctKjr5{i==n$AvZ+*PKYJsLD#Az`d$ zHp;O<(2{1$Qwh(jgRGmyQO7PL^e3u5vq+g*OJUdgtuRGujYU|-?L#h`OsO$kUM9y)0psu*}&h-xdzZ1%87E4@ViwPTy zw_Xe+cd=onVmP8WR~#)Wjm~Zd&AD%#Kl6`Iew+CQNsGZ7qBnA4ds#n9>wo*)bI`j% zE@Le&OCeWsdnRjEd8LhB^$D(N$X1&lGEd=bA zwf6`=Ae2!yV(togxhlff(e^TDKDmBm8Ma3Wmyndg5dybf?wZOHJDk^0vl#E%=9k*y ztlk6=2q~2oXQs2BeMaTxX9#KW40EYCUlt#o3p!h;+C21XayCIS z?6=n4#KMKgTd@W9benU%V0;VtCm;(tG&hx-sdnD5(K%F0RxBQinaj=|#|q?2r*rdj z*+SO4px&&|SZMCOBu@KdRs^!T3tUr$_eC(l!Wm=9gLNKnJPsUm3ZD;CKwPSbD4OD_{Nywan%YKW zCudg7wR|QpmB(js?1;$8O?%>y%>}w){c4f&O_Hv?Ju#d2 z9Up9MdT!C2eNs6Q{U^}~Vq-_La6vhLjL;csa6XAYxt^7*C(ZgVSe?u!IQ@DH*CFBl9REvGiPjE86Q zoQO{1IgrHJ+VmX=Ok`=n-an(p@j;|k=xT8DAP$!D2bZ1Dh={G7jr!T8*&-UdoNH2* z80K%DBlb`h`I;tNecT{i#7l`MSCb3Eru$Tx$~^_Qe|2-R?rktLgo499 z5%4_M3}=H2G)5?Km5`g25v>gHaV|SA&o`(}CFe7Iv)aB{U464#-;nbe)*?5u{TYZP;s}^C;b!V-F?<3e!g7qKe%|m!I6_g>Y4LDu*Xk1pz1la z$vaaKQTV?|1I?S7Bv9?m^ws8n+E*`d;w+hGi}P3%H{|lH&%8@Ht;zXxcd(lHNmQSU zhncl(>_TZ;l~(RZ(Q8;G?_%G|GId#>)`|)1ScZ{%X3?OU4!{p#&#Z?$Kb9A%2##wd z*l}`35-Vnr!cuu*t~l%Ac7z9%+$KeWU7!#q>pQVHc_v%*i{>)L=R+}4kAXk_OwZx?0ocq5hmHJp(AkslyHfCxjk1roapo1EY8g4#r zB5PTcT=&q-8A~Xr=j$wUT)7FnXm2YtURMn=Xw&?~nz}x5fbgEx#|y)%$7{$EuHy)| z_$P^`XM=UrtW@RPeOTsQJ2ndW^qA<3Ij(&RA-n04ZNFC45WOR5A_Y;ZtmiRRjr4KJ zTaENl1&U2cBBFY98ZA-93U6&9hD^#I9>Ki#6ZfP@TP2_c8p)bX{ka|{7Nu{Ee4#JNzRapqj-sjW$%7ii%wc(CrnaW=m0P~sr{E+Z n83, 1998, 2001, 2002. -# -msgid "" -msgstr "" -"Project-Id-Version: diffutils 2.8\n" -"POT-Creation-Date: 2002-04-05 14:10-0800\n" -"PO-Revision-Date: 2002-04-03 14:06+0400\n" -"Last-Translator: Oleg S. Tihonov \n" -"Language-Team: Russian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=koi8-r\n" -"Content-Transfer-Encoding: 8bit\n" - -#: lib/c-stack.c:188 -msgid "program error" -msgstr " " - -#: lib/c-stack.c:189 -msgid "stack overflow" -msgstr " " - -#: lib/error.c:128 lib/error.c:156 -msgid "Unknown system error" -msgstr " " - -#: lib/freesoft.c:27 -msgid "" -"This program comes with NO WARRANTY, to the extent permitted by law.\n" -"You may redistribute copies of this program\n" -"under the terms of the GNU General Public License.\n" -"For more information about these matters, see the file named COPYING." -msgstr "" -"Copyright (C) %s Free Software Foundation, Inc.\n" -" , , .\n" -" \n" -" GNU.\n" -" \n" -" COPYING." - -#: lib/getopt.c:693 -#, c-format -msgid "%s: option `%s' is ambiguous\n" -msgstr "%s: `%s'\n" - -#: lib/getopt.c:718 -#, c-format -msgid "%s: option `--%s' doesn't allow an argument\n" -msgstr "%s: `--%s' \n" - -#: lib/getopt.c:723 -#, c-format -msgid "%s: option `%c%s' doesn't allow an argument\n" -msgstr "%s: `%c%s' \n" - -#: lib/getopt.c:741 lib/getopt.c:914 -#, c-format -msgid "%s: option `%s' requires an argument\n" -msgstr "%s: `%s' c \n" - -#: lib/getopt.c:770 -#, c-format -msgid "%s: unrecognized option `--%s'\n" -msgstr "%s: `--%s'\n" - -#: lib/getopt.c:774 -#, c-format -msgid "%s: unrecognized option `%c%s'\n" -msgstr "%s: `%c%s'\n" - -#: lib/getopt.c:800 -#, c-format -msgid "%s: illegal option -- %c\n" -msgstr "%s: -- %c\n" - -#: lib/getopt.c:803 -#, c-format -msgid "%s: invalid option -- %c\n" -msgstr "%s: -- %c\n" - -#: lib/getopt.c:833 lib/getopt.c:963 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "%s: %c c \n" - -#: lib/getopt.c:880 -#, c-format -msgid "%s: option `-W %s' is ambiguous\n" -msgstr "%s: `-W %s'\n" - -#: lib/getopt.c:898 -#, c-format -msgid "%s: option `-W %s' doesn't allow an argument\n" -msgstr "%s: `-W %s' \n" - -#: lib/regex.c:1367 -msgid "Success" -msgstr "" - -#: lib/regex.c:1370 -msgid "No match" -msgstr " " - -#: lib/regex.c:1373 -msgid "Invalid regular expression" -msgstr " " - -#: lib/regex.c:1376 -msgid "Invalid collation character" -msgstr " " - -#: lib/regex.c:1379 -msgid "Invalid character class name" -msgstr " " - -#: lib/regex.c:1382 -msgid "Trailing backslash" -msgstr " " - -#: lib/regex.c:1385 -msgid "Invalid back reference" -msgstr " " - -#: lib/regex.c:1388 -msgid "Unmatched [ or [^" -msgstr " [ [^" - -#: lib/regex.c:1391 -msgid "Unmatched ( or \\(" -msgstr " ( \\(" - -#: lib/regex.c:1394 -msgid "Unmatched \\{" -msgstr " \\{" - -#: lib/regex.c:1397 -msgid "Invalid content of \\{\\}" -msgstr " \\{\\}" - -#: lib/regex.c:1400 -msgid "Invalid range end" -msgstr " " - -#: lib/regex.c:1403 -msgid "Memory exhausted" -msgstr " " - -#: lib/regex.c:1406 -msgid "Invalid preceding regular expression" -msgstr " " - -#: lib/regex.c:1409 -msgid "Premature end of regular expression" -msgstr " " - -#: lib/regex.c:1412 -msgid "Regular expression too big" -msgstr " " - -#: lib/regex.c:1415 -msgid "Unmatched ) or \\)" -msgstr " ) \\)" - -#: lib/regex.c:8034 -msgid "No previous regular expression" -msgstr " " - -#: lib/xmalloc.c:63 -msgid "memory exhausted" -msgstr " " - -#: src/analyze.c:809 src/diff.c:1283 -#, c-format -msgid "Files %s and %s differ\n" -msgstr " %s %s \n" - -#: src/analyze.c:812 -#, c-format -msgid "Binary files %s and %s differ\n" -msgstr " %s %s \n" - -#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 -msgid "No newline at end of file" -msgstr " " - -#: src/cmp.c:43 -msgid "Written by Torbjorn Granlund and David MacKenzie." -msgstr " Torbjorn Granlund David MacKenzie." - -#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 -#, c-format -msgid "Try `%s --help' for more information." -msgstr " `%s --help' ." - -#: src/cmp.c:137 -#, c-format -msgid "invalid --ignore-initial value `%s'" -msgstr " --ignore-initial `%s'" - -#: src/cmp.c:146 -msgid "options -l and -s are incompatible" -msgstr " -l -s " - -#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 -#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 -#: src/util.c:286 src/util.c:293 -msgid "write failed" -msgstr " " - -#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 -#: src/sdiff.c:179 -msgid "standard output" -msgstr " " - -#: src/cmp.c:160 -msgid "-b --print-bytes Print differing bytes." -msgstr "-b --print-bytes ." - -#: src/cmp.c:161 -msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." -msgstr "" -"-i --ignore-initial= ." - -#: src/cmp.c:162 -msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" -msgstr "-i 1:2 --ignore-initial=1:2" - -#: src/cmp.c:163 -msgid "" -" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." -msgstr " 1 1 2 2." - -#: src/cmp.c:164 -msgid "-l --verbose Output byte numbers and values of all differing bytes." -msgstr "-l --verbose ." - -#: src/cmp.c:165 -msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." -msgstr "-n --bytes= ." - -#: src/cmp.c:166 -msgid "-s --quiet --silent Output nothing; yield exit status only." -msgstr "" -"-s --quiet --silent , ." - -#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 -msgid "-v --version Output version info." -msgstr "-v --version ." - -#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 -msgid "--help Output this help." -msgstr "--help ." - -#: src/cmp.c:177 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" -msgstr ": %s []... 1 [2 [1 [2]]]\n" - -#: src/cmp.c:179 -msgid "Compare two files byte by byte." -msgstr " ." - -#: src/cmp.c:183 -msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." -msgstr "1 2 -- , ." - -#: src/cmp.c:184 -msgid "" -"SKIP values may be followed by the following multiplicative suffixes:\n" -"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" -"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." -msgstr "" -" :\n" -"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" -"GB 1,000,000,000, G 1,073,741,824, T, P, E, Z, Y." - -#: src/cmp.c:187 -msgid "If a FILE is `-' or missing, read standard input." -msgstr " `-', ." - -#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 -msgid "Report bugs to ." -msgstr " ." - -#: src/cmp.c:231 -#, c-format -msgid "invalid --bytes value `%s'" -msgstr " --bytes `%s'" - -#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 -#, c-format -msgid "missing operand after `%s'" -msgstr " `%s'" - -#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 -#, c-format -msgid "extra operand `%s'" -msgstr " `%s'" - -#: src/cmp.c:477 -#, c-format -msgid "%s %s differ: byte %s, line %s\n" -msgstr "%s %s : %s, %s\n" - -#: src/cmp.c:495 -#, c-format -msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" -msgstr "%s %s : %s, %s %3o %s %3o %s\n" - -#: src/cmp.c:543 -#, c-format -msgid "cmp: EOF on %s\n" -msgstr "cmp: %s\n" - -#: src/diff.c:41 -msgid "" -"Written by Paul Eggert, Mike Haertel, David Hayes,\n" -"Richard Stallman, and Len Tower." -msgstr "" -" Paul Eggert, Mike Haertel, David Hayes,\n" -"Richard Stallman, Len Tower." - -#: src/diff.c:322 -#, c-format -msgid "invalid context length `%s'" -msgstr " `%s'" - -#: src/diff.c:405 -msgid "pagination not supported on this host" -msgstr " " - -#: src/diff.c:420 src/diff3.c:315 -msgid "too many file label options" -msgstr " " - -#: src/diff.c:498 -#, c-format -msgid "invalid width `%s'" -msgstr " `%s'" - -#: src/diff.c:502 -msgid "conflicting width options" -msgstr " " - -#: src/diff.c:526 -#, c-format -msgid "invalid horizon length `%s'" -msgstr " `%s'" - -#: src/diff.c:629 -#, c-format -msgid "`-%ld' option is obsolete; use `-%c %ld'" -msgstr " `-%ld' ; `-%c %ld'" - -#: src/diff.c:641 -#, c-format -msgid "`-%ld' option is obsolete; omit it" -msgstr " `-%ld' ; " - -#: src/diff.c:709 -msgid "--from-file and --to-file both specified" -msgstr " --from-file, --to-file" - -#: src/diff.c:832 -msgid "Compare files line by line." -msgstr " ." - -#: src/diff.c:834 -msgid "-i --ignore-case Ignore case differences in file contents." -msgstr "-i --ignore-case ." - -#: src/diff.c:835 -msgid "--ignore-file-name-case Ignore case when comparing file names." -msgstr "--ignore-file-name-case ." - -#: src/diff.c:836 -msgid "--no-ignore-file-name-case Consider case when comparing file names." -msgstr "--no-ignore-file-name-case ." - -#: src/diff.c:837 src/sdiff.c:186 -msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." -msgstr "" -"-E --ignore-tab-expansion , " -"." - -#: src/diff.c:838 src/sdiff.c:187 -msgid "-b --ignore-space-change Ignore changes in the amount of white space." -msgstr "" -"-b --ignore-space-change ." - -#: src/diff.c:839 -msgid "-w --ignore-all-space Ignore all white space." -msgstr "-w --ignore-all-space ." - -#: src/diff.c:840 src/sdiff.c:189 -msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." -msgstr "-B --ignore-blank-lines ." - -#: src/diff.c:841 src/sdiff.c:190 -msgid "" -"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." -msgstr "" -"-I --ignore-matching-lines= , \n" -" " -"" - -#: src/diff.c:842 src/sdiff.c:191 -msgid "--strip-trailing-cr Strip trailing carriage return on input." -msgstr "--strip-trailing-cr ." - -#: src/diff.c:844 -msgid "--binary Read and write data in binary mode." -msgstr "--binary ." - -#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 -msgid "-a --text Treat all files as text." -msgstr "-a --text ." - -#: src/diff.c:848 -msgid "" -"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " -"context.\n" -"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " -"context.\n" -" --label LABEL Use LABEL instead of file name.\n" -" -p --show-c-function Show which C function each change is in.\n" -" -F RE --show-function-line=RE Show the most recent line matching RE." -msgstr "" -"-c -C --context[=] ( 3) " -".\n" -"-u -U --unified[=] ( 3) \n" -" .\n" -" -L --label .\n" -" -p --show-c-function C-, .\n" -" -F --show-function-line= , " -"\n" -" ." - -#: src/diff.c:853 -msgid "-q --brief Output only whether files differ." -msgstr "-q --brief ." - -#: src/diff.c:854 -msgid "-e --ed Output an ed script." -msgstr "-e --ed ed." - -#: src/diff.c:855 -msgid "--normal Output a normal diff." -msgstr "--normal diff." - -#: src/diff.c:856 -msgid "-n --rcs Output an RCS format diff." -msgstr "-n --rcs RCS." - -#: src/diff.c:857 -msgid "" -"-y --side-by-side Output in two columns.\n" -" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" -" --left-column Output only the left column of common lines.\n" -" --suppress-common-lines Do not output common lines." -msgstr "" -"-y --side-by-side .\n" -" -W --width= " -".\n" -" ( 130)\n" -" --left-column .\n" -" --suppress-common-lines ." - -#: src/diff.c:861 -msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." -msgstr "" -"-D --ifdef= , `#ifdef '." - -#: src/diff.c:862 -msgid "" -"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." -msgstr "" -"---group-format= , " -"\n" -" ." - -#: src/diff.c:863 -msgid "--line-format=LFMT Similar, but format all input lines with LFMT." -msgstr "" -"--line-format= , ." - -#: src/diff.c:864 -msgid "" -"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." -msgstr "" -"---group-format= , " -"\n" -" ." - -#: src/diff.c:865 -msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." -msgstr "" -" `old', `new', `unchanged', -- `changed'." - -#: src/diff.c:866 -msgid "" -" GFMT may contain:\n" -" %< lines from FILE1\n" -" %> lines from FILE2\n" -" %= lines common to FILE1 and FILE2\n" -" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" -" LETTERs are as follows for new group, lower case for old group:\n" -" F first line number\n" -" L last line number\n" -" N number of lines = L-F+1\n" -" E F-1\n" -" M L+1" -msgstr "" -" :\n" -" %< 1\n" -" %> 2\n" -" %= , 1 2\n" -" %[-][][.[]]{doxX} printf\n" -" , " -":\n" -" F \n" -" L \n" -" N = L-F+1\n" -" E F-1\n" -" M L+1" - -#: src/diff.c:877 -msgid "" -" LFMT may contain:\n" -" %L contents of line\n" -" %l contents of line, excluding any trailing newline\n" -" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" -msgstr "" -" :\n" -" %L \n" -" %l , \n" -" %[-][][.[]]{doxX}n printf" - -#: src/diff.c:881 -msgid "" -" Either GFMT or LFMT may contain:\n" -" %% %\n" -" %c'C' the single character C\n" -" %c'\\OOO' the character with octal code OOO" -msgstr "" -" :\n" -" %% %\n" -" %c'' \n" -" %c'\\OOO' OOO" - -#: src/diff.c:886 -msgid "-l --paginate Pass the output through `pr' to paginate it." -msgstr "" -"-l --paginate `pr' ." - -#: src/diff.c:887 src/sdiff.c:198 -msgid "-t --expand-tabs Expand tabs to spaces in output." -msgstr "-t --expand-tabs ." - -#: src/diff.c:888 src/diff3.c:452 -msgid "-T --initial-tab Make tabs line up by prepending a tab." -msgstr "" -"-T --initial-tab ." - -#: src/diff.c:890 -msgid "-r --recursive Recursively compare any subdirectories found." -msgstr "-r --recursive ." - -#: src/diff.c:891 -msgid "-N --new-file Treat absent files as empty." -msgstr "-N --new-file ." - -#: src/diff.c:892 -msgid "--unidirectional-new-file Treat absent first files as empty." -msgstr "" -"--unidirectional-new-file " -"." - -#: src/diff.c:893 -msgid "-s --report-identical-files Report when two files are the same." -msgstr "-s --report-identical-files ." - -#: src/diff.c:894 -msgid "-x PAT --exclude=PAT Exclude files that match PAT." -msgstr "" -"-x --exclude= , " -"." - -#: src/diff.c:895 -msgid "" -"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." -msgstr "" -"-X --exclude-from= , -" -"\n" -" ." - -#: src/diff.c:896 -msgid "" -"-S FILE --starting-file=FILE Start with FILE when comparing directories." -msgstr "-S --starting-file= ." - -#: src/diff.c:897 -msgid "" -"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." -msgstr "" -"--from-file=1 1 .\n" -" 1 ." - -#: src/diff.c:898 -msgid "" -"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." -msgstr "" -"--to-file=2 2. 2 " -"." - -#: src/diff.c:900 -msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." -msgstr "" -"--horizon-lines= ." - -#: src/diff.c:901 src/sdiff.c:200 -msgid "-d --minimal Try hard to find a smaller set of changes." -msgstr "-d --minimal ." - -#: src/diff.c:902 -msgid "" -"--speed-large-files Assume large files and many scattered small changes." -msgstr "" -"--speed-large-files , \n" -" ." - -#: src/diff.c:907 -msgid "" -"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." -msgstr "" -" `1 2', `1 2', ` ...',\n" -" `... '." - -#: src/diff.c:908 -msgid "" -"If --from-file or --to-file is given, there are no restrictions on FILES." -msgstr " --from-file --to-file, ." - -#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 -msgid "If a FILE is `-', read standard input." -msgstr " `-', ." - -#: src/diff.c:920 -#, c-format -msgid "Usage: %s [OPTION]... FILES\n" -msgstr ": %s []... \n" - -#: src/diff.c:949 -#, c-format -msgid "conflicting %s option value `%s'" -msgstr " %s `%s'" - -#: src/diff.c:962 -msgid "conflicting output style options" -msgstr " " - -#: src/diff.c:976 -msgid "regular empty file" -msgstr " " - -#: src/diff.c:976 -msgid "regular file" -msgstr " " - -#: src/diff.c:978 -msgid "directory" -msgstr "" - -#: src/diff.c:981 -msgid "block special file" -msgstr " " - -#: src/diff.c:984 -msgid "character special file" -msgstr " " - -#: src/diff.c:987 -msgid "fifo" -msgstr "" - -#: src/diff.c:991 -msgid "socket" -msgstr "" - -#: src/diff.c:994 -msgid "message queue" -msgstr " " - -#: src/diff.c:997 -msgid "semaphore" -msgstr "" - -#: src/diff.c:1000 -msgid "shared memory object" -msgstr " " - -#: src/diff.c:1003 -msgid "typed memory object" -msgstr "" - -#: src/diff.c:1006 -msgid "weird file" -msgstr " " - -#: src/diff.c:1070 src/diff.c:1256 -#, c-format -msgid "Only in %s: %s\n" -msgstr " %s: %s\n" - -#: src/diff.c:1193 -msgid "cannot compare `-' to a directory" -msgstr " `-' " - -#: src/diff.c:1220 -msgid "-D option not supported with directories" -msgstr "-D option not supported with directories" - -#: src/diff.c:1229 -#, c-format -msgid "Common subdirectories: %s and %s\n" -msgstr " : %s %s\n" - -#: src/diff.c:1266 -#, c-format -msgid "File %s is a %s while file %s is a %s\n" -msgstr " %s %s, %s -- %s\n" - -#: src/diff.c:1345 -#, c-format -msgid "Files %s and %s are identical\n" -msgstr " %s %s \n" - -#: src/diff3.c:26 -msgid "Written by Randy Smith." -msgstr " Randy Smith." - -#: src/diff3.c:328 -msgid "incompatible options" -msgstr " " - -#: src/diff3.c:368 -msgid "`-' specified for more than one input file" -msgstr "`-' " - -#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 -#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 -msgid "read failed" -msgstr " " - -#: src/diff3.c:441 -msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." -msgstr "" -"-e --ed - -\n" -" -." - -#: src/diff3.c:442 -msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." -msgstr "" -"-E --show-overlap ,\n" -" ." - -#: src/diff3.c:443 -msgid "-A --show-all Output all changes, bracketing conflicts." -msgstr "" -"-A --show-all , ." - -#: src/diff3.c:444 -msgid "-x --overlap-only Output overlapping changes." -msgstr "-x --overlap-only ." - -#: src/diff3.c:445 -msgid "-X Output overlapping changes, bracketing them." -msgstr "-X , ." - -#: src/diff3.c:446 -msgid "-3 --easy-only Output unmerged nonoverlapping changes." -msgstr "-3 --easy-only ." - -#: src/diff3.c:448 -msgid "-m --merge Output merged file instead of ed script (default -A)." -msgstr "" -"-m --merge ed ( -A)." - -#: src/diff3.c:449 -msgid "-L LABEL --label=LABEL Use LABEL instead of file name." -msgstr "-L --label= ." - -#: src/diff3.c:450 -msgid "-i Append `w' and `q' commands to ed scripts." -msgstr "-i `w' `q' ed." - -#: src/diff3.c:453 src/sdiff.c:202 -msgid "--diff-program=PROGRAM Use PROGRAM to compare files." -msgstr "" -"--diff-program= " -"." - -#: src/diff3.c:465 -#, c-format -msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" -msgstr ": %s []... - - -\n" - -#: src/diff3.c:467 -msgid "Compare three files line by line." -msgstr " ." - -#: src/diff3.c:673 -msgid "internal error: screwup in format of diff blocks" -msgstr " : " - -#: src/diff3.c:971 -#, c-format -msgid "%s: diff failed: " -msgstr "%s: : " - -#: src/diff3.c:993 -msgid "internal error: invalid diff type in process_diff" -msgstr " : `process_diff'" - -#: src/diff3.c:1018 -msgid "invalid diff format; invalid change separator" -msgstr " ; " - -#: src/diff3.c:1242 -msgid "invalid diff format; incomplete last line" -msgstr " ; " - -#: src/diff3.c:1265 src/sdiff.c:273 -#, c-format -msgid "subsidiary program `%s' not executable" -msgstr " `%s'" - -#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 -#, c-format -msgid "subsidiary program `%s' not found" -msgstr " `%s'" - -#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 -#, c-format -msgid "subsidiary program `%s' failed" -msgstr " `%s' " - -#: src/diff3.c:1294 -msgid "invalid diff format; incorrect leading line chars" -msgstr " ; " - -#: src/diff3.c:1370 -msgid "internal error: invalid diff type passed to output" -msgstr " : " - -#: src/diff3.c:1647 src/diff3.c:1704 -msgid "input file shrank" -msgstr " " - -#: src/dir.c:162 -#, c-format -msgid "cannot compare file names `%s' and `%s'" -msgstr " `%s' `%s'" - -#: src/sdiff.c:35 -msgid "Written by Thomas Lord." -msgstr " ." - -#: src/sdiff.c:183 -msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." -msgstr "-o --output= , ." - -#: src/sdiff.c:185 -msgid "-i --ignore-case Consider upper- and lower-case to be the same." -msgstr "-i --ignore-case ." - -#: src/sdiff.c:188 -msgid "-W --ignore-all-space Ignore all white space." -msgstr "-W --ignore-all-space ." - -#: src/sdiff.c:194 -msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." -msgstr "" -"-w --width= .\n" -" ( 130)" - -#: src/sdiff.c:195 -msgid "-l --left-column Output only the left column of common lines." -msgstr "-l --left-column ." - -#: src/sdiff.c:196 -msgid "-s --suppress-common-lines Do not output common lines." -msgstr "-s --suppress-common-lines ." - -#: src/sdiff.c:201 -msgid "" -"-H --speed-large-files Assume large files and many scattered small changes." -msgstr "" -"-H --speed-large-files , \n" -" ." - -#: src/sdiff.c:214 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 FILE2\n" -msgstr ": %s []... 1 2\n" - -#: src/sdiff.c:215 -msgid "Side-by-side merge of file differences." -msgstr " ." - -#: src/sdiff.c:327 -msgid "cannot interactively merge standard input" -msgstr " " - -#: src/sdiff.c:588 -msgid "both files to be compared are directories" -msgstr " -- " - -#: src/sdiff.c:853 -msgid "" -"ed:\tEdit then use both versions, each decorated with a header.\n" -"eb:\tEdit then use both versions.\n" -"el:\tEdit then use the left version.\n" -"er:\tEdit then use the right version.\n" -"e:\tEdit a new version.\n" -"l:\tUse the left version.\n" -"r:\tUse the right version.\n" -"s:\tSilently include common lines.\n" -"v:\tVerbosely include common lines.\n" -"q:\tQuit.\n" -msgstr "" -"ed:\t , .\n" -"eb:\t .\n" -"el:\t .\n" -"er:\t .\n" -"e:\t .\n" -"l:\t .\n" -"r:\t .\n" -"s:\t , .\n" -"v:\t , .\n" -"q:\t.\n" diff --git a/src/bin/diffutils/po/sv.gmo b/src/bin/diffutils/po/sv.gmo deleted file mode 100644 index e17c11372b26cdd6b664f6c6aa6b3472817b699a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22549 zcmb`P3veCRdEZx!omh|^+j?1+BI^hi2vNdb0-z*PpkNUsKoBB8Kp;q(p_p)S@8V*K zdv~vP_X31fH<8_>aURaYao$axw6T*WcH$&%lXekC|oMq`A0uO`NS*J_jck)jCNB;x(9{zg- zq}+QZz$x%U;0vJ8x5AX~0vZ2f^daMTEC->_V?PB_?lEa+h9#jbnTM%?L!gWUdK;N9 zV|@H;K-znpIe6~_w;lc(NWYK&G01!e8Jl+$Ou_epp9Gob;BSJAbMVjX`+Mojdxj!X z?mvRkA7gmpqu}GifV;q61z zk#dJ#23gZXH$mj#(D#D0f9MxL>K*#WAap^lzP7o4)fo?06z=sZ?R!7qV~$%D6_`dSeB zKSduNc~7xcGM=Ya97=!kF7tRRDEu%8{xJ9q_;*0sdg}K<*6V4?co)DEAai+I<}E1n z9s@rQQvc~MgYfl;jOQs(_?q#Itb_31$ZH_$GV(JZ;~)7)?z{8@U40oZbnu1G40zIE z0Fvi_2)rBo3HW#l{3P$RU-?hqo4~Jt^nC=7`5k!xWPC^H%Y*huu7I?COCOz zAA@$1Keht$ZEO{!{#Xn`)3Mh<<}>zDka3Uw2*}!veH#3F@K-_TG4>BY_+;$2!9(C5 zf{!yLp%>#GKLOqcUIqui4UqQ7(Fb=i-|-LgzJ*B9-dzbxJi_~rBbw0BJL`GR9S6^W zG9GySxi5m$d+xu2tn)GYmVS;s2h!)UWsq?kYk-e}A9L@Ybtv?N=EwdIXb@?kKj}Dq zdC>NF%i%}BGrS93PlI0qk)P*%5Z-xS`hkwme;;@r{97RFHSuO}0c5SD-UM?KeKPTP z!8!2HK-S^JG&lv;ZT^X$1DWRu;g?gWu4lj(_)qFHju(X9u(%pnONp7k?gnCn$6l{Gvl?pRq1}85{z?0z&(x$3fE474Rtd z8VC)Rei3BcFaHIH&`j3%W!6U4`(@!v=KS*agO7oq2kHN1=|}Q^AA~;3j8W*md=g}w z%OXe2fB9qJ*Molpr2g`+fCl_+kUGo%9sD{(h&kN#?I1J~y|?lS@J*nUm-k-->38Ly zfb_faZ@^*Cy9lj>pDvDqkAO12CqP*T+Q0Z?AmuOqZIC%#+yRex-X-QN{Bda(r2R`m z-+Mr*_g3(Akg;6)C^!iItV8L4fcO6fvSye56l8vvN%H+NJSp?J%$Q{Umt|a%Kjre5 zK>E3S6+~BFt~+GzLZ8b&1HxaIh41eJe;1VUe+a^Vm;X0-7bzuek%X@DdzvJ)lV5{G zUGHm1&_w)hkty$+NgpK1@0Umy^vVA77lBtvpCzr6zLf+Wyw^zbJ5Rbo`UpvAD)g(6 z7D$_ACF^mmhgpCbv6!=s|t^!GUbe#|}pfWvP1HeQ}` zA1;AEO8PMAdr3b{`U%o^le&Mu%*$occe#&K;Fx=!2jM-@vm%rFdxd|62jn+R68@`_ zmPxZD`F+ZQ=u_|KNbrgNevp4ZM5@_W{r6t?{EgsZ*LQh*k@O3DzWp`c-%na09VMM3 z{XFS9=~qb!X^!+!(qAFT?;cW<^tJNB@6)7jAw5BQi6p-b3*PJCTSz0Mkn|=Ja^n3> z(l$wcpCi4Q^jAqAAa(z~$-Vq6_`{@6kiL&JNRpp#L1bC8D6J=>d}beuQ*_^dRX5 z=^dovcZ!Ga)E8rBqI^9}&FqPkyK0Ryp>b+bJ{pvlz3%vanTj(^ubjPhwQ_Z7dFJ%BYp>Ok zoA3YN{LISA%(5}9G>Y>zKg+k7T-FM!W=-g#x!RR+FPRC_&;*PzX*7~8!PLazmZ_&n zyES6?22rX(7HUq?sM#D#QX%UZW7eWH%XO|MZZ}uM)OA58Oei=Y@4RuPO|s?)HEHJk zGf!J8N!v3t?{{7oXz=MVkAM3wFulo&hjE@2ZCbiE_GgTk@Mg8quCe}5ciZG?5V2Zy znY^r;t#}}zl$q<$Z+OI9rw;&1UvI}SS6mNk!xi|bC}%53 zewj-%7dE1nGOeZeg>!RDV`g{6R2@6tTLYp&d&@ik`82u788ettlNm_XXFZ;e3s@k$qycsm2TAv(O z_WDqDC>u7lB+TOB+yug!ObuSGx0@`lZKfSEG76Y3mFoipH-?LuvSGJ4&I` zfo=HypQA(nGPA$q;knWWjdYq)tpK1AV&$IuqS2HBQdEg@ zXR9ak?WnRnYZoU6jpB3?XHl)N7`Ghj0V zOe}^uY_@XYtE0yFei&rieiAnj9LHeoxEVr@8sv+U%`j~Qt(Gi$XZ}-CFM05 zuZu>g0GywVFxPrXyw-@Sxlrzu)O7r|+6dwe%ekgxHcMl(wVoh}mV?!updT$y8`I|e z)B<*#hSqA~+N6DRgLgw$21UqZkmmY(wV+l*$HEOVl<7jB$4PFocB_@7Ig?iHR7hVG zW}a`mvNDnftA2R16~L3M=-yG++Mz5Qg>VI2A$rmVlw6LSCCN%sJK7#dx3fy||6lw& zXO_Dsg$A##vrA$tJ2KMmnsJ`Ec&*aRWGQ1R3hX-Dr}{Et|BC|$2YrjqDJAK9&OdNn)JIOtweE@M+l58 zm01WjST|(FIxOuL9t{3&*a~Co%tRc9DDqlyu?J|h2YN@Ic9ixPztw08whc|Om=mN%9 zssPEL5R)&(QAh1tMl2`g_)^*xD-tx5Hu{8>?47B$qdNrOdXHvFwhPW96eXaa>9IXw=dqI4iob={mc<>xTq-H{gy9>o=D;fxbS zRS!j36~sxALv2bZ-%Qx^;1Y;B7qw{DUMQyKWn0l)*?1~fi+=R z(Ja*EbL+~2z`(E@^_>F6%W5TOuE;?!xqIT(qcas zipQRNNC%cCPOC182hL34Rvr-G&9JdOf|yv5n zOC5^i7&4=<+DNAX%hnJp>f^vIpq;4Pz@BH!PNYWcd|A-R?dKIySHV@F31J2A@)yrIgL zes4;@&W!iE%YAISmS37u7Il_YA6!6YJyta1UY%nW#lu^d!pJrXg&@rY_6IZdKOXIE~mAr70U z!b+K!ucu+*E2+KQU!vrBRdwVGRy;9S7xWDCx;&1lLp46EXKT}Q%VUOrIla~{FbUb(ZB z9_#3vctm7bPGd=Ng8v{JSM^dvN9fouR6JS=^jYd%_jM}GD3gQi5$fQ&qgLXYI26vf z?X7W8F?TAr%3hF$I2;rM?ajH*I3ezcyvmVoX5>Jjlga6Ep#D@@tSe8CWW^7C<+WEn zSbj%KRYP^z)3DxVQ!m>v(OhiS%0e8tuq{WwcfRZ|ybv}yd!hPz&}R2i^Uf#M#LsE?!DQ{P#91;~MExXL(;Us7@TCsO~xS zz1ps;I(>l$zaF>!b{;jdlRQqGGdlS%*=@S#u0PHj(ALqSl3CISB7aX0)*UZ)76N``870E z-&zEV+TH5Yx+89Zx_v~-wX67wnYSXxY3>|QOmgT>rp_;#%TvqCQ|DK%AVqBI83CIn zF~FFGX2j8u60i|$RR*pkZP;U*Wv@jdVjO_VksI3;cL3MvV*tyJS&`=OIGW`F-R${` zW;Tp*LKAQJp2UWz?dmBWW%6~ig*;IzR=G{%X0hSHO!Rmq4v z)y(O|r7LsiXDi-HaUUV#m?3fNeA+hGQ91UAaadPlZ$}mHV!RP2Td3r1M4@TIG)+=I z>h6;co)p#i%9CAR4(pf0U0<%sm#g2@_2regJOaH?V6AD@nR~BjG%87B$v@l~hh__X|PwTo`{KLI|$=LtG0L2V5{;vYI80 zFb_|dguYCa->yg-j-rLCkwz#u+&S6qa0mwwa;hmjDW}rHaNcSoLDB0mI9zN$$-%fh zsg^?dAYx*?894mh<@0(RaEd$W@)>~cRJu;W_m(Jm9HS+dC!$p3p(xkm(i^J^dJUOZ znwH){SDUQ~GqZR`6qKlHHj;XRDJl|aakoUOR9%l<1*|)Z$&`yyTQuuwK|Rqjry#+$ z$2Hg8Gc{HR0gjCa2Emz~_Ms_Ujq%z5 z-Iwgn^uQvoPTc)+n~m&%hki~2D65w$c4gM0wZw~J<*Gbd?OKu!-*QTfG;L4}CCV|n z)o>GVHcO0Li^pa1?UwMmmRphgSFhPA?gSiaa-g_D+Wiz7#xc2{PYEA3IG zDWifN1=~)&nC)V_PL|sdxw8ekSGNQx%DA&O);q2vk}4=go_1$@KfyqRSfVUC7wzRB z_LWR=xj2!62Sqs4(-xuX40}%vI~R(G6PAUjf`D7Dvi)^?pVfDiR&I3Q&Asj!W?PJj zd9@w3L(e&{B_{-HEUcZf6G+3Mhv*A-*rJEJ8N_pkBVuEFuLk&FFW)#_@Cui~T0`}c z?OnB3`f+m2VzprLNmXKo-`8TIp_f4^n8VE`S-k-*y$l^10=YQNvbkL2R7_s22kzL2 z?GYQrNG?2!kqBkneYtl~woE9z$sq*Wa1{3Kis>1IC+?=+hN-r-=c9#E6Oq_E`mHd+ z^yxh9^{XSwQkux@{JENsJc~naFZk76HRF|Im9f!*rNtHhv|L<~?N6iRCd~Ng=(s=n zj6eFU8GB}8Y}6k;J}L$MWjt+Zrl;Ide{9^09h(?E`t&IN>cBjaB0hdkjJpGyO_!j|}T>*j@Q^JF7Z$9iC4 zZegY~m9fg`00)}l9{MYgWdi5!W`3mA2%`9eocg95yiP`0;vYZ$?DGVml!aw*Y>fOF z#7<;r!W>_X2uCpH)GpdkZ`MQN9#XR`Au1aTKZ@gUeV6Ug0Z~Xbj*D;{gJv^e7}brK z_kBS~?z?!1$p)UvMpEmJJ?hsF(MPG+8qR!ob@SK>KI;A6i9M=^1XtLR*dmemcVh%R zt;<7K@X@K|nd#}h!AGYS&s|uVx>QESG$QL>RLt6~)VN%YtASin_6wJYRoY?S7dN6h zUdgS-4de!YnBrWM)KiYKMvRV1ztx3E4g0+}0O=M1NP*0kZ3lO_t`m(v%JA{~WpSew z5FOTVRJzm9qXXBKOEvm0R$E6f#93|EH)MIE(bl8IU^8nV)iT+5nu*`EJv+n zL|4>M_s0@7itU{7m*Bx=;)jHugM=9kj+j9V{-Ck!I9LW64OVQRkrdPlu7K6@wZRGv zolRP;z}!Ne8Af<^aS4~5MG-=ZS%axNjNuB5_bE`u8f6<%<3>-g5yQqglK>XL9F#9( zJSf&k%tm9ox&e=~N2eh|e%MVnc4d5Pji6o+*eR7UM@c zipMMyD&en5sA;agT6F&=+4U>IIMmn>Y>iY z4))d2#uCECSoLJ+sEeqgenCakQJ#!oA`ABjeXT)7LQ#=s7)o?l5lDP*~sX zcZZ9qgy^@J2S*mIK!BY%+s3Oy$VFq^ejr77(FJ7(_PkK{4kC=O2z7RYY})MdTOu`g z(Ya|8) zB8!CaIwUBz1XSJ=WK`DG$&@tH$uxs>BNQ5%RKgQBbT__%&rdUN5OKt+blQq^3nmO6 z#;X!iq9I3W>a{J6JUTCvDkG10D@Ue&j<}k2(N)p-RLX$(T4k5cao9L7r5vi*_hhs(FjRFm8mb z>qnDaAxkB_b&y?}<&EN&x=l-mnIr3%v&vSY>1=<wSJ)Eo zge{fzB>PEg5j1egGUkR{1Bi2)G`W+D;psAR$+cHTF5OXk-CCyHm7weU{kpm=C7~l4 zcOnV&a6puk`VpH^1I{t0CHiSYZ|e}r8>K>L`Qw-i&?3}HCA?p#6B*7g;hG_g*|rlo z3#0MY#W5<|y`fH1>1v1!tnZ?&3vY`cJU&sEfT$X$JI$TAuIjL42v(F}3>)`UE}!_; z#0R_Ml)gorQtY-F>cq@WEi6pUi$JI=F+F!)o+GoM4>Ywu{Hf${wnSMVmQ$Q3b*j)Z zOq#u}*w8*T`+85NXS=Sqd8iRraoX({_{1u##_c zC$;X5Ri3IJ)Pa$5w9*{|RkqPBu<91{n4AvzJGx_UG*qXlE@#3J8Ra%P^vsRW@)you zkd>3MWRvdI?HJZ?)ghw&=EkZaO;X;TD9RRtKOVpc+IthEd6RoC(cInSqZGY$M?sZ? z;~HC5YQ3GdxeY74U8h6&vpCsz(he6l@APn!uv#&#J(bK`R1-OR%}C@>}lTzM7R_qKvA(3=);P+47^VS z)Lwh8T&ZRWr6)A%4TG|3)*hJ>kx}0NQt-C1Q2h=3mhR&im<@+g15_@cWfHYwgh2^W zl)%`|dYB#7qeKWSJ8r~{{`LnEEmj;Zi%PdO)#85s8`T9B>VI z^VkW~D?oauZp#gLPQH#)6BfPGP;rbx`wFK z&gVT9y#?un&4?75LsQ^($={Q>XFZEH5*@)>mSxmeJ76TnT-(4#=^6fs%y|?%$4Z<0k4_h#dAI`x41)@uLR5N z_DlQfCN40W7Y+IqzyFk;6Y2?2aWTGTX;aFb$U5^}Z7-99mWYywzTw@`%a zNEM-@=zGEpLjJ717K#>OLG97jdV7<2CH{;{BCqbW6&r?iaOuLGEV`BEiJv;S0!}+) z?=Id|nld}kK+}9*wT5~ZM%^YHL7Kv`!zu%EStxg#srI<#P zSu9~W`?f~|1Z_E;xi4-@*H`1V5=2NfIh#rBL7kOTju+NUw+XKac}EYUG0~OW);cFj zVvc;GQ*e7Q346n}4l2yPQI891y^V6}z}}Tg`oB7$No`$&v%JD-LZ^$-%&g((-WO@; z%IiH#=~Jk4HkdW^u&TEO?Xif@O4i!AWI1P9+&!0}2%YYF3PTnVI6PTBm9|o+K2%UU zph`hRcUVUFnwTI7(kgP~jxZzGW&cpEl-c=n_*VLb=o5FxxN*y~w?@USrQz?|&}Vkh z?INSKILHwmV)u_<(vkJR!^PN))E{R?#eIqO(WoX0qKM2A>xmn#9!mGkJ|Rub;@(cQ zrMtqDM~TdW%$|%j*YQhC)<*8(By$P(qz%nF>_JN+s9P|&JX$9o?^icrg%2VV;sCM} zQP3w_H+>toQn_pDldb2N#3HET^pFM9#5Lk%Gbi{s&kK=&(dAE>gxs0$28{MY8S4M2 M!OP^naz7dVFQKGDt^fc4 diff --git a/src/bin/diffutils/po/sv.po b/src/bin/diffutils/po/sv.po deleted file mode 100644 index 6d62ce2af7..0000000000 --- a/src/bin/diffutils/po/sv.po +++ /dev/null @@ -1,921 +0,0 @@ -# Swedish messages for diffutils. -# Copyright 1996, 2001, 2002 Free Software Foundation, Inc. -# Gran Uddeborg , 1996, 2001, 2002. -# $Revision: 1.1 $ -# -msgid "" -msgstr "" -"Project-Id-Version: diffutils 2.7.10\n" -"POT-Creation-Date: 2002-04-05 14:10-0800\n" -"PO-Revision-Date: 2002-03-12 17:03+0100\n" -"Last-Translator: Gran Uddeborg \n" -"Language-Team: Swedish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=iso-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" - -#: lib/c-stack.c:188 -msgid "program error" -msgstr "programfel" - -#: lib/c-stack.c:189 -msgid "stack overflow" -msgstr "stackspill" - -#: lib/error.c:128 lib/error.c:156 -msgid "Unknown system error" -msgstr "Oknt systemfel" - -#: lib/freesoft.c:27 -msgid "" -"This program comes with NO WARRANTY, to the extent permitted by law.\n" -"You may redistribute copies of this program\n" -"under the terms of the GNU General Public License.\n" -"For more information about these matters, see the file named COPYING." -msgstr "" -"Detta program kommer UTAN GARANTI, s lngt lagen tillter. Du kan\n" -"distribuera kopior av detta program i enlighet med villkoren i GNU\n" -"General Public License. Fr mer information om detta, se filen som\n" -"heter COPYING." - -#: lib/getopt.c:693 -#, c-format -msgid "%s: option `%s' is ambiguous\n" -msgstr "%s: flaggan \"%s\" r tvetydig\n" - -#: lib/getopt.c:718 -#, c-format -msgid "%s: option `--%s' doesn't allow an argument\n" -msgstr "%s: flaggan \"--%s\" tar inget argument\n" - -#: lib/getopt.c:723 -#, c-format -msgid "%s: option `%c%s' doesn't allow an argument\n" -msgstr "%s: flaggan \"%c%s\" tar inget argument\n" - -#: lib/getopt.c:741 lib/getopt.c:914 -#, c-format -msgid "%s: option `%s' requires an argument\n" -msgstr "%s: flaggan \"%s\" behver ett argument\n" - -#: lib/getopt.c:770 -#, c-format -msgid "%s: unrecognized option `--%s'\n" -msgstr "%s: oknd flagga \"--%s\"\n" - -#: lib/getopt.c:774 -#, c-format -msgid "%s: unrecognized option `%c%s'\n" -msgstr "%s: oknd flagga \"%c%s\"\n" - -#: lib/getopt.c:800 -#, c-format -msgid "%s: illegal option -- %c\n" -msgstr "%s: otillten flagga -- %c\n" - -#: lib/getopt.c:803 -#, c-format -msgid "%s: invalid option -- %c\n" -msgstr "%s: ogiltig flagga -- %c\n" - -#: lib/getopt.c:833 lib/getopt.c:963 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "%s: flaggan behver ett argument -- %c\n" - -#: lib/getopt.c:880 -#, c-format -msgid "%s: option `-W %s' is ambiguous\n" -msgstr "%s: flaggan \"-W %s\" r tvetydig\n" - -#: lib/getopt.c:898 -#, c-format -msgid "%s: option `-W %s' doesn't allow an argument\n" -msgstr "%s: flaggan \"-W %s\" tar inget argument\n" - -#: lib/regex.c:1367 -msgid "Success" -msgstr "Lyckades" - -#: lib/regex.c:1370 -msgid "No match" -msgstr "Ingen match" - -#: lib/regex.c:1373 -msgid "Invalid regular expression" -msgstr "Ogiltigt reguljruttryck" - -#: lib/regex.c:1376 -msgid "Invalid collation character" -msgstr "Ogiltigt sorteringstecken" - -#: lib/regex.c:1379 -msgid "Invalid character class name" -msgstr "Ogiltigt namn p teckenklass" - -#: lib/regex.c:1382 -msgid "Trailing backslash" -msgstr "Avslutande omvnt snedstreck" - -#: lib/regex.c:1385 -msgid "Invalid back reference" -msgstr "Ogiltig baktreferens" - -#: lib/regex.c:1388 -msgid "Unmatched [ or [^" -msgstr "Oparad [ eller [^" - -#: lib/regex.c:1391 -msgid "Unmatched ( or \\(" -msgstr "Oparad ( eller \\(" - -#: lib/regex.c:1394 -msgid "Unmatched \\{" -msgstr "Oparad \\{" - -#: lib/regex.c:1397 -msgid "Invalid content of \\{\\}" -msgstr "Ogiltigt innehll i \\{\\}" - -#: lib/regex.c:1400 -msgid "Invalid range end" -msgstr "Ogiltigt intervallslut" - -#: lib/regex.c:1403 -msgid "Memory exhausted" -msgstr "Minnet slut" - -#: lib/regex.c:1406 -msgid "Invalid preceding regular expression" -msgstr "Fregende reguljruttryck ogiltigt" - -#: lib/regex.c:1409 -msgid "Premature end of regular expression" -msgstr "Frtida slut p reguljruttryck" - -#: lib/regex.c:1412 -msgid "Regular expression too big" -msgstr "Fr stort reguljruttryck" - -#: lib/regex.c:1415 -msgid "Unmatched ) or \\)" -msgstr "Oparad ) eller \\)" - -#: lib/regex.c:8034 -msgid "No previous regular expression" -msgstr "Inget fregende reguljruttryck" - -#: lib/xmalloc.c:63 -msgid "memory exhausted" -msgstr "minnet slut" - -#: src/analyze.c:809 src/diff.c:1283 -#, c-format -msgid "Files %s and %s differ\n" -msgstr "Filerna %s och %s skiljer\n" - -#: src/analyze.c:812 -#, c-format -msgid "Binary files %s and %s differ\n" -msgstr "Binrfilerna %s och %s skiljer\n" - -#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 -msgid "No newline at end of file" -msgstr "Ingen nyrad vid filslut" - -#: src/cmp.c:43 -msgid "Written by Torbjorn Granlund and David MacKenzie." -msgstr "Skrivet av Torbjrn Granlund och David MacKenzie." - -#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 -#, c-format -msgid "Try `%s --help' for more information." -msgstr "Frsk med \"%s --help\" fr mer information." - -#: src/cmp.c:137 -#, c-format -msgid "invalid --ignore-initial value `%s'" -msgstr "ogiltigt --ignore-initial-vrde \"%s\"" - -#: src/cmp.c:146 -msgid "options -l and -s are incompatible" -msgstr "flaggorna -l och -s r motstridiga" - -#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 -#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 -#: src/util.c:286 src/util.c:293 -msgid "write failed" -msgstr "skrivning misslyckades" - -#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 -#: src/sdiff.c:179 -msgid "standard output" -msgstr "standard ut" - -#: src/cmp.c:160 -msgid "-b --print-bytes Print differing bytes." -msgstr "-b --print-bytes Skriv ut byte som skiljer." - -#: src/cmp.c:161 -msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." -msgstr "" -"-i HOPP --ignore-initial=HOPP Hoppa ver de HOPP frsta byten i indata." - -#: src/cmp.c:162 -msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" -msgstr "-i HOPP1:HOPP2 --ignore-initial=HOPP1:HOPP2" - -#: src/cmp.c:163 -msgid "" -" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." -msgstr "" -" Hoppa ver de HOPP1 frsta byten i FIL1 och de HOPP2 frsta byten i FIL2." - -#: src/cmp.c:164 -msgid "-l --verbose Output byte numbers and values of all differing bytes." -msgstr "-l --verbose Skriv ut bytenummer och vrde fr alla skiljande byte." - -#: src/cmp.c:165 -msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." -msgstr "-n GRNS --bytes=GRNS Jmfr hgst GRNS byte." - -#: src/cmp.c:166 -msgid "-s --quiet --silent Output nothing; yield exit status only." -msgstr "-s --quiet --silent Skriv inget; ge endast en slutstatus." - -#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 -msgid "-v --version Output version info." -msgstr "-v --version Visa versionsinformation." - -#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 -msgid "--help Output this help." -msgstr "--help Visa detta hjlpmeddelande." - -#: src/cmp.c:177 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" -msgstr "Anvndning: %s [FLAGGA]... FIL1 [FIL2 [HOPP1 [HOPP2]]]\n" - -#: src/cmp.c:179 -msgid "Compare two files byte by byte." -msgstr "Jmfr tv filer byte fr byte." - -#: src/cmp.c:183 -msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." -msgstr "HOPP1 och HOPP2 r antalet byte att hoppa ver i varje fil." - -#: src/cmp.c:184 -msgid "" -"SKIP values may be followed by the following multiplicative suffixes:\n" -"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" -"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." -msgstr "" -"HOPP-vrden kan fljas av fljande mutiplikativa suffix:\n" -"kB 1000, K 1024, MB 1 000 000, M 1 048 576\n" -"GB 1 000 000 000, G 1 073 741 824, och s vidare fr T, P, E, Z, Y." - -#: src/cmp.c:187 -msgid "If a FILE is `-' or missing, read standard input." -msgstr "Om FIL r \"-\" eller utelmnats, ls standard in." - -#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 -msgid "Report bugs to ." -msgstr "" -"Rapportera fel till .\n" -"Rapportera synpunkter p den svenska versttningen till ." - -#: src/cmp.c:231 -#, c-format -msgid "invalid --bytes value `%s'" -msgstr "ogiltigt --bytes-vrde \"%s\"" - -#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 -#, c-format -msgid "missing operand after `%s'" -msgstr "saknad operand efter \"%s\"" - -#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 -#, c-format -msgid "extra operand `%s'" -msgstr "extra operand \"%s\"" - -#: src/cmp.c:477 -#, c-format -msgid "%s %s differ: byte %s, line %s\n" -msgstr "%s %s skiljer: byte %s, rad %s\n" - -#: src/cmp.c:495 -#, c-format -msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" -msgstr "%s %s skiljer: byte %s, rad %s r %3o %s %3o %s\n" - -#: src/cmp.c:543 -#, c-format -msgid "cmp: EOF on %s\n" -msgstr "cmp: EOF i %s\n" - -#: src/diff.c:41 -msgid "" -"Written by Paul Eggert, Mike Haertel, David Hayes,\n" -"Richard Stallman, and Len Tower." -msgstr "" -"Skrivet av Paul Eggert, Mike Haertel, DAvid Hayes,\n" -"Richard Stallman och Len Tower." - -#: src/diff.c:322 -#, c-format -msgid "invalid context length `%s'" -msgstr "ogiltig omgivningslngd \"%s\"" - -#: src/diff.c:405 -msgid "pagination not supported on this host" -msgstr "sidvisning stdjs ej p denna vrd" - -#: src/diff.c:420 src/diff3.c:315 -msgid "too many file label options" -msgstr "fr mnga etikettflaggor" - -#: src/diff.c:498 -#, c-format -msgid "invalid width `%s'" -msgstr "ogiltig bredd \"%s\"" - -#: src/diff.c:502 -msgid "conflicting width options" -msgstr "konflikt mellan breddflaggor" - -#: src/diff.c:526 -#, c-format -msgid "invalid horizon length `%s'" -msgstr "ogiltig horisontlngd \"%s\"" - -#: src/diff.c:629 -#, c-format -msgid "`-%ld' option is obsolete; use `-%c %ld'" -msgstr "flaggan \"-%ld\" r frldrad; anvnd \"-%c %ld\"" - -#: src/diff.c:641 -#, c-format -msgid "`-%ld' option is obsolete; omit it" -msgstr "flaggan \"-%ld\" r frldrad; anvnd den inte" - -#: src/diff.c:709 -msgid "--from-file and --to-file both specified" -msgstr "bde --from-file och --to-file angavs" - -#: src/diff.c:832 -msgid "Compare files line by line." -msgstr "Jmfr filer rad fr rad." - -#: src/diff.c:834 -msgid "-i --ignore-case Ignore case differences in file contents." -msgstr "-i --ignore-case Bortse frn skiftlge i filinnehll." - -#: src/diff.c:835 -msgid "--ignore-file-name-case Ignore case when comparing file names." -msgstr "--ignore-file-name-case Bortse frn skiftlge nr filnamn jmfrs." - -#: src/diff.c:836 -msgid "--no-ignore-file-name-case Consider case when comparing file names." -msgstr "" -"--no-ignore-file-name-case Ta hnsyn till skiftlge nr filnamn jmfrs." - -#: src/diff.c:837 src/sdiff.c:186 -msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." -msgstr "" -"-E --ignore-tab-expansion Ignorera ndringar p grund av " -"tabulatorexpansion." - -#: src/diff.c:838 src/sdiff.c:187 -msgid "-b --ignore-space-change Ignore changes in the amount of white space." -msgstr "-b --ignore-space-change Bortse frn ndringar i antalet blanka." - -#: src/diff.c:839 -msgid "-w --ignore-all-space Ignore all white space." -msgstr "-w --ignore-all-space Ignorera alla blanktecken." - -#: src/diff.c:840 src/sdiff.c:189 -msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." -msgstr "" -"-B --ignore-blank-lines Ignorera ndringar i form av enbart blanka rader." - -#: src/diff.c:841 src/sdiff.c:190 -msgid "" -"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." -msgstr "" -"-I RU --ignore-matching-lines=RU Ignorera ndringar vars rader matchar RU." - -#: src/diff.c:842 src/sdiff.c:191 -msgid "--strip-trailing-cr Strip trailing carriage return on input." -msgstr "--strip-trailing-cr Tag bort avslutande vagnreturer i indata." - -#: src/diff.c:844 -msgid "--binary Read and write data in binary mode." -msgstr "--binary Ls och skriv data binrt." - -#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 -msgid "-a --text Treat all files as text." -msgstr "-a --text Betrakta alla filer som text." - -#: src/diff.c:848 -msgid "" -"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " -"context.\n" -"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " -"context.\n" -" --label LABEL Use LABEL instead of file name.\n" -" -p --show-c-function Show which C function each change is in.\n" -" -F RE --show-function-line=RE Show the most recent line matching RE." -msgstr "" -"-c -C ANT --context[=ANT] Skriv ut ANT (normalt 3) rader kopierad " -"omgivning.\n" -"-u -U ANT --unified[=ANT] Skriv ut ANT (normalt 3) rader sammanslagen\n" -" omgivning.\n" -" --label ETIKETT Anvnd ETIKETT istllet fr filnamn.\n" -" -p --show-c-function Visa vilken C-funktion varje ndring finns i.\n" -" -F RU --show-function-line=RU Visa den senaste raden som matchar RU." - -#: src/diff.c:853 -msgid "-q --brief Output only whether files differ." -msgstr "-q --brief Skriv ut endast huruvida filer skiljer sig." - -# Finns det ngon bttre versttning av "script" n "program"? -#: src/diff.c:854 -msgid "-e --ed Output an ed script." -msgstr "-e --ed Skriv ut ett ed-program." - -#: src/diff.c:855 -msgid "--normal Output a normal diff." -msgstr "--normal Skriv ut en normal diff." - -#: src/diff.c:856 -msgid "-n --rcs Output an RCS format diff." -msgstr "-n --rcs Skriv ut skillnader i RCS-format." - -#: src/diff.c:857 -msgid "" -"-y --side-by-side Output in two columns.\n" -" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" -" --left-column Output only the left column of common lines.\n" -" --suppress-common-lines Do not output common lines." -msgstr "" -"-y --side-by-side Skriv ut i tv kolumner.\n" -" -W ANT --width=ANT Skriv ut hgst ANT (130 om inget anges) kolumner.\n" -" --left-column Skriv ut endast vnstra kolumnen av gemensamma rader.\n" -" --suppress-common-lines Skriv inte ut gemensamma rader." - -#: src/diff.c:861 -msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." -msgstr "" -"-D NAMN --ifdef=NAMN Skriv ut sammanslagen fil med skillnader inom " -"\"#ifdef NAMN\"." - -#: src/diff.c:862 -msgid "" -"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." -msgstr "--GTYP-group-format=GFMT Dito, men formatera GTYP ingrupper med GFMT." - -#: src/diff.c:863 -msgid "--line-format=LFMT Similar, but format all input lines with LFMT." -msgstr "--line-format=RFMT Dito, men formatera alla inrader med RFMT." - -#: src/diff.c:864 -msgid "" -"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." -msgstr "--RTYP-line-format=RFMT Dito, men formatera RTYP inrader med RFMT." - -#: src/diff.c:865 -msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." -msgstr "" -" RTYP r \"old\", \"new\" eller \"unchanged\". GTYP r RTYP eller \"changed" -"\"." - -#: src/diff.c:866 -msgid "" -" GFMT may contain:\n" -" %< lines from FILE1\n" -" %> lines from FILE2\n" -" %= lines common to FILE1 and FILE2\n" -" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" -" LETTERs are as follows for new group, lower case for old group:\n" -" F first line number\n" -" L last line number\n" -" N number of lines = L-F+1\n" -" E F-1\n" -" M L+1" -msgstr "" -" GFMT kan innehlla:\n" -" %< rader frn FIL1\n" -" %> rader frn FIL2\n" -" %= gemensamma rader i FIL1 och FIL2\n" -" %[-][BREDD][.[PREC]]{doxX}BOKSTAV printf-lik spec. fr BOKSTAV\n" -" BOKSTVER r enligt fljande fr ny grupp, gemen fr gammal grupp:\n" -" F frsta radnumret\n" -" L sista radnumret\n" -" N antal rader = L-F+1\n" -" E F-1\n" -" M L+1" - -#: src/diff.c:877 -msgid "" -" LFMT may contain:\n" -" %L contents of line\n" -" %l contents of line, excluding any trailing newline\n" -" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" -msgstr "" -" RFMT kan innehlla:\n" -" %L radinnehll\n" -" %l radinnehll exklusive avslutande nyrad\n" -" %[-][BREDD][.[PREC]]{doxX}n printf-stil spec. fr inradnummer" - -#: src/diff.c:881 -msgid "" -" Either GFMT or LFMT may contain:\n" -" %% %\n" -" %c'C' the single character C\n" -" %c'\\OOO' the character with octal code OOO" -msgstr "" -" Bde GFMT eller RFMT kan innehlla:\n" -" %% %\n" -" %c'C' det ensamma tecknet C\n" -" %c'\\OOO' tecknet med oktalkod OOO" - -#: src/diff.c:886 -msgid "-l --paginate Pass the output through `pr' to paginate it." -msgstr "-l --paginate Skicka utdata till \"pr\" fr paginering." - -#: src/diff.c:887 src/sdiff.c:198 -msgid "-t --expand-tabs Expand tabs to spaces in output." -msgstr "-t --expand-tabs Expandera tabulatorer till blanksteg." - -#: src/diff.c:888 src/diff3.c:452 -msgid "-T --initial-tab Make tabs line up by prepending a tab." -msgstr "" -"-T --initial-tab Justera tabulatorer genom att skjuta in en tabulator " -"frst." - -#: src/diff.c:890 -msgid "-r --recursive Recursively compare any subdirectories found." -msgstr "-r --recursive Jmfr underkataloger rekursivt." - -#: src/diff.c:891 -msgid "-N --new-file Treat absent files as empty." -msgstr "-N --new-file Betrakta saknade filer som tomma." - -#: src/diff.c:892 -msgid "--unidirectional-new-file Treat absent first files as empty." -msgstr "--unidirectional-new-file Behandla saknade frstafiler som tomma." - -#: src/diff.c:893 -msgid "-s --report-identical-files Report when two files are the same." -msgstr "-s --report-identical-files Rapportera om tv filer r lika." - -#: src/diff.c:894 -msgid "-x PAT --exclude=PAT Exclude files that match PAT." -msgstr "-x MNS --exclude=MNS Ta inte med filer som matchar MNS." - -#: src/diff.c:895 -msgid "" -"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." -msgstr "" -"-X FIL --exclude-from=FIL Ta inte med filer med namn som matchar mnstren " -"i FIL." - -#: src/diff.c:896 -msgid "" -"-S FILE --starting-file=FILE Start with FILE when comparing directories." -msgstr "-S FIL --starting-file=FIL Brja med FIL nr kataloger jmfrs." - -#: src/diff.c:897 -msgid "" -"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." -msgstr "" -"--from-file=FIL1 Jmfr FIL1 medd alla operander. FIL1 kan vara en " -"katalog." - -#: src/diff.c:898 -msgid "" -"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." -msgstr "" -"--to-file=FIL2 Jmfr alla operander med FIL2. FIL2 kan vara en katalog." - -#: src/diff.c:900 -msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." -msgstr "" -"--horizon-lines=ANT Spara ANT rader av det gemensamma prefixet och suffixet." - -#: src/diff.c:901 src/sdiff.c:200 -msgid "-d --minimal Try hard to find a smaller set of changes." -msgstr "-d --minimal Arbeta hrt fr att hitta en mindre mngd av ndringar." - -#: src/diff.c:902 -msgid "" -"--speed-large-files Assume large files and many scattered small changes." -msgstr "--speed-large-files Antag stora filer och sm spridda ndringar." - -#: src/diff.c:907 -msgid "" -"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." -msgstr "" -"FILER r \"FIL1 FIL2\" eller \"KAT1 KAT2\" eller \"KAT FIL...\" eller " -"\"FIL... KAT\"." - -#: src/diff.c:908 -msgid "" -"If --from-file or --to-file is given, there are no restrictions on FILES." -msgstr "" -"Om --from-file eller --to-file r angivet, finns det inga begrnsningar p\n" -"FILER." - -#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 -msgid "If a FILE is `-', read standard input." -msgstr "Om FIL r \"-\", ls standard in." - -#: src/diff.c:920 -#, c-format -msgid "Usage: %s [OPTION]... FILES\n" -msgstr "Anvndning: %s [FLAGGA]... FILER\n" - -#: src/diff.c:949 -#, c-format -msgid "conflicting %s option value `%s'" -msgstr "motstridigt %s-flaggsvrde \"%s\"" - -#: src/diff.c:962 -msgid "conflicting output style options" -msgstr "motstridig utmatningsstilsflagga" - -#: src/diff.c:976 -msgid "regular empty file" -msgstr "tom normal fil" - -#: src/diff.c:976 -msgid "regular file" -msgstr "normal fil" - -#: src/diff.c:978 -msgid "directory" -msgstr "katalog" - -#: src/diff.c:981 -msgid "block special file" -msgstr "blockspecialfil" - -#: src/diff.c:984 -msgid "character special file" -msgstr "teckenspecialfil" - -#: src/diff.c:987 -msgid "fifo" -msgstr "fifo" - -#: src/diff.c:991 -msgid "socket" -msgstr "uttag (socket)" - -#: src/diff.c:994 -msgid "message queue" -msgstr "meddelandek" - -#: src/diff.c:997 -msgid "semaphore" -msgstr "semafor" - -#: src/diff.c:1000 -msgid "shared memory object" -msgstr "delatminneobjekt" - -#: src/diff.c:1003 -msgid "typed memory object" -msgstr "typat minnes-objekt" - -#: src/diff.c:1006 -msgid "weird file" -msgstr "konstig fil" - -#: src/diff.c:1070 src/diff.c:1256 -#, c-format -msgid "Only in %s: %s\n" -msgstr "Endast i %s: %s\n" - -#: src/diff.c:1193 -msgid "cannot compare `-' to a directory" -msgstr "kan inte jmfra \"-\" med en katalog" - -#: src/diff.c:1220 -msgid "-D option not supported with directories" -msgstr "-D flaggan stdjs ej fr kataloger" - -#: src/diff.c:1229 -#, c-format -msgid "Common subdirectories: %s and %s\n" -msgstr "Lika underkataloger: %s och %s\n" - -#: src/diff.c:1266 -#, c-format -msgid "File %s is a %s while file %s is a %s\n" -msgstr "Fil %s r en %s medan fil %s r en %s\n" - -#: src/diff.c:1345 -#, c-format -msgid "Files %s and %s are identical\n" -msgstr "Filerna %s och %s r lika\n" - -#: src/diff3.c:26 -msgid "Written by Randy Smith." -msgstr "Skrivet av Randy Smith." - -#: src/diff3.c:328 -msgid "incompatible options" -msgstr "ofrenliga flaggor" - -#: src/diff3.c:368 -msgid "`-' specified for more than one input file" -msgstr "\"-\" angivet fr mer n en infil" - -#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 -#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 -msgid "read failed" -msgstr "lsning misslyckades" - -#: src/diff3.c:441 -msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." -msgstr "" -"-e --ed Skriv ut separata ndringar frn GAMMALFIL till DINFIL i MINFIL." - -#: src/diff3.c:442 -msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." -msgstr "" -"-E --show-overlap Skriv ut ndringar separat med markeringar runt " -"konflikter." - -#: src/diff3.c:443 -msgid "-A --show-all Output all changes, bracketing conflicts." -msgstr "-A --show-all Skriv ut alla ndringar med markering runt konflikter." - -#: src/diff3.c:444 -msgid "-x --overlap-only Output overlapping changes." -msgstr "-x --overlap-only Skriv ut verlappande ndringar." - -#: src/diff3.c:445 -msgid "-X Output overlapping changes, bracketing them." -msgstr "-X Skriv ut ndringar separat, markerade." - -#: src/diff3.c:446 -msgid "-3 --easy-only Output unmerged nonoverlapping changes." -msgstr "-3 --easy-only Skriv ut ej verlappande ndringar separat." - -#: src/diff3.c:448 -msgid "-m --merge Output merged file instead of ed script (default -A)." -msgstr "" -"-m --merge Skriv ut sammanslagen fil istllet fr ed-program (normalt -A)." - -#: src/diff3.c:449 -msgid "-L LABEL --label=LABEL Use LABEL instead of file name." -msgstr "-L ETIKETT --label=ETIKETT Anvnd ETIKETT istllet fr filnamn." - -#: src/diff3.c:450 -msgid "-i Append `w' and `q' commands to ed scripts." -msgstr "-i Lgg till \"w\"- och \"q\"-kommandon till ed-program." - -#: src/diff3.c:453 src/sdiff.c:202 -msgid "--diff-program=PROGRAM Use PROGRAM to compare files." -msgstr "--diff-program=PROGRAM Anvnd PROGRAM fr att jmfra filer." - -#: src/diff3.c:465 -#, c-format -msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" -msgstr "Anvndning: %s [FLAGGA]... MINFIL GAMMALFIL DINFIL\n" - -#: src/diff3.c:467 -msgid "Compare three files line by line." -msgstr "Jmfr tre filer rad fr rad." - -#: src/diff3.c:673 -msgid "internal error: screwup in format of diff blocks" -msgstr "internt fel: trasigt format i diff-block" - -#: src/diff3.c:971 -#, c-format -msgid "%s: diff failed: " -msgstr "%s: diff misslyckades: " - -#: src/diff3.c:993 -msgid "internal error: invalid diff type in process_diff" -msgstr "internt fel: ogiltig diff-typ i process_diff" - -#: src/diff3.c:1018 -msgid "invalid diff format; invalid change separator" -msgstr "ogiltigt diff-format; ogiltig ndringsseparator" - -#: src/diff3.c:1242 -msgid "invalid diff format; incomplete last line" -msgstr "ogiltigt diff-format; ofullstndig sista rad" - -#: src/diff3.c:1265 src/sdiff.c:273 -#, c-format -msgid "subsidiary program `%s' not executable" -msgstr "underprogram \"%s\" inte krbart" - -#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 -#, c-format -msgid "subsidiary program `%s' not found" -msgstr "underprogram \"%s\" hittades inte" - -#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 -#, c-format -msgid "subsidiary program `%s' failed" -msgstr "underprogram \"%s\" misslyckades" - -#: src/diff3.c:1294 -msgid "invalid diff format; incorrect leading line chars" -msgstr "ogiltigt diff-format; felaktiga starttecken p rad" - -#: src/diff3.c:1370 -msgid "internal error: invalid diff type passed to output" -msgstr "internt fel: ogiltig diff-typ utskickad" - -#: src/diff3.c:1647 src/diff3.c:1704 -msgid "input file shrank" -msgstr "infilen krympte" - -#: src/dir.c:162 -#, c-format -msgid "cannot compare file names `%s' and `%s'" -msgstr "kan inte jmfra filnamn \"%s\" och \"%s\"" - -#: src/sdiff.c:35 -msgid "Written by Thomas Lord." -msgstr "Skrivet av Thomas Lord." - -#: src/sdiff.c:183 -msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." -msgstr "-o FIL --output=FIL Kr interaktivt, med utdata till FIL." - -#: src/sdiff.c:185 -msgid "-i --ignore-case Consider upper- and lower-case to be the same." -msgstr "-i --ignore-case Betrakta versaler och gemena som lika." - -#: src/sdiff.c:188 -msgid "-W --ignore-all-space Ignore all white space." -msgstr "-W --ignore-all-space Ignorera alla blanktecken." - -#: src/sdiff.c:194 -msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." -msgstr "" -"-w ANT --width=ANT Skriv ut hgst ANT (130 om inget anges) tecken per rad." - -#: src/sdiff.c:195 -msgid "-l --left-column Output only the left column of common lines." -msgstr "" -"-l --left-column Skriv ut endast vnstra kolumnen av gemensamma rader." - -#: src/sdiff.c:196 -msgid "-s --suppress-common-lines Do not output common lines." -msgstr "-s --suppress-common-lines Skriv inte ut gemensamma rader." - -#: src/sdiff.c:201 -msgid "" -"-H --speed-large-files Assume large files and many scattered small changes." -msgstr "-H --speed-large-files Antag stora filer och sm spridda ndringar." - -#: src/sdiff.c:214 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 FILE2\n" -msgstr "Anvndning: %s [FLAGGA]... FIL1 FIL2\n" - -#: src/sdiff.c:215 -msgid "Side-by-side merge of file differences." -msgstr "Sammanslagning sida-vid-sida av filskillnader." - -#: src/sdiff.c:327 -msgid "cannot interactively merge standard input" -msgstr "kan inte sl samman standard in interaktivt" - -#: src/sdiff.c:588 -msgid "both files to be compared are directories" -msgstr "bda filerna som skall jmfras r kataloger" - -#: src/sdiff.c:853 -msgid "" -"ed:\tEdit then use both versions, each decorated with a header.\n" -"eb:\tEdit then use both versions.\n" -"el:\tEdit then use the left version.\n" -"er:\tEdit then use the right version.\n" -"e:\tEdit a new version.\n" -"l:\tUse the left version.\n" -"r:\tUse the right version.\n" -"s:\tSilently include common lines.\n" -"v:\tVerbosely include common lines.\n" -"q:\tQuit.\n" -msgstr "" -"ed:\tRedigera och anvnd sedan bda versioner, dekorerade med huvuden.\n" -"eb:\tRedigera och anvnd sedan bda versioner.\n" -"el:\tRedigera och anvnd sedan vnstra versionen.\n" -"er:\tRedigera och anvnd sedan hgra versionen.\n" -"e:\tRedigera en ny version.\n" -"l:\tAnvnd vnstra versionen.\n" -"r:\tAnvnd hgra versionen.\n" -"s:\tInkludera tyst gemensamma rader.\n" -"v:\tInkludera och tillknnage gemensamma rader.\n" -"q:\tAvsluta.\n" diff --git a/src/bin/diffutils/po/tr.gmo b/src/bin/diffutils/po/tr.gmo deleted file mode 100644 index 2e9abdaeea00c8067af9acce8eb93cc72b331f5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24943 zcmchf3vgW5dEc+=R|UUi%a&z3I+9I-l&~NGNfrf)HbD|3VS)q&fTk#l5-zY8!1cbM zeUJoHC$Uo7aT42!8$aTzX6!aro7ydz*czu*l1Txzp1zW{Y3p&PoxYsuGi{QYHcdOz z{{G)NclYjMLD6p79UcC6?>*1&e6RDJ5BlsYZv7XL|9lg8XB5413;ew(dQI6se!~d( z!%_5x(I|S^8hDN0eUtDI=4LqGX8D91|9{!1HM0s-pU-J!{9~#{H;F^GR|8y9_xDBE5U={49GZd`(*g7 z_WPsg_P2r$fqKsxZvO-bU2gw-AmhLNE#M)LJ~YnTp=ERm{0;DA6y5O#kbdsC0J5e# zeime$JM^A@-|<>-A4s2~>pL!iw0p;M;CsM70FSeEw}X4Z1@`HK;7{98ALFRe)ANk+!W~}Ib zs;J)YfEtfEyysKkUEtS2*7ly?48Q*)$o}nm9mxLeDuBDe%OLG`eF=nDcl~O3|Bpd< zdpB)VZ}%f0d%F7yh&=56G)VuuzXsB7_qRdlzWZN-@b{qj;|`E_(Hp@r@K1u!Qv5bJ z4KnWFGWZ7Yqaf=Y{4A(;zXA^O-*1E0!T$xqD|?VJJ>T=6z*n=iZvp>3$ebd0`<_>U z(ElFBh9^MLT2TCOH~4w*e(^mWgF0okv6sT0kC2SC1~R{Wj1@uqedj^?-uF`=^xda@ zhTi+W1G10%L|^7Payv-75%Cv1GSc+#N4^3w-pH?k?B~co0O6&Pe+|;#$bSXzrs-=y z=sybW^nP?6P61|xB*a7g(;5l#rEP?bthCYzIkNp_GpFyO)%WwL+|02J?7e()-kLaUO^x&(( z6W}L7=KtV70a^cp{{y7|{r7?nJPy7K)PAzI{T~azzX?Lu{hA;65PPBa4?O@na0O&j z9{O>RF(3L?K;{#DnBSs%BZ|g1zykQY;3H9V03Ouu168mFvhR}LhsBS~<>4WaH9xHV zVVw{ET@YFyWKTt>gIB;G0k49Ss2tix6)*vhftv3Os*Jsh>fndM?|%-`_7G!>9}ayL zWIl&}3;YDC3K~VwbmD8^r%-vUS^DwtuY;`l$jiYw@FB1aeiD2T{3DQg9vuTe0@9cC z-K6;CBzP2rZj(RFKK%jsH~4*+r9Kbt0<|B^^Muy%e(*CO^E&Yl!Esa?x<`6+>PZmV zOnn(-U#I>)cnH&h%xYdAcodukHGlT@1OFSO-bw9q3lu%4!2bYJfBJs#F;M&WH27~o z#yh2Pn8&Fvg0wyLUGTk8boy1`26)iFKm9F`{W|@JtP4JvImGYbC_1wS!cS+eg3R~K zuY$ZkqjBl)kvl;4>k;-!eD%mTK z#pizs{LkQ_C_4LjkTK7G2c*9b-opA{4Kk+W^&EX`-sjkJ&G($$&(Dknt}5rpG7fL;Lmwa}_^4p?Nv*V<7W> z;yI9ZPka|-eorzt?bnl92lRWg2tv0fKMX>PCqD_k6MPn=zbAhMgzujG9{8pxTDTRY zj|It*e$%(~=)!4`eOtHyvi}R3H*;IK0@7yThe6f<8IZOMe;(Wgej8-|3%?6Om-uxc z>y5>S@I!nOWW4ws_%ceJa+&fMDEcr*@r8ZL{HuL>IR)Cw@0Jf2JxS5}^wB=e**E{s zp8}quT&Jv3ew4y`B*XU6y3SKRLHQzuxrmPPL8D8QgOr%^S<0WK=%cmiBi;}_Ur+g~ z6zHS9kUbSIMxUdI9{RASk!a^AXDQj|o#D$GSfyN~e2H>|qCNZt3iJ~%>s(KGM>#=xFg$x4TnXQgf-TAtWtMWBqR(?4| zL9!ybvQHzRWM`3*QqEA`MR|nsI?67}GDRQcU$QTGm92_?nUa0R__CMsRmv@t{ggq< zpQe0_@?}bsavMdTFHjCp-b(op<&Bi=bC@qbVLzOkOq;7o-5o!6YTniAZdzE0*WFUB z+Kkic_<-ZHYZt|TTN*qv=p1caBdxBK6SuS)*W;xoeH_VZJU%ls6DoDyUS=RyTWZE- z`YtApI+63^ZXfSq=gMg{X}INjt>TVNO;3*c&fmA~#h8C_Fnh67t5j-L*R1(wF0K~s zTc~%TaPh*qsiX5JE?yYEaAtP$$i<6K7i(7@{qXeU{QTssb8Gdq+FUL)n(HjCv6d{k zWzogn+E6b1Xt=nZxR^QC%H`T+Vck`e%WkD!Ypo4Aoy4(Z)m2-S#iSmFU=S7*@9^%l3$-FH8*Tym4Gy^l#sHx7LaPdMRacVY;4plY)$RG@n11rUQX)c_LkplHLK>!z)QT>I(FSxQx_i8VBETM z%g`_>jyrpjmdnWsf>K*+rtos1;C3zfx@q-NTuzI9-h{dfyOwq}23@h1G^&G57mGDn z8oavFs<6Gjn|5WYGO4(-n69*HEnC5O*7<@uswYpi(mHh7v5!LG`xvlrj@94v^g`_& zXV`CYd1|$)^<=5GQcX9KHpx7JJQ@1FxAhD}g@W-^!KAr>Y**suK~s}%F0G{HxIW|- z;aC4AV?bkJYtnG0@zi3N&WtY$Vw9{elf=G#1*UI{L+DBk)YW2IjqB^q%_ectxb|{A zZ6>Z5H)EGpU3gtV$*Q)PwXjyNt<>Yn!85Zn$7d%{24~Sq*$-4DN^?!xY#AnOsFn0? zLBDK(LZMmnzZPp~acRYLIZcZBiU++Exg((~|C7F9K{zU@qlgV%+D4z zYxQ-Fx|)>NoSSJir3jjnH?YniX=BweZ2>d>EM6{>M1DVTD0Q})dUK1HBdtu%_yL%MwFY|J*~H+%6j&$ zTH9$BM{3nZTFflQ4d=lsDrkp{P_YXSwAETC`;!z4aOjF(Y{R*UMg#H3qVUY`veBj@ z{oPoKo7iteq(QfsXH%=T;zqNct`#x`Us$T6O7*Ct^Oxd!J&ozKo-|waszY7b;x&)J zG{zZYuFV;FhRE#nSm2B?wxJ(qw5qA+6!c+SE?@;bKf3vP5~Jo88|b#6x{Zltn3Kv{ zQ+#!wbA>_@H`WWaY8k-^4A!bv639`6eAU{eq+X8K*0kxJ^-ri_W3_gvJYA4lEkiBs5d zI$AC!%Lo0hF!?ZbV^D-llXMI3wu;sa9Sb*TDn~PYUad7$y!Xx2g6TkQvWrrHkwk&coc2D zLBrE(vLnNyZ}Y4=XZq2I(2VP1E8}w$A;})k{LV>@!aZHuDz}@AJFi~SYT8T@7;Tk1 z6_?mIWW_rytu;It{M}?Nsd{HlFKKzsT6#u++0iHQQqrcC*#GjXERH>={-f=E?juHB zTaAXUSOc3r^Yfl0Y6^Q37CC9oWu~Q?tBAMX2I;CbQ&rM2MkxAY%ePCrTUc>i7T}h`h=bAUa9qCCxn9c9^Dxo7lKD9C18&kafuO+ zn0aDkbFHs5FUW9RY!geiYY&1Qx5`a--`i7k&@aKkxbp?9a!`azg=HLXb4%Tvlnw-1T6ITU`*9NUJCGL(o>qs|!?7TW zrXI4oCWr?mht`!SU#W5C!6lG7ms<3DFUpz}7B!IyTx|w$9yf^NXHm*%Ipv@idlQBg zZ6vmRVPDx07#Mb=eNdp78GbdEux8?r-q*bv%b!GNrjHuuGT!-_v$OV{{ja%G=k=X_ zQVkOnzjrU%h8@+L)C*>J?QH1X4;teLY3U98jJ`c&N-9Rx__Ie+T|#fbtfpwPlbdfm z!7z|w;qssjweZxSIYn~6M5p$mWgAkbqflVsNryJo6Aw#FFxMcLeJUZYeoO_>@ut#UB@%sgx(zXbb1HJ1( z!+Ppa9mkLrB}=V(gPwIZ319KI*g`v8n6KGd%vmWG+^QC74kZc&4w?upUm7^*h<`>L z{1#d518zM{2%;ocQv8@^+-%|Wwc_YA7^xWIZ=4B}gv$>ph zazbYlkaNUQw*hY|hLpK%M{9V9XcNz3Jq&3RHYcbkBTGM%@`zAL`T+}?xiMMw9WdQX zS|ohveXAMYZ}vN_F4w4YS#^RQxfvUL+1a6}P`I2Ho2&kW6nf71q|4rn-Z!#0h*`tI z8>Va-_lm|1X1v>7?ql1n{+S75(O}6B+Rq(rIB#i$53XGzHiE{PZ?JYrf%(IjegPUYSj z;;=~-4!7SmSL;dUE1A9AUZc(Prs{Yv9FAnL<}8M}ps%CmP>l^*Z0+dO?5N|P&QE(g zJUr~*o3R@nR+T||Qk;N!D^4TCCE$V9oqIZ9)hvD{@z636!M3z+f1S~3Y8mo(;t_=Q z+9ykmxPrc^4oQ|3jipp;_zya`nwKISVRN4wj_4`2?`pSDu%%Seh633`w83>ptyGJ0 zD1ve8ZLw3e5S3fxEJ#NL2W6n6sqh#lB!tM92lh}@#bK>oiGT~oa`b!W$@a>pk_xdGnyoUQN?q1c=;b)6Iw| zehp2{x0YbhIb%)1MX$RQ>uv#+<3o&twi~?z4M%6IrE2XmDtR4IsJNtF zuhn^Ir%wjhBh~o$p4^kY_GEAF$pt;R@I>y(<4;Ft8wAKqvtO7wGe0$R`XY+d6j4yR z12?R4LE3iAT@aUydKkNS@#2jd&F%EkpHp0Rj>!%&1JOBR$ZWbqH@UKs)SK{s zO3dIy%=e@`Wd$$5l=jh8Y{y}CMSOQQ}NQtq`HwJ1Pg^-Tnl9ZE|{;j z*r=70W^%yQ7|W&28&zq+QS`9n)Cm;_JCW@UhY)~JR8u^usI(X^S}fO4^cDt(i~S=7 z#`Vp#6v_t?lksNa@N>@RjRGDKMMPIUdT`s-zs-WAD zMQzj4J?W*&+PIsXIVJ@qRn0-tBA8N5y@<@w=>_CKmuE$W;E>--_ET_x0D6JY-HPgl1mUQ@*C^6Dhq8dt+ zFuK=p<8U@xj9km(a?SNM@w!Zf?8cLNcoQwwaBSEs42b88ZB2-@B$o*}(sj5p!(7>j zCQS_*_*ro5w2Rps+jU-r6H$mQ__MkvKvpNj+Su>v3L{e4#7S$es#iC22vGt9P( ziF>M*w2~+|uWe3ixG#@(daVT|R|rCI3`b$#sG7wfBDtG(8)n+p$44`zCXwi!{pBRZ z^w~Q7^=lx?nR-pDD@+v&$g>=Bf5C6=sv8^LKX7JdzHmghR=g`5MZ=A|v5}Fn!pQxF zkq6x9{o|t}g^~RuBUCKR;%2Ll-g@`Bkq5``dth>Meqfp;kpeDH6;B5a8+S(&?z`PY zsf2reGOjMg?qNbA>Bb>ga6PUL!}af@RduBWBNgV8xH9hMTlG@fSalD}vu@T4tPrbivyu!~lji#dPEDPf?5u5ccw~SGr~JjjJaihz+q=@-w^okR>H&p; z>qKG?o}E8d*x#wA*>XrKOd^7kr*XG`F>MY!TJVmcE#u^2-Lklm;fIDF7$Ak?_~Ffu zql4FDH?42+i&x{Vt6SHLaS6p*PhGnC9LKIjGEwR~B`qbTa_UNup(HWsO;?&rO6f*9 zExA&y*iw3ut8sDHuAfceCI%*Z>FCVd`H9g%2v1nIxpke(MW5QUiwq`vIo9tbSxmkq zEA3Rnr)-`Ix#Uzs*(K*l}xu| z0#NmFePio7rz}WUv8)|mYY>9Eb$Et^C24GHlV3N7?!^>4-6(ZcNgF=*$GOtx3!Bev zzEDzhewm54wEnKdr?iX%Wt7o*hdpU*T@O>R+@}UgXvgKJweh{ypA|j*|83XS93MUxoX#ln{Z8* zbhRAUOXaQWWL@zd?=+(>UzN-QU=wz%!s%;=#H&RycHNk0gGCox z(0n8YrW-rFP3u^5-(flK*PYMF%5|7k-)a1iY4v~AqI=S93M}qC+dMr3p>i`2`&BFH zdMzW;wpHb8C|?Wi?8(=Xw7bKc78BC7mg5qkEUOlj9(RUG5HhJc*e$1pT<^zB5Y{F% z#>3=LV=@vc!AqmdF>EJz^%>ktP+qKUOvzaPj~Tn2#>_Io@FJuKU5YJ~0pm(DaqIC0 zfkC9K1}_tI@6H4}Kk?WU7e@$bt+5{aNua>Q?qwuGCaZ$Y@v0_N9%P7&cj=M4d^WHX znbmK|*@?~?LlCBuLSg)N&4aK3pX-+HF0hD2x>lnp--PX~xmKaY;alKZ;r1^edikC8~ zZRe&NGR@8@Xy4C_Jux@Pd@>qjDQTyDYMNx;4n&*JZCx+HOs2@WMcJO&bJ!Dwj8)Hv zBKziZHF*cHbdk7-`FRir#?IV|ep~P5Cs5Ng`PS7|wI!=S`lsSijK4jf?YK;={4}|0 zHO?LkTragfEzFH%LVMGwg^kJb+Kd^w@@5IW?3)Jf4a?Vukpmx(?a0S@Hr_Gy?SqJS zjli4S5D3oMF7;HDDp;(&c$MREJ>#bPbcvPAfjbc+-}o>@HxY~%uM+!BO7$2&jVJ0c zSoIX2*(88X$!}#(YFtKw8?_p8=_=YFUJlx3^Z6IAV&}M|=RD9%Hnwf5DIYF%WGC6Z z9dqjDG7mdjw|UCjrcz8x=zsNBi8tu)sN1@RtBelhrqwd+vfm+(F8u5g(4awJ7M#35 zLD6s9PN{zXKNZ51JG%MoV_Vla9<^`V zE!@wcG-L_3E9AK>dsq^0E<*O$wGf)V)aYy1yY@z^&Q$)io1EtqH)$8@KFhHEz$@n% zL&li{VNbHUgPduDLn$fYY?Mzo%qxjZ#b#oXQx9`qU#Tq-m|Wta={URu8C-E&AFEtK z7_8c$m{0oBYkONoh}8K6#KZob(Mu+xAs$9W#^`*hXpF8s@@&1DZs3@pj>Omf{jvtO z!4I}W&SIvQqz=oilGi*K**3|^T|AuDr9KtL-h94}CPyvhrROEt*(Tnt9v|({vn$0h zBd6RL$i-g}aJd21jFIGjdPZtn!~V-5&9wDlD>Qobtvlxl0{$htk7&-1rybX`F>NvzEBC$mo536y<0O>sOq14E3R z2Y4wd-!{Ia%10ExPibbP9a1k(U@}BSHUUFaT}jEnv>m);kuW>g=rHSDppM#AkH_*# zuTMT^rrg@qikmNN;FQzzGFLF3S2Lxz(&BauDSauTc<-vSTb(IIh3=%zqwy+d+RW3F zn$SY^gy1(vg@pT0?L>b>Hxd=eVr?q(WEDkKiQxM@O#lhmNJSaR>o+lR%t2vVw%_48OSE1 zAWmmSS&FAUb>>OuV>yUW7VHV39F}8YpmF`%FIhDAwr{ei1wy^Z2VEYQk@O9s++6&+ z2A(*V#l4%*lQp{eaqr2>PhL=_sI6A*s!m}Y{v^pvQM|salQ9eL&K%A3si`sg&@w%( zLM*dQIH)Q0sN*aqn_y|q|H)Bm3BXXjAK$I)7*5kN2e3>za{Rd#VU9QdP>! z>`;3#+J#Jba#Gc0WOMTS(3`rt z`SIjZokM$?%{sHuh?yPpV$$_30I`EV#O(U#vz|a|by9OU80+ozo3B4akRoGbQy_lV zTlH2&XIKJV3N>lr*7Z)gt^|NQtFTBr6w0xYNXF|tL9O+p#tn$BP3RqahfK(sZK4^7 z?DbgF6ttzrhCJC!3U%Vn&N6mv#ZN==+7;`H;tRIy?wr}V%@^v}1I=xP2uqJ-?T|a0 ziEXbhn0eoqy?cRr^EtHMU+``}GHzjjSYZM$8#!Mji~Q&IwDX7DJ&fG#9ViW#P3@C) ziy_nISpcE0Tbk$LEAHgPv`^&E@^HfggTZZHrFRx^zKb!*nl7_8eG+rGuEA4YulilV z;AAF_SdDfE1|nZMbFcoN5w8#BG;*Qq&k3M*4=2K3LAG)xqLott*2xdV)uN38u9@1= zB?Ky;f7v<{Jq4D6nHY%t#PaIHlESRTKxBs9EJyH?GUyWrjW(Y}mDsRSpWYy5(67Gj zV!OW7xmm5g8r_sJ6B&04_LWRv9aqQ&w(Hl0quyKMvH#Nh!dJIk;hbs-ZPgR6Les$m zT(W35lhX*BxbtRTi zOruHN1E8FslNSr`p-PguybRpV%i+il3wQ?nePYjK)VAXoaKBcJC2h!A*DPcl<^JO1 zHgt7Da8RbVrxqHIm_hKf>6UAA4j&cxl-$S6OWq+h*~LXtvpHf9xdFWPOH%6H?OrxFg(7=&V(S`rhKIMV&AQ_gN{imQ z=4C*B%s{>~xma1y!Ml}NZgZK$n@Wqk=7!z)4w^SsB6^}YonjT(09q8|0e`tcl9H|w z<;ZLdJH{x%ky0=^oXW+)8O2b?!SgV$C(yZ!Q@V_i3E9sB3J}t9<_B^fU5pha7>>5C zZIlz_N9ouNS4tZE5rT=2cW3gQE}(a_ROxUwVoo8*NLPoM5Pv+c&Ke{MaqlOFX5XSc z>o;+!p z)Lm9;Ai9aF7raGt7d&ek_?+sOY|OUYc!*p$z~$l$`4|I#6mfGo)^2-_HDWXk-7Up> zfG}LVY#T0t5R;qsQbcSxnkADi z(>Ll@w}l4+vvCu};>gUlEbo_W)XwGZ@G5Nw?7d5}-p(0N>rG^Lltb`2=7Xfh*IPkAXoH304 z|2z0da(htog!XkxX)vBo5x?nfe8Tv)>Ix@iqqc|iiR0VrVtD&j9>3+h(&#i#CTB<1 zqIW+uO%loH`j0{;`P>eDl1kolz|jFffBUr|C&(Y?EK#16^6fRfn#b^2h$~;6^m03r z6Yv^{yiKr(GWi&Ovn|EEwce^UT3!1a^@vo6-IiHtq=<)X!+2Ld`Lf$CEk3*ErFaO=Lo4cZo8_MePWNlizs4eS z&aV`O{B@t9{~Fz#quUh6=qNT4<)mc1Rd2Z%oWzk z|96W2(x_2WCOaIU_#%JTLg#jCnPsy#@yC70InwFBGbv-0?Q`i, 2001. -# -msgid "" -msgstr "" -"Project-Id-Version: diffutils 2.8\n" -"POT-Creation-Date: 2002-04-05 14:10-0800\n" -"PO-Revision-Date: 2002-04-03 07:35EET\n" -"Last-Translator: Deniz Akkus Kanca \n" -"Language-Team: Turkish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 0.9.5\n" - -#: lib/c-stack.c:188 -msgid "program error" -msgstr "yazılım hatası" - -#: lib/c-stack.c:189 -msgid "stack overflow" -msgstr "yığıt taşması" - -#: lib/error.c:128 lib/error.c:156 -msgid "Unknown system error" -msgstr "Bilinmeyen sistem hatası" - -#: lib/freesoft.c:27 -msgid "" -"This program comes with NO WARRANTY, to the extent permitted by law.\n" -"You may redistribute copies of this program\n" -"under the terms of the GNU General Public License.\n" -"For more information about these matters, see the file named COPYING." -msgstr "" -"Bu yazılım, kanunun izin verdiği ölçüde, HİÇ BİR GARANTİ içermez.\n" -"Bu yazılımın kopyalarını GNU Genel Kamu Lisansı'nın koşulları altında\n" -"dağıtabilirsiniz. Bu konular ile ilgili daha fazla bilgi için lütfen " -"COPYING\n" -"adındaki dosyaya bakın." - -#: lib/getopt.c:693 -#, c-format -msgid "%s: option `%s' is ambiguous\n" -msgstr "%s: `%s' seçeneği belirsiz\n" - -#: lib/getopt.c:718 -#, c-format -msgid "%s: option `--%s' doesn't allow an argument\n" -msgstr "%s: `--%s' seçeneği argümansız kullanılır\n" - -#: lib/getopt.c:723 -#, c-format -msgid "%s: option `%c%s' doesn't allow an argument\n" -msgstr "%s: seçenek `%c%s' argümansız kullanılır\n" - -#: lib/getopt.c:741 lib/getopt.c:914 -#, c-format -msgid "%s: option `%s' requires an argument\n" -msgstr "%s: `%s' seçeneği bir argümanla kullanılır\n" - -#: lib/getopt.c:770 -#, c-format -msgid "%s: unrecognized option `--%s'\n" -msgstr "%s: `--%s' seçeneği bilinmiyor\n" - -#: lib/getopt.c:774 -#, c-format -msgid "%s: unrecognized option `%c%s'\n" -msgstr "%s: `%c%s' seçeneği bilinmiyor\n" - -#: lib/getopt.c:800 -#, c-format -msgid "%s: illegal option -- %c\n" -msgstr "%s: kuraldışı seçenek -- %c\n" - -#: lib/getopt.c:803 -#, c-format -msgid "%s: invalid option -- %c\n" -msgstr "%s: geçersiz seçenek -- %c\n" - -#: lib/getopt.c:833 lib/getopt.c:963 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "%s: seçenek bir argümanla kullanılır -- %c\n" - -#: lib/getopt.c:880 -#, c-format -msgid "%s: option `-W %s' is ambiguous\n" -msgstr "%s: `-W %s' seçeneği belirsiz\n" - -#: lib/getopt.c:898 -#, c-format -msgid "%s: option `-W %s' doesn't allow an argument\n" -msgstr "%s: `-W %s' seçeneği argümansız kullanılır\n" - -#: lib/regex.c:1367 -msgid "Success" -msgstr "Başarılı" - -#: lib/regex.c:1370 -msgid "No match" -msgstr "Eşleme yok" - -#: lib/regex.c:1373 -msgid "Invalid regular expression" -msgstr "Düzenli ifade geçersiz" - -#: lib/regex.c:1376 -msgid "Invalid collation character" -msgstr "Harmanlama karakteri geçersiz" - -#: lib/regex.c:1379 -msgid "Invalid character class name" -msgstr "Karakter sınıf ismi geçersiz" - -#: lib/regex.c:1382 -msgid "Trailing backslash" -msgstr "İzleyen ters kesme" - -#: lib/regex.c:1385 -msgid "Invalid back reference" -msgstr "Geriye başvuru geçersiz" - -#: lib/regex.c:1388 -msgid "Unmatched [ or [^" -msgstr "[ ya da [^ eşleşmiyor" - -#: lib/regex.c:1391 -msgid "Unmatched ( or \\(" -msgstr "( ya da \\( eşleşmiyor" - -#: lib/regex.c:1394 -msgid "Unmatched \\{" -msgstr "\\{ eşleşmiyor" - -#: lib/regex.c:1397 -msgid "Invalid content of \\{\\}" -msgstr "\\{\\} içeriği geçersiz" - -#: lib/regex.c:1400 -msgid "Invalid range end" -msgstr "Kapsam sonu geçersiz" - -#: lib/regex.c:1403 -msgid "Memory exhausted" -msgstr "Bellek tükendi" - -#: lib/regex.c:1406 -msgid "Invalid preceding regular expression" -msgstr "Önceki düzenli ifade geçersiz" - -#: lib/regex.c:1409 -msgid "Premature end of regular expression" -msgstr "Düzenli ifadenin sonu eksik kalmış" - -#: lib/regex.c:1412 -msgid "Regular expression too big" -msgstr "Düzenli ifade çok büyük" - -#: lib/regex.c:1415 -msgid "Unmatched ) or \\)" -msgstr ") ya da \\) eşleşmiyor" - -#: lib/regex.c:8034 -msgid "No previous regular expression" -msgstr "Daha önce düzenli ifade yok" - -#: lib/xmalloc.c:63 -msgid "memory exhausted" -msgstr "bellek tükendi" - -#: src/analyze.c:809 src/diff.c:1283 -#, c-format -msgid "Files %s and %s differ\n" -msgstr "%s ve %s dosyaları birbirinden farklı\n" - -#: src/analyze.c:812 -#, c-format -msgid "Binary files %s and %s differ\n" -msgstr "İkilik dosyalar %s ve %s birbirinden farklı\n" - -#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 -msgid "No newline at end of file" -msgstr "Dosya sonunda yenisatır yok." - -#: src/cmp.c:43 -msgid "Written by Torbjorn Granlund and David MacKenzie." -msgstr "Torbjorn Granlund ve David MacKenzie tarafından yazılmıştır." - -#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 -#, c-format -msgid "Try `%s --help' for more information." -msgstr "Daha fazla bilgi için `%s --help' komutunu kullanın." - -#: src/cmp.c:137 -#, c-format -msgid "invalid --ignore-initial value `%s'" -msgstr "geçersiz -- ilk değer `%s' yoksayılmış" - -#: src/cmp.c:146 -msgid "options -l and -s are incompatible" -msgstr "-l ve -s seçenekleri beraber kullanılamaz" - -#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 -#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 -#: src/util.c:286 src/util.c:293 -msgid "write failed" -msgstr "yazma başarısız oldu" - -#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 -#: src/sdiff.c:179 -msgid "standard output" -msgstr "standart çıktı" - -#: src/cmp.c:160 -msgid "-b --print-bytes Print differing bytes." -msgstr "-b --print-bytes Bayt farklarını çıktılar." - -#: src/cmp.c:161 -msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." -msgstr "-i ATLA --ignore-initial=ATLA Girdinin ilk ATLA baytını atlar." - -#: src/cmp.c:162 -msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" -msgstr "-i ATLA1:ATLA2 --ignore-initial=ATLA1:ATLA2" - -#: src/cmp.c:163 -msgid "" -" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." -msgstr " DOSYA1'in ilk ATLA1 baytını ve DOSYA2'nin ilk ATLA2 baytını atlar." - -#: src/cmp.c:164 -msgid "-l --verbose Output byte numbers and values of all differing bytes." -msgstr "" -"-l --verbose Bütün farklı baytların numaralarını ve değerlerini gösterir." - -#: src/cmp.c:165 -msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." -msgstr "-n LİMİT --bytes=LİMİT En fazla LİMİT baytı karşılaştırır." - -#: src/cmp.c:166 -msgid "-s --quiet --silent Output nothing; yield exit status only." -msgstr "" -"-s --quiet --silent Hiç bir şey çıktılamaz, yalnızca çıkış durumunu " -"bildirir." - -#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 -msgid "-v --version Output version info." -msgstr "-v --version Sürüm bilgisini gösterir." - -#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 -msgid "--help Output this help." -msgstr "--help Bu yardımı gösterir." - -#: src/cmp.c:177 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" -msgstr "Kullanım: %s [SEÇENEK]... DOSYA1 [DOSYA2 [ATLA1 [ATLA2]]]\n" - -#: src/cmp.c:179 -msgid "Compare two files byte by byte." -msgstr "İki dosyayı bayt bayt karşılaştırır." - -#: src/cmp.c:183 -msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." -msgstr "ATLA1 ve ATLA2 her dosyada atlanacak bayt sayısını gösterir." - -#: src/cmp.c:184 -msgid "" -"SKIP values may be followed by the following multiplicative suffixes:\n" -"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" -"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." -msgstr "" -"ATLA değerleri aşağıdaki çarpanlarla sonlanabilir:\n" -"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" -"GB 1,000,000,000, G 1,073,741,824, ve T, P, E, Z, Y için devam eder." - -#: src/cmp.c:187 -msgid "If a FILE is `-' or missing, read standard input." -msgstr "Eğer DOSYA `-' ise veya yoksa, standart girdi okunur." - -#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 -msgid "Report bugs to ." -msgstr "" -"Yazılım hatalarını adresine, \n" -"çeviri hatalarını adresine bildirin." - -#: src/cmp.c:231 -#, c-format -msgid "invalid --bytes value `%s'" -msgstr "geçersiz --bytes değeri `%s'" - -#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 -#, c-format -msgid "missing operand after `%s'" -msgstr "`%s'den sonra işlenen eksik" - -#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 -#, c-format -msgid "extra operand `%s'" -msgstr "fazla işlenen `%s'" - -#: src/cmp.c:477 -#, c-format -msgid "%s %s differ: byte %s, line %s\n" -msgstr "%s %s farklı: bayt %s, satır %s\n" - -#: src/cmp.c:495 -#, c-format -msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" -msgstr "%s %s farklı: bayt %s, satır %s: %3o %s %3o %s\n" - -#: src/cmp.c:543 -#, c-format -msgid "cmp: EOF on %s\n" -msgstr "cmp: %s'da EOF (dosyasonu)\n" - -#: src/diff.c:41 -msgid "" -"Written by Paul Eggert, Mike Haertel, David Hayes,\n" -"Richard Stallman, and Len Tower." -msgstr "" -"Paul Eggert, Mike Haertel, David Hayes, Richard Stallman, ve Len Tower\n" -"tarafından yazılmıştır." - -#: src/diff.c:322 -#, c-format -msgid "invalid context length `%s'" -msgstr "`%s' içerik uzunluğu geçersiz" - -#: src/diff.c:405 -msgid "pagination not supported on this host" -msgstr "sayfalama bu makina üzerinde desteklenmiyor" - -#: src/diff.c:420 src/diff3.c:315 -msgid "too many file label options" -msgstr "çok fazla dosya etiket seçeneği" - -#: src/diff.c:498 -#, c-format -msgid "invalid width `%s'" -msgstr "geçersiz genişlik `%s'" - -#: src/diff.c:502 -msgid "conflicting width options" -msgstr "çelişkili genişlik seçenekleri" - -#: src/diff.c:526 -#, c-format -msgid "invalid horizon length `%s'" -msgstr "geçersiz ufuk uzunluğu `%s'" - -#: src/diff.c:629 -#, c-format -msgid "`-%ld' option is obsolete; use `-%c %ld'" -msgstr "`-%ld' seçeneği kullanımdan kalktı; `-%c %ld' kullanın" - -#: src/diff.c:641 -#, c-format -msgid "`-%ld' option is obsolete; omit it" -msgstr "`-%ld' seçeneği kullanımdan kalktı; kullanmayın" - -#: src/diff.c:709 -msgid "--from-file and --to-file both specified" -msgstr "hem --from-file hem de --to-file belirtilmiş" - -#: src/diff.c:832 -msgid "Compare files line by line." -msgstr "Dosyaları satır satır karşılaştırır." - -#: src/diff.c:834 -msgid "-i --ignore-case Ignore case differences in file contents." -msgstr "" -"-i --ignore-case Dosya içeriğinde büyük/küçük harf farklarını yoksayar." - -#: src/diff.c:835 -msgid "--ignore-file-name-case Ignore case when comparing file names." -msgstr "" -"--ignore-file-name-case Dosya isimlerinde büyük/küçük harf farklarını " -"yoksayar." - -#: src/diff.c:836 -msgid "--no-ignore-file-name-case Consider case when comparing file names." -msgstr "" -"--no-ignore-file-name-case Dosya isimlerinde büyük/küçük harf farkı gözetir." - -#: src/diff.c:837 src/sdiff.c:186 -msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." -msgstr "" -"-E --ignore-tab-expansion Sekmelerin açılmasından doğan farkları yoksayar." - -#: src/diff.c:838 src/sdiff.c:187 -msgid "-b --ignore-space-change Ignore changes in the amount of white space." -msgstr "" -"-b --ignore-space-change Boşluk miktarındaki değişiklikleri yoksayar." - -#: src/diff.c:839 -msgid "-w --ignore-all-space Ignore all white space." -msgstr "-w --ignore-all-space Bütün boşlukları yoksayar." - -#: src/diff.c:840 src/sdiff.c:189 -msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." -msgstr "" -"-B --ignore-blank-lines Satırları boş olan değişiklikleri dikkate almaz." - -#: src/diff.c:841 src/sdiff.c:190 -msgid "" -"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." -msgstr "" -"-I DÜZİF --ignore-matching-lines=DÜZİF Satırları DÜZİF kalıbına uyan\n" -" farkları yok sayar." - -#: src/diff.c:842 src/sdiff.c:191 -msgid "--strip-trailing-cr Strip trailing carriage return on input." -msgstr "--strip-trailing-cr Girdiden en sonda sarkan satır başını soyar." - -#: src/diff.c:844 -msgid "--binary Read and write data in binary mode." -msgstr "--binary Datayı ikilik kipte yazar ve okur." - -#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 -msgid "-a --text Treat all files as text." -msgstr "-a --text Bütün dosyaları metin imişcesine işler." - -#: src/diff.c:848 -msgid "" -"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " -"context.\n" -"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " -"context.\n" -" --label LABEL Use LABEL instead of file name.\n" -" -p --show-c-function Show which C function each change is in.\n" -" -F RE --show-function-line=RE Show the most recent line matching RE." -msgstr "" -"-c -C SAYI --context[=SAYI] SAYI kadar bağlam satırı kopyalar (öntanımlı " -"3)\n" -"-u -U SAYI --unified[=SAYI] SAYI kadar birleşmiş bağlam satırı kopyalar\n" -" (öntanımlı 3)\n" -" --label ETİKET Dosya adı yerine ETİKET'i kullanır.\n" -" -p --show-c-function Her farkın hangi C işlevi içinde olduğunu " -"gösterir.\n" -" -F DÜZİF --show-function-line=DÜZİF DÜZİF düzenli ifade kalıbına uygun " -"olan\n" -" en son satırı gösterir." - -#: src/diff.c:853 -msgid "-q --brief Output only whether files differ." -msgstr "-q --brief Yalnızca dosyaların farklı olup olmadığını gösterir." - -#: src/diff.c:854 -msgid "-e --ed Output an ed script." -msgstr "-e --ed Bir ed betiği çıktılar." - -#: src/diff.c:855 -msgid "--normal Output a normal diff." -msgstr "--normal Normal bir diff çıktılar." - -#: src/diff.c:856 -msgid "-n --rcs Output an RCS format diff." -msgstr "-n --rcs RCS biçeminde diff çıktılar." - -#: src/diff.c:857 -msgid "" -"-y --side-by-side Output in two columns.\n" -" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" -" --left-column Output only the left column of common lines.\n" -" --suppress-common-lines Do not output common lines." -msgstr "" -"-y --side-by-side İki sütun halinde çıktı verir.\n" -" -w SAYI --width=SAYI Satır başına en fazla SAYI kadar karakter çıktılar\n" -" (öntanımlı 130).\n" -" --left-column Ortak satırlarda yalnız sol sütunu gösterir.\n" -" --suppress-common-lines Ortak satırları göstermez." - -#: src/diff.c:861 -msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." -msgstr "" -"-D İSİM --ifdef=İSİM #ifdef İSİM farklarını gösteren harmanlanmış\n" -" dosya çıktılar." - -#: src/diff.c:862 -msgid "" -"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." -msgstr "" -"--GTÜR-group-format=GBÇ Benzer, fakat GTÜR biçeminde girdi grupları\n" -" GBÇ ile biçemlendirilir." - -#: src/diff.c:863 -msgid "--line-format=LFMT Similar, but format all input lines with LFMT." -msgstr "" -"--line-format=LBÇ Benzer, fakat bütün girdi satırları LBÇ ile " -"biçemlendirilir." - -#: src/diff.c:864 -msgid "" -"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." -msgstr "" -"--LTÜR-line-format=LBÇ Benzer, fakat LTÜR girdi satırları \n" -" LBÇ ile biçemlendirilir." - -#: src/diff.c:865 -msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." -msgstr "" -" LTÜR, `old' (eski), `new' (yeni) veya `unchanged' (değişmemiş) olabilir. \n" -" GTÜR, LTÜR veya `changed' (değişmiş) olabilir." - -#: src/diff.c:866 -msgid "" -" GFMT may contain:\n" -" %< lines from FILE1\n" -" %> lines from FILE2\n" -" %= lines common to FILE1 and FILE2\n" -" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" -" LETTERs are as follows for new group, lower case for old group:\n" -" F first line number\n" -" L last line number\n" -" N number of lines = L-F+1\n" -" E F-1\n" -" M L+1" -msgstr "" -" GBÇ aşağıdakileri içerebilir:\n" -" %< DOSYA1'den satırlar\n" -" %> DOSYA2'den satırlar\n" -" %= DOSYA1 ve DOSYA2'de ortak olan satırlar\n" -" %[-][GENİŞLİK][.[KESİNLİK]]{doxX}HARF HARF için printf tarzı biçem\n" -" HARF'ler yeni grup için aşağıdaki gibi, eski grup için ise\n" -" küçük harf olurlar:\n" -" F ilk satır numarası\n" -" L son satır numarası\n" -" N satır sayısı = L-F+1\n" -" E F-1\n" -" M L+1" - -#: src/diff.c:877 -msgid "" -" LFMT may contain:\n" -" %L contents of line\n" -" %l contents of line, excluding any trailing newline\n" -" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" -msgstr "" -" LBÇ aşağıdakileri içerebilir:\n" -" %L satırın içeriği\n" -" %l sonlayan yenisatır karakteri hariç, satırın içeriği\n" -" %[-][GENİŞLİK][.[KESİNLİK]]{doxX}n girdi satır sayısı için printf\n" -" tarzı biçem" - -#: src/diff.c:881 -msgid "" -" Either GFMT or LFMT may contain:\n" -" %% %\n" -" %c'C' the single character C\n" -" %c'\\OOO' the character with octal code OOO" -msgstr "" -" GBÇ veya LBÇ aşağıdakileri içerebilir:\n" -" %% %\n" -" %c'C' tekli karakter C\n" -" %c'\\OOO' Sekizlik kodu OOO olan karakter" - -#: src/diff.c:886 -msgid "-l --paginate Pass the output through `pr' to paginate it." -msgstr "-l --paginate Çıktıyı `pr' komutundan geçirerek sayfalar." - -#: src/diff.c:887 src/sdiff.c:198 -msgid "-t --expand-tabs Expand tabs to spaces in output." -msgstr "-t --expand-tabs Çıktıda sekmeleri boşluk haline getirir." - -#: src/diff.c:888 src/diff3.c:452 -msgid "-T --initial-tab Make tabs line up by prepending a tab." -msgstr "" -"-T --initial-tab Başlarına bir sekme ilave ederek sekmelerin " -"hizalanmasını\n" -" sağlar." - -#: src/diff.c:890 -msgid "-r --recursive Recursively compare any subdirectories found." -msgstr "" -"-r --recursive Çevrimli olarak bulunan bütün alt dizinleri karşılaştırır." - -#: src/diff.c:891 -msgid "-N --new-file Treat absent files as empty." -msgstr "-N --new-file Var olmayan dosyaları boş varsayar." - -#: src/diff.c:892 -msgid "--unidirectional-new-file Treat absent first files as empty." -msgstr "--unidirectional-new-file Var olmayan birinci dosyayı boş varsayar." - -#: src/diff.c:893 -msgid "-s --report-identical-files Report when two files are the same." -msgstr "" -"-s --report-identical-files iki dosyanın birbirinin aynısı olup " -"olmadığını\n" -" bildirir." - -#: src/diff.c:894 -msgid "-x PAT --exclude=PAT Exclude files that match PAT." -msgstr "-x KALIP --exclude=KALIP KALIP'a uyan dosyaları işleme dahil etmez." - -#: src/diff.c:895 -msgid "" -"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." -msgstr "" -"-X DOSYA --exclude-from=DOSYA DOSYA'da bulunan kalıplara uyan dosyaları\n" -" işlem dışı tutar." - -#: src/diff.c:896 -msgid "" -"-S FILE --starting-file=FILE Start with FILE when comparing directories." -msgstr "" -"-S DOSYA --starting-file=DOSYA Dizinleri karşılaştırırken DOSYA'dan başlar." - -#: src/diff.c:897 -msgid "" -"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." -msgstr "" -"--from-file=DOSYA1 DOSYA1'i bütün işlenenlerle karşılaştırır. DOSYA1 dizin\n" -" olabilir." - -#: src/diff.c:898 -msgid "" -"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." -msgstr "" -"--to-file=DOSYA2 Bütün işlenenleri DOSYA2 ile karşılaştırı. DOSYA2 dizin\n" -" olabilir." - -#: src/diff.c:900 -msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." -msgstr "--horizon-lines=SAYI ortak ilkek ve soneklerin SAYI satırını tutar." - -#: src/diff.c:901 src/sdiff.c:200 -msgid "-d --minimal Try hard to find a smaller set of changes." -msgstr "-d --minimal Daha küçük bir fark kümesi bulmaya çalışır." - -#: src/diff.c:902 -msgid "" -"--speed-large-files Assume large files and many scattered small changes." -msgstr "" -"--speed-large-files Büyük dosyalar ve çok sayıda dağınık küçük \n" -" farklar olduğunu farzeder." - -#: src/diff.c:907 -msgid "" -"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." -msgstr "" -"DOSYAlar: `DOSYA1 DOSYA2' veya `DİZİN1 DİZİN2' veya `DİZİN DOSYA...' \n" -" veya `DOSYA...DİZİN';" - -#: src/diff.c:908 -msgid "" -"If --from-file or --to-file is given, there are no restrictions on FILES." -msgstr "" -"eğer --from-file veya --to-file kullanılmışsa, DOSYAlar üzerinde \n" -"kısıtlama yoktur." - -#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 -msgid "If a FILE is `-', read standard input." -msgstr "Eğer bir DOSYA `-' ise, standart girdi okunur." - -#: src/diff.c:920 -#, c-format -msgid "Usage: %s [OPTION]... FILES\n" -msgstr "Kullanım: %s [SEÇENEK]... DOSYAlar\n" - -#: src/diff.c:949 -#, c-format -msgid "conflicting %s option value `%s'" -msgstr "çelişkili %s seçeneği değeri: `%s'" - -#: src/diff.c:962 -msgid "conflicting output style options" -msgstr "çelişkili çıktı tarz seçenekleri" - -#: src/diff.c:976 -msgid "regular empty file" -msgstr "normal boş dosya" - -#: src/diff.c:976 -msgid "regular file" -msgstr "normal dosya" - -#: src/diff.c:978 -msgid "directory" -msgstr "dizin" - -#: src/diff.c:981 -msgid "block special file" -msgstr "blok özel dosyası" - -#: src/diff.c:984 -msgid "character special file" -msgstr "karakter özel dosyası" - -#: src/diff.c:987 -msgid "fifo" -msgstr "fifo" - -#: src/diff.c:991 -msgid "socket" -msgstr "soket" - -#: src/diff.c:994 -msgid "message queue" -msgstr "ileti kuyruğu" - -#: src/diff.c:997 -msgid "semaphore" -msgstr "semafor" - -#: src/diff.c:1000 -msgid "shared memory object" -msgstr "ortak bellek nesnesi" - -#: src/diff.c:1003 -msgid "typed memory object" -msgstr "türlenmiş bellek nesnesi" - -#: src/diff.c:1006 -msgid "weird file" -msgstr "dosya garip" - -#: src/diff.c:1070 src/diff.c:1256 -#, c-format -msgid "Only in %s: %s\n" -msgstr "Yalnızca %s'da: %s\n" - -#: src/diff.c:1193 -msgid "cannot compare `-' to a directory" -msgstr "`-', bir dizinle karşılaştırılamaz" - -#: src/diff.c:1220 -msgid "-D option not supported with directories" -msgstr "-D seçenek dizinler için kullanılamaz." - -#: src/diff.c:1229 -#, c-format -msgid "Common subdirectories: %s and %s\n" -msgstr "Ortak alt dizinler: %s ve %s\n" - -#: src/diff.c:1266 -#, c-format -msgid "File %s is a %s while file %s is a %s\n" -msgstr "%s dosyası, bir %s, halbuki %s dosyası bir %s\n" - -#: src/diff.c:1345 -#, c-format -msgid "Files %s and %s are identical\n" -msgstr "%s ve %s dosyaları birbirinin aynı\n" - -#: src/diff3.c:26 -msgid "Written by Randy Smith." -msgstr "Randy Smith tarafından yazılmıştır." - -#: src/diff3.c:328 -msgid "incompatible options" -msgstr "uyumsuz seçenekler" - -#: src/diff3.c:368 -msgid "`-' specified for more than one input file" -msgstr "`-' birden fazla girdi dosyası için belirtilmiş" - -#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 -#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 -msgid "read failed" -msgstr "okuma başarısız oldu" - -#: src/diff3.c:441 -msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." -msgstr "" -"-e --ed ESKİDOSYA ile SİZİNDOSYA arasındaki harmanlanmamış farkları\n" -" BENİMDOSYA'ya çıktılar." - -#: src/diff3.c:442 -msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." -msgstr "" -"-E --show-overlap Harmanlanmamış değişiklikleri çıktılar, ihtilafları \n" -" köşeli parantez içinde gösterir." - -#: src/diff3.c:443 -msgid "-A --show-all Output all changes, bracketing conflicts." -msgstr "" -"-A --show-all Bütün değişiklikleri çıktılar, ihtilafları köşeli parantez\n" -" içine alır." - -#: src/diff3.c:444 -msgid "-x --overlap-only Output overlapping changes." -msgstr "-x --overlap-only Birbiri ile örtüşen farkları gösterir." - -#: src/diff3.c:445 -msgid "-X Output overlapping changes, bracketing them." -msgstr "" -"-X Birbiriyle örtüşen farkları köşeli parantez içinde göstererek çıktılar." - -#: src/diff3.c:446 -msgid "-3 --easy-only Output unmerged nonoverlapping changes." -msgstr "" -"-3 --easy-only Harmanlanmamış, tekrarlanmayan değişiklikleri çıktılar." - -#: src/diff3.c:448 -msgid "-m --merge Output merged file instead of ed script (default -A)." -msgstr "" -"-m --merge Ed betiği yerine harmanlanmış dosya çıktılar. (öntanımlı -A)" - -#: src/diff3.c:449 -msgid "-L LABEL --label=LABEL Use LABEL instead of file name." -msgstr "-L ETİKET --label=ETİKET Dosya adı yerine ETİKET'i kullanır." - -#: src/diff3.c:450 -msgid "-i Append `w' and `q' commands to ed scripts." -msgstr "-i Ed betiklerinin sonuna `w' ve `q' komutlarını ekler." - -#: src/diff3.c:453 src/sdiff.c:202 -msgid "--diff-program=PROGRAM Use PROGRAM to compare files." -msgstr "" -"--diff-program=YAZILIM Dosyaları karşılaştırmak için YAZILIM'ı kullanır." - -#: src/diff3.c:465 -#, c-format -msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" -msgstr "Kullanım: %s [SEÇENEK]... BENİMDOSYA ESKİDOSYA SİZİNDOSYA\n" - -#: src/diff3.c:467 -msgid "Compare three files line by line." -msgstr "Üç dosyayı satır satır karşılaştırır." - -#: src/diff3.c:673 -msgid "internal error: screwup in format of diff blocks" -msgstr "iç hata: diff blokları biçemlemesinde hata oluştu" - -#: src/diff3.c:971 -#, c-format -msgid "%s: diff failed: " -msgstr "%s: diff başarısız oldu:" - -#: src/diff3.c:993 -msgid "internal error: invalid diff type in process_diff" -msgstr "iç hata: process_diff işlevi içinde geçersiz diff türü" - -#: src/diff3.c:1018 -msgid "invalid diff format; invalid change separator" -msgstr "geçersiz diff biçemi; geçersiz fark ayracı" - -#: src/diff3.c:1242 -msgid "invalid diff format; incomplete last line" -msgstr "geçersiz diff biçemi; tamamlanmamış son satır" - -#: src/diff3.c:1265 src/sdiff.c:273 -#, c-format -msgid "subsidiary program `%s' not executable" -msgstr "alt yazılım `%s' çalışır değil" - -#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 -#, c-format -msgid "subsidiary program `%s' not found" -msgstr "alt yazılım `%s' bulunamadı" - -#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 -#, c-format -msgid "subsidiary program `%s' failed" -msgstr "alt yazılım `%s' başarısız oldu" - -#: src/diff3.c:1294 -msgid "invalid diff format; incorrect leading line chars" -msgstr "geçersiz diff biçemi; geçersiz satır başı karakterleri" - -#: src/diff3.c:1370 -msgid "internal error: invalid diff type passed to output" -msgstr "iç hata: çıktıya geçersiz diff türü geçirildi" - -#: src/diff3.c:1647 src/diff3.c:1704 -msgid "input file shrank" -msgstr "girdi dosyası küçüldü" - -#: src/dir.c:162 -#, c-format -msgid "cannot compare file names `%s' and `%s'" -msgstr "dosya isimleri `%s' ve `%s' karşılaştırılamıyor" - -#: src/sdiff.c:35 -msgid "Written by Thomas Lord." -msgstr "Thomas Lord tarafından yazılmıştır." - -#: src/sdiff.c:183 -msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." -msgstr "" -"-o DOSYA --output=DOSYA Interaktif olarak çalışır, çıktıyı DOSYA'ya\n" -" yönlendirir." - -#: src/sdiff.c:185 -msgid "-i --ignore-case Consider upper- and lower-case to be the same." -msgstr "-i --ignore-case Büyük harf/küçük harf farkı gözetmez." - -#: src/sdiff.c:188 -msgid "-W --ignore-all-space Ignore all white space." -msgstr "-W --ignore-all-space Bütün boşlukları yok sayar." - -#: src/sdiff.c:194 -msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." -msgstr "" -"-w SAYI --width=SAYI Satır başına en fazla SAYI kadar karakter çıktılar\n" -" (öntanımlı 130)." - -#: src/sdiff.c:195 -msgid "-l --left-column Output only the left column of common lines." -msgstr "-l --left-column Ortak satırları yalnızca sol sütunda çıktılar." - -#: src/sdiff.c:196 -msgid "-s --suppress-common-lines Do not output common lines." -msgstr "-s --suppress-common-lines Ortak satırları göstermez." - -#: src/sdiff.c:201 -msgid "" -"-H --speed-large-files Assume large files and many scattered small changes." -msgstr "" -"-H --speed-large-files Büyük dosyalar ve çok sayıda dağınık küçük \n" -" farklar olduğunu farzeder." - -#: src/sdiff.c:214 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 FILE2\n" -msgstr "Kullanım: %s [SEÇENEK]... DOSYA1 DOSYA2\n" - -#: src/sdiff.c:215 -msgid "Side-by-side merge of file differences." -msgstr "Dosya farklarının yanyana katıştırılması." - -#: src/sdiff.c:327 -msgid "cannot interactively merge standard input" -msgstr "interaktif olarak standart girdi harmanlanamaz" - -#: src/sdiff.c:588 -msgid "both files to be compared are directories" -msgstr "karşılaştırılacak her iki dosya da dizin" - -#: src/sdiff.c:853 -msgid "" -"ed:\tEdit then use both versions, each decorated with a header.\n" -"eb:\tEdit then use both versions.\n" -"el:\tEdit then use the left version.\n" -"er:\tEdit then use the right version.\n" -"e:\tEdit a new version.\n" -"l:\tUse the left version.\n" -"r:\tUse the right version.\n" -"s:\tSilently include common lines.\n" -"v:\tVerbosely include common lines.\n" -"q:\tQuit.\n" -msgstr "" -"ed:\tDüzenler, sonra iki tarafı da kullanır, bir başlıkla süsler.\n" -"eb:\tDüzenler, sonra iki tarafı da kullanır.\n" -"el:\tDüzenler, sonra sol tarafı kullanır.\n" -"er:\tDüzenler, sonra sağ tarafı kullanır.\n" -"e:\tYeni bir sürüm düzenler.\n" -"l:\tSol tarafı kullanır.\n" -"r:\tSağ tarafı kullanır.\n" -"s:\tOrtak satırları sessizce dahil eder.\n" -"v:\tOrtak satırları bilgi vererek dahil eder.\n" -"q:\tÇıkar.\n" diff --git a/src/bin/diffutils/po/zh_TW.gmo b/src/bin/diffutils/po/zh_TW.gmo deleted file mode 100644 index c09ca46a5770dff3b94c400b81d8054c1665045a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21489 zcmb`O4}4rlb?+|)S|a|Wgd_wg%_QJ|iB^{6BsQ|;Sdt~#v1G}T9NRbsucRw! z=HA`aA1CDV_M`Fd-uZK8=FB-~&dfdj)a$PLu48_Ofj@AZ*FOaQ%yHfrHQ85|gMZ{W zS5`RAYX-mx-uFAsTW<&~%;CDf0O8AZ{|eIoJFW&-fzXhC-T^P2X7CH(I>&kEl^}H9xfNti@BAc4Kkt-s z=)UVs;9?M(!q<200%`ZIVeq}+^I#)OcOAG0+|D}P3H~MTw14;a!9V2hT_E-TunMdJ zKMJk@g}-G?`86Qpzn(s19M`8n_;Y;*q~7&Hr=BH&mdrzSgY!Tc2mDqtU&eUDYeDGU zz#N>F;E=^*ApPF(3y}HV$k?1EU;=y(=z+}h#;<^k^Trp=`+MlixrHiH?-D5eF^2bk z0=xkn2btS@AGPm423fy(Zw6Vvc_DBb#S-{OcgHJ)bsGZ~g|5HJ!g3 zL?7n=H3A(K16~RK3CMgG zdT?}G4Q86a}B44Tq@*(#9nF57HT=-k2k-&p)M2;bkw z9Ay#TC-so0_x(B849fTz`}_W{!77Q7mxFnGkg*Iox=S88P(9|rru z+rXb1tYfZXPwQlTYQcX5OF>x&ba1uEBmJ&stTLX}e+<&s>NDVbc)S9v1VbQn>bHZe zZ~ec3OTjN#{1phj2G&UEHN-*MHRM2atl^|C^;B=rqqa`OWZF%9~}q z1-F842BqEg;C)~PDE**+&5wZax%nBe)p6D{H<|x>8JFO_U>W#7Kn0!#=Ygz+%&+D5 zz&C-=7QVC~JJPO&HI(tUYyxitcY#vxGvJk=XY-GM@TcXQAmeTMPmuYxz7{!N0ltBE z_`IRsf#Z>t2EN1NzB zV{RJ)8GoCMi~iak0HNRZFvu9%z5z16w(o(+QQPw%_1b0rl(&nXF|PI-EW$ILzZ|@R z{M9ypJ@~u4%lM^Tr^Ov0^xH)apw<3oAmeTSoW-M{(3kZR{5B}eKU*}$u{A3#4*nJCEu_zrgomuP$g{JG^l6gFoBVDiZ6ztv zMw0*g1N$%l#z@;p|4gbQHIQ;7B_gv^LN(?40ezq8MOYq1di zgqNFa#+~42NFO8pHR*oRXGtF?75)zLvWfKHZDtKvVV|48#iTW)r8e&_u-86|%%n+O zq&89`Nq)ly#NIl4Nuqo5`y}b3q;7e!zpE_1A8he6E#3}}P0RZi-ZzsvNJ~iTNc%|J zNry;r(pu6dNPk9>-y2E&B;;EE#`*V;N$(|z{gU4f1I|alH;_t6F6nh7^voG04Uyz` znDlzmKauVs75+Y8Uq-;cCw-3eH>4X$@(URdpGxel{v|DzgPo)Zsg?9@(gxC-N%KfO zB>9OhUrD-}R7IL3`M*jY7Lh#C6{KaP1*HE*`cqPdlpy5gq zt1p}gccq|F=hwKarKQDI%9jq(k&1Vv!ck~PJ9#g5fX{N%lZvABIZ4GVPx@qm|jy2o1mThfqtFPO(?cVPA z?#&-+s_*EiZ&PX@5s9UGLdnz+lS>Y`U8+a;qDysG%DyC3IN_==V~j_m@j=0ain)WT zHxW+{lq&LIN>@1P>XLZ0+mslV3R@eL>WL(hDLq#eOZRuW3EKsoFrn}qW$Tr#t>QhF zQPrv`)Nr%mlF+V)d?^3g48fZ#9R8hsf$2?F+>ND@K25{d=*)srXpgMs+op!GCDRFk0Y^xbP+FPxE)(s>s2JFw!^;#rD{8U0C0MHI)-q?dfn~? zWyq0V&oq$opcFFgJ0b&GXbr#H*R5@>P@O|5Bn%E}`O<wW8RXukT4((sx&#(0}tKqDy4HG(Wu*tqQnPM5o9?OQuDe@ z-AHU#I2!4mrNq|VKCf$Da)IiOyUEyslnRSzGBsqiH{H+j8Ztp;sxqi>e`lmO9Z%~S zRQbfW3!#L&GaX65r#WeaLcc|ap-s&G6%WtWo^yn=4X%(|=~%+;iucAM_qYMe41)|C zW-ZtADRDv}EmI+_%^`HVKb)%8W>U3B`XkYBqEvMvucpKoKrO<$Nm6NxCoRe#rsXmu zg5uNCnm8*hEA)XnSW?nJNOeYH;lz+qZEm<*OYLAHl5$mdI2Bfrn6kzF7+I+;!WtS# z#CsFr{_57Ymd3UkjKM~%lK+CK#AptPHS0kLlhR7;Zb;sA2cb|ZZr(cMSaGq6k)DX# zU0AW&XpyS3q|7U{5kVx%O<;(VXsXHYLYz7wj_|WYsd!>YdhK(g14^}|Q(_2GeXP6W z=#qFMa!)*_8JMhIzmX}dbKL~mw58)DHk2c)WI$}3wvnQz{dOMpHNNBH_Y*MM3WD@mfM{*zaUlIK}>riXjS zo^djjhzx{$10U*2U`iz`Z}Ypti9{p}(S(~yCt?b7r6(`rutK9Hqf!NuQ791pK3!=g zqmpHqO)}E4h>;ZRVK^FM7clauIudReGuN5Kwpr7yg;+Lbw|^ida6ZE6&Lu0jCU(?J!4xyfIx2M{?*}>bP zYXL>cWRPn6dvrzJ3>%9y$WT`M_B<9(sbqR!Af8AuX>FZ+?TffcCuF)ZI+6-^hTPo) zVPujOoj&UBv?~ioC0qepiJmk8%`VH%fMo%zEpO-K+ZxUB|6lUER<#vQ3Jc!V$4Xf% zB4xhr&$b*ag>C^6CfB5zYHI88lR{`#ryH%duVP8fVmG!j3%&cew$tMEnQ)WXI9@)ZZMe^DJsqwA5JWe%(M1 zpYa(_5;MhqV<%a!olD1Not*{I> zj(XG~BZ$GItXv9R*+s(r@ig{?l`NjArlU^?A>%!&Ryi(Mk5G(&&ZfsMdaTpi6FqC! zdUtB8Y+Ty{X35^Q5XBCsqbapyQGOrmiVv{48i$0G3%U*WyNUTgKG+0&C=E1M4 z6|q|MP?HkQ_s2Q&;1Y;A7qe*AUO20@uv-Swk5uaoumd-U<7c-Rqn-!{y|CHB*hQ1B zUOv07EC>ROxY6DkP_`M~l3na(A|ca@r&}y@5^ZT(ttFTKwzO<))6cAbTs3czXXr$v z8*BKDdl78xm|iy#()+GH8yfe6#yCPU^(21AtQ34B6~@$A}r%2o{;Zrba*&8BCjzR@Pw)UdhWY2PJ${&gRZQjtRsFEh^^1L$fK+QZ$)so% z_kBjr-o1Tl`#@rWOg5+)ku}zh+2}iE&-FVNg|(+?IplOJ4p?d9Pl}~8{4Uh&ewl*a zeghhXn{mM|5U@J0=AoKJ41{TiLWwT?vb-?1)wTO)3G2tjRMXn#wc3npt5R)WeGgj< zqiBoC_6?7@_mB<@PpnmK5f7Z1BCR~2z`NY&P$_C+Oux@R)0!df6bhY*h}#nkQZEr( z4*X773v0MTbsR%x?e z9rgE_gWn>%_Hs28ak)fscSrDJQsGn@ryqaLZ_Yl3XA{DQj-?`9?0IGrU?`Gr_R7?t z7z(}Ta@r|SIz0e!jyUQjkxjWn@?EyoaXdtnWT8_p9uX!lseXqyplb5Q0YTaC^Q)9PW71+lBMj+Nzr~& zv7~&FRkNf*Hng#&-`&!$-NuXETentM%)gdpM;u!UvaC?snNlH3n-f z`!8!`^gpS0j!my-W_ph$j%--%`VMouJXUCjs&aw8 zTU))htwQln{#BQjm6e%tz1fwONtFdql6wNiE%!8nxCCU#ybE$mbTxf{Ch8&6LAYe&)-LIwHKT$rN>_EO{`ROS#D!Vu{i#N99*@RA~r&gy}itVQdmDryX_%8 zmHtRlF0xB$gX@l2iFJ!ZVK=wwE#|6bZ{<2U3qpv?LD`_4wKf|k#9oniaiyD7a-onf za<$8zaC_4n>g5Bl{j^)_*e9p|u z&2B$;FEsB9r#ZcJJL}`deB|BPyx8OVt)L z;tE~GxK1LxGEDO!K-jJKbiIkl{WUz*zO^V8tqaYkaYyU|75a$OOLyTbCY=tsPP6xb zvL(CrW@>$l+EmllRsJXlt;C7wn+hFJFQh^QDB zpmOELam8N1<@+dMXJ=axa(Ep5!3AC8`i-j5jp2kuRcpGFHBe0v-2J3mR?+~IkVo-S z%(bdqK7>2jIE4;Q8-fHeZrqa?Jt3`)jObIhs%vT8vUYuAnbYBaj}UcCqH%p>4XN#z z9CO9EK(EI1j>?>ku^qAaASQVTRp?i4A`wrJsZXDDuux3nT?-3x7U`Tt1vy(KXX^(F za_+j<*_h;lOk4J?Ev+4ETh?#GkZMC@jc&KRJ`4F5TnJyhGZ~M%DR;Sw)0c{*E>|UuL_wiT2@xtT z$lq+|C4>tIxz!Yzlv`;LIHxlj$I$C*aHQB|$;G%lX)A^CLB(YAX5h$kfzRu3!71*f zEoT7wq*8DbKD|aD<7`^;@kES@JoxpBTzX|pLGecB1Y1k-pu749s#JYTgBU0=)f^=C z4W^h#w8efU(ni(xSWv;Zvuv62q104O7E#ciXi(y_V94P!*A?~MtPTnsQ?dy9tAcfa zQEqMJy7_V=Cl-5C8RkZ2HM+5IRY*2Vj9!b!rBXu! zBI~kM$iDGG$$SMZ25@XxD>e`#7c-i0)8YL%2pv2mmXp-IAMz&DijdMUXI8fTl{H&4D<1g+XcsW8O&~|y=3#P+6nwP`OIRh zpr55pViLb^fQh6o;b~f?OyWypi#D=;+N}OgnT=sA)Ca=Z=w_?Qch=XE8K6v^g z5zg4}<<4BiG9h<2mk=DoG1!-@rtcseaX0nXFl}wk{itu$L?xz=e$b7u_33$<&##s# zt%+O^vb?-9RDMgS{8m+Q zOI1aAsC-$uR1CG@X$zU6dP_nTOH}!7Rpqzctm`!qDH6i(iQ(=bW>u<&FBGb-&rKt& zEBeFT-SOU42yJ?|c*|vdJ64u7A(?4JDb(SH`>UucUr}AP5X*vXro(V_ky>$2Unp8p z9xG^@8eCb@ytcVMKfQ{w@)9mN#bpe2z^W=7zTK(C1JQ6Kwp?z46I{kt*G778%~zA5 za!d-;Cgzr=_yDSwB>&+~$M#j!uo#WmkEZ3{eS{IpOa6hJ++d{rF@D zPc|q?PfX?3Ap02Y9<~3Hml^#@?#W{pS4h!HGo@oc+J8<{QYw4*iC$AA)npP!lcQ6o z&+q?6rY1XZqSw#;;umdhovl4}bp5fN-avMvWwvmd_$2R=Fy!DvGFW(b>DY1Gkq%HY zrIQcu`~EEDeE0G$oj8ZvT&+Ws)S{qi{pEs_iWh|sZpSW4-`T1CHnNCo+PuT&E)V2 zGTz=tGPxiSiTpYfh-50;mJodI!6zBZ-baLh*%O3F9mEf2k2eK!Hu>=Av-(E9LXBVa zp3NRR`1L?+MyG<(%Agby_-XuQ_js+D#)A*ZvuT*Av2T|o)@4SWOF_BrW^7_+WKyP4 z?`gUF4?LD>ghr;3UN(>Jkog=rtnMGQQAwG`!%h1inwcxLGC7Gy%6KeMWFqBlo_OrU zxsgY6kI0xZjkX5mV=dV|dtW@+F*-H9)G$Kc#fkx z&OA2UV&>`3%Z%!9Q*oIY-(_QnU|8dsm%Lw#{2sjzDb%4wqTiFX2k)`rL?VcyV=VLB z5kzVRDIHl9kTT+1M9PmK5+yJA<Mr|8!PT9tJ+lff_Vjm(3Z)LL4-BR( zdp0{dwfAvvQYbIZJ#p$c!>gpDOr5#2G>RtqdYC4Fs9;Lw@$A3np7f57tRCL@KxXfY zrsm9mBB{I3J1zsu?ipSs>#&FsT9;F{`ogFoDj)rcKWA^#)HnB^&+f^dKK0}5-C}5U zC*md+hkKdvyv&lBy&>TJ+%ZGb2XOShX#?;hh3Gc7CU@$g+RK=F|^!oAoef zi5HS_P8^)vCT!1c$ezyL?On{((qDEs1dPL^$d-fkwQWv*Eg}pH>a|# z=1xw1hcQf#8WLlz$xI6w5^5oVc*}MR9bb_tna1fic>` zPto+th6u^1ylrSN9=H19_YUnFn;1Qd5t=qUwtgE)V816>&KQ0caB)t~%oQT^+lcGS z2L|~}K6uvKET(L9YDMnUT^a5&ytQmPUcoEGy{@epE$Q>BqX)Dx3A{M7mFW6$jb)yU-|z4JsOezoAU-Vaxl0mpFaC zki~Nc3+d^J+L_6nIG1}u9IxpzJ~K+l^zJp~HjjP#;IQ}Xv3?{-J6hWu|K{ zFt%1p2GK&oDv`hy^1gE6@xjS$Y6-6OA{!>8&jeH0kd4_N_@P2RtsqwD;l5c|$tOATVs0~P=ije;Pv+xCyox+ojjaGWqkw*DJAN`3pIr5ZuY3$qLspirmM7hy3 zPs1fEFw^3Uf~E)7%fd~#-jkW!K*G!p*Z1`J5t(CgfKkv$tMJHEqYsPS5d$E~f2@CR zbIu!o*f#_x&W(RrXcUGQ`4nV);%@BwzOilI#q6H3mIAhGtDucH0Y*Y4A7P{gSb~eR z-zWMlGca{#k1v{h*z1$+!Uh)kCsAnGn4<|6Zr+$-NHSs}z zTbn(Ah*9BvqG)(a$9^=?k!i@K5AMnRtM`E;Uoza*?dFOc!oeST$~uUvPJ9&y|Ip!P zSqqt)%tyDLBQm5|#J+u$E4i8G26h{o@nIa@d_vRkZ zlcU}oQA5&Tww-ylpdp{QI0Qmoq(LHZGTZddL)=j21Birm*k=hBQf6hR?d}Y2x6-je z!G>-^h5Y_xN0;53n+U0v-^6DL7P4(}Yf$1kgzX%Pi;rX&%&vilGBX-V8cm;+GTW&R zhVmyR?Tdqj{2|JT@A8I2xBYDe!asD&9nAx+{!NYCEGUjSa-lQnt@2t&r;ON_I3o1E zVEQ+SNQq=;JB++e%Py{6pwV)QZkO9j?1DKwWpd_Ztv@=Oo30=lD0tPr86UCb0!(&k zWm?H+Z7S=lEo~VX{8-Dpq^A#AG8K6%ar`nfJ+Z?1yh09m1EY=NVXz>;BLO|KUFwTXsp4dZ z_qn4}`BR3@JlQ?@b2&6i8&hjf?v&h<5H?q%P@}A|wc}H!vMBQX+*MXI{WNMpDhR$my@0Mjm++=DS zgKS;WNXgPA1ltg6lc_2B!Z(>_N2azlQ(K>@eSfBQi}D7%<7ZwvaN71?Aqr)JZN^%} z@f6uOdY||n`E5A&1hp|Om=!T9vhPZ@?C=pz7WRPbjpXifyyKIxvp?jxwqxJ_${wG* zYjkRSd>{32#P^K8bRaCu-PdyF@l4%tjZAz0w;ueKni>95V#8mwFdX>hp>K`vJDNOn zaJbRX&(t0J+Q|ziFHAhgC5srB zf?5Q*J14i( zQcY)@Ycu(LrnB@k-0n={6(^IYo*8*coOq|apClq+?r!Q zlI#6U9RVhnZ%vITHH7Qt&>*x%F7mbUlJqGQ5`Os(zyIQLWqXj1bJChNQOPT&Np2#@ z4JeVDlw29P%rA>;iuK|%f!siQorm4=1J)DTHCMf(_Z8LKDfPbiiz6R`Hqs;ZL>9m@ zUx$`(%lV!CY)_iWMy$TDB|G3`xyRHNzOgW1MB6f@PaJ1n+Bar4uAt`8FHN44b!5SH z6_U-^5fA0vVjZv;eofZX)MrJ7d3+>*#;NO8O1Y?Nv6zh?3Y z;P`|8?gS;$L#APDi+qbT7sn#heAi+(_Jk9p5JM!|ENHElC4IaTRi_CEdqm;BPHDG>WH@xQ%G&hXRtX3tJ9cCr_}KDqvp e{^c&oN?G>wnU{k8vwIFT%jXL{MmbmNDf~aduo;^G diff --git a/src/bin/diffutils/po/zh_TW.po b/src/bin/diffutils/po/zh_TW.po deleted file mode 100644 index aff39f9602..0000000000 --- a/src/bin/diffutils/po/zh_TW.po +++ /dev/null @@ -1,922 +0,0 @@ -# traditional Chinese translation for diffutils. -# Copyright (C) 2002 Free Software Foundation, Inc. -# Abel Cheung , 2002. -# -msgid "" -msgstr "" -"Project-Id-Version: diffutils 2.7.10\n" -"POT-Creation-Date: 2002-04-05 14:10-0800\n" -"PO-Revision-Date: 2002-03-13 06:06+0800\n" -"Last-Translator: Abel Cheung \n" -"Language-Team: Chinese (traditional) \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=Big5\n" -"Content-Transfer-Encoding: 8bit\n" - -#: lib/c-stack.c:188 -msgid "program error" -msgstr "{~" - -#: lib/c-stack.c:189 -msgid "stack overflow" -msgstr "|" - -#: lib/error.c:128 lib/error.c:156 -msgid "Unknown system error" -msgstr "tο~" - -#: lib/freesoft.c:27 -msgid "" -"This program comes with NO WARRANTY, to the extent permitted by law.\n" -"You may redistribute copies of this program\n" -"under the terms of the GNU General Public License.\n" -"For more information about these matters, see the file named COPYING." -msgstr "" -"nbkߤ\פUaOҡCAiHھ GNU General Public\n" -"License ڭsGnCԽнаѦɮ COPYINGC" - -#: lib/getopt.c:693 -#, c-format -msgid "%s: option `%s' is ambiguous\n" -msgstr "%sGﶵ%sOT\n" - -#: lib/getopt.c:718 -#, c-format -msgid "%s: option `--%s' doesn't allow an argument\n" -msgstr "%sGﶵ--%sitXѼƨϥ\n" - -#: lib/getopt.c:723 -#, c-format -msgid "%s: option `%c%s' doesn't allow an argument\n" -msgstr "%sGﶵ%c%sitXѼƨϥ\n" - -#: lib/getopt.c:741 lib/getopt.c:914 -#, c-format -msgid "%s: option `%s' requires an argument\n" -msgstr "%sGﶵ%sݭnѼ\n" - -#: lib/getopt.c:770 -#, c-format -msgid "%s: unrecognized option `--%s'\n" -msgstr "%sGLkѧOﶵ--%s\n" - -#: lib/getopt.c:774 -#, c-format -msgid "%s: unrecognized option `%c%s'\n" -msgstr "%sGLkѧOﶵ%c%s\n" - -#: lib/getopt.c:800 -#, c-format -msgid "%s: illegal option -- %c\n" -msgstr "%sGXkﶵ w %c\n" - -#: lib/getopt.c:803 -#, c-format -msgid "%s: invalid option -- %c\n" -msgstr "%sGLĪﶵ w %c\n" - -#: lib/getopt.c:833 lib/getopt.c:963 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "%sGﶵݭnѼ w %c\n" - -#: lib/getopt.c:880 -#, c-format -msgid "%s: option `-W %s' is ambiguous\n" -msgstr "%sGﶵ-W %sOT\n" - -#: lib/getopt.c:898 -#, c-format -msgid "%s: option `-W %s' doesn't allow an argument\n" -msgstr "%sGﶵ-W %sitXѼƨϥ\n" - -#: lib/regex.c:1367 -msgid "Success" -msgstr "\" - -#: lib/regex.c:1370 -msgid "No match" -msgstr "SŦXr" - -#: lib/regex.c:1373 -msgid "Invalid regular expression" -msgstr "TWܦ" - -#: lib/regex.c:1376 -msgid "Invalid collation character" -msgstr "LĪ collation r" - -#: lib/regex.c:1379 -msgid "Invalid character class name" -msgstr "LĪrW" - -#: lib/regex.c:1382 -msgid "Trailing backslash" -msgstr "ݦhlϱ׸" - -#: lib/regex.c:1385 -msgid "Invalid back reference" -msgstr "LĪ back reference" - -#: lib/regex.c:1388 -msgid "Unmatched [ or [^" -msgstr "S [ [^" - -#: lib/regex.c:1391 -msgid "Unmatched ( or \\(" -msgstr "S ( \\(" - -#: lib/regex.c:1394 -msgid "Unmatched \\{" -msgstr "S \\{" - -#: lib/regex.c:1397 -msgid "Invalid content of \\{\\}" -msgstr "\\{\\} eL" - -#: lib/regex.c:1400 -msgid "Invalid range end" -msgstr "d򥽺ݦrL" - -#: lib/regex.c:1403 -msgid "Memory exhausted" -msgstr "OӺ" - -#: lib/regex.c:1406 -msgid "Invalid preceding regular expression" -msgstr "eWܦL" - -#: lib/regex.c:1409 -msgid "Premature end of regular expression" -msgstr "WܦL" - -#: lib/regex.c:1412 -msgid "Regular expression too big" -msgstr "WܦL" - -#: lib/regex.c:1415 -msgid "Unmatched ) or \\)" -msgstr "S ) \\)" - -#: lib/regex.c:8034 -msgid "No previous regular expression" -msgstr "eS󥿳Wܦ" - -#: lib/xmalloc.c:63 -msgid "memory exhausted" -msgstr "OӺ" - -#: src/analyze.c:809 src/diff.c:1283 -#, c-format -msgid "Files %s and %s differ\n" -msgstr "ɮ %s P %s P\n" - -#: src/analyze.c:812 -#, c-format -msgid "Binary files %s and %s differ\n" -msgstr "GX %s P %s P\n" - -#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 -msgid "No newline at end of file" -msgstr "ɮץS newline r" - -#: src/cmp.c:43 -msgid "Written by Torbjorn Granlund and David MacKenzie." -msgstr " Torbjorn Granlund David MacKenzie sgC" - -#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 -#, c-format -msgid "Try `%s --help' for more information." -msgstr "йա%s --helphTC" - -#: src/cmp.c:137 -#, c-format -msgid "invalid --ignore-initial value `%s'" -msgstr "LĪ --ignore-initial ȡ%s" - -#: src/cmp.c:146 -msgid "options -l and -s are incompatible" -msgstr "-l M -s ﶵݮe" - -#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 -#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 -#: src/util.c:286 src/util.c:293 -msgid "write failed" -msgstr "gJ" - -#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 -#: src/sdiff.c:179 -msgid "standard output" -msgstr "зǿX" - -#: src/cmp.c:160 -msgid "-b --print-bytes Print differing bytes." -msgstr "-b --print-bytes LX۲m줸աC" - -#: src/cmp.c:161 -msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." -msgstr "-i SKIP --ignore-initial=SKIP LJƪ̪ SKIP Ӧ줸աC" - -#: src/cmp.c:162 -msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" -msgstr "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" - -#: src/cmp.c:163 -msgid "" -" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." -msgstr " L FILE1 ̪ SKIP1 Ӧ줸թM FILE2 ̪ SKIP2 Ӧ줸աC" - -#: src/cmp.c:164 -msgid "-l --verbose Output byte numbers and values of all differing bytes." -msgstr "-l --verbose ܨ̩Ҧ۲mM̪줸ռƭȡC" - -#: src/cmp.c:165 -msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." -msgstr "-n LIMIT --bytes=LIMIT ̦h LIMIT Ӧ줸աC" - -#: src/cmp.c:166 -msgid "-s --quiet --silent Output nothing; yield exit status only." -msgstr "-s --quiet --silent XTFuͦ^ǭȡC" - -#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 -msgid "-v --version Output version info." -msgstr "-v --version ܪTC" - -#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 -msgid "--help Output this help." -msgstr "--help ܦDUC" - -#: src/cmp.c:177 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" -msgstr "ΪkG%s [ﶵ]... ɮ1 [ɮ2 [SKIP1 [SKIP2]]]\n" - -#: src/cmp.c:179 -msgid "Compare two files byte by byte." -msgstr "ɮתC@Ӧ줸աC" - -#: src/cmp.c:183 -msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." -msgstr "SKIP1 M SKIP2 OCɮ׷|L줸ռƥءC" - -#: src/cmp.c:184 -msgid "" -"SKIP values may be followed by the following multiplicative suffixes:\n" -"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" -"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." -msgstr "" -"SKIP ȥiH[WHUG\n" -"kB=1000BK=1024BMB=1000000BM=1048576BGB=1000000000BG=1073741824A\n" -"٦ TBPBEBZBY pC" - -#: src/cmp.c:187 -msgid "If a FILE is `-' or missing, read standard input." -msgstr "pGɮ׬O-ΨSwAhѼзǿJŪJơC" - -#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 -msgid "Report bugs to ." -msgstr "ЦV ^~C" - -#: src/cmp.c:231 -#, c-format -msgid "invalid --bytes value `%s'" -msgstr "LĪ --bytes ȡ%s" - -#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 -#, c-format -msgid "missing operand after `%s'" -msgstr "%sʤ֤FѼ" - -#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 -#, c-format -msgid "extra operand `%s'" -msgstr "hlѼơ%s" - -#: src/cmp.c:477 -#, c-format -msgid "%s %s differ: byte %s, line %s\n" -msgstr "%s %s PG %s 줸աA %s \n" - -#: src/cmp.c:495 -#, c-format -msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" -msgstr "%s %s PG %s A %s 줸լ %3o %s %3o %s\n" - -#: src/cmp.c:543 -#, c-format -msgid "cmp: EOF on %s\n" -msgstr "cmpG%s w\n" - -#: src/diff.c:41 -msgid "" -"Written by Paul Eggert, Mike Haertel, David Hayes,\n" -"Richard Stallman, and Len Tower." -msgstr "" -" Paul EggertBMike HaertelBDavid HayesB\n" -"Richard Stallman M Len Tower sgC" - -#: src/diff.c:322 -#, c-format -msgid "invalid context length `%s'" -msgstr "LĪWUơ%s" - -#: src/diff.c:405 -msgid "pagination not supported on this host" -msgstr "tΤ䴩" - -#: src/diff.c:420 src/diff3.c:315 -msgid "too many file label options" -msgstr "Ӧhɮ׼лxﶵ" - -#: src/diff.c:498 -#, c-format -msgid "invalid width `%s'" -msgstr "LĪeס%s" - -#: src/diff.c:502 -msgid "conflicting width options" -msgstr "۩IJe׿ﶵ" - -#: src/diff.c:526 -#, c-format -msgid "invalid horizon length `%s'" -msgstr "LĪס%s" - -#: src/diff.c:629 -#, c-format -msgid "`-%ld' option is obsolete; use `-%c %ld'" -msgstr "-%ldﶵwLɡFШϥΡ-%c %ld" - -#: src/diff.c:641 -#, c-format -msgid "`-%ld' option is obsolete; omit it" -msgstr "-%ldﶵwLɡF|ﶵ" - -#: src/diff.c:709 -msgid "--from-file and --to-file both specified" -msgstr "PɫwF --from-file --to-file ﶵ" - -#: src/diff.c:832 -msgid "Compare files line by line." -msgstr "ɮתC@C" - -#: src/diff.c:834 -msgid "-i --ignore-case Ignore case differences in file contents." -msgstr "-i --ignore-case ɮפejpgC" - -#: src/diff.c:835 -msgid "--ignore-file-name-case Ignore case when comparing file names." -msgstr "--ignore-file-name-case ɮצWٮɤjpgC" - -#: src/diff.c:836 -msgid "--no-ignore-file-name-case Consider case when comparing file names." -msgstr "--no-ignore-file-name-case ɮצWٮɷ|jpgC" - -#: src/diff.c:837 src/sdiff.c:186 -msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." -msgstr "-E --ignore-tab-expansion ]N tab ഫŮӳytC" - -#: src/diff.c:838 src/sdiff.c:187 -msgid "-b --ignore-space-change Ignore changes in the amount of white space." -msgstr "-b --ignore-space-change ]ťզrƥؤPӳytC" - -#: src/diff.c:839 -msgid "-w --ignore-all-space Ignore all white space." -msgstr "-w --ignore-all-space ҦťզrC" - -#: src/diff.c:840 src/sdiff.c:189 -msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." -msgstr "-B --ignore-blank-lines ]ŦӳytC" - -#: src/diff.c:841 src/sdiff.c:190 -msgid "" -"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." -msgstr "" -"-I RE --ignore-matching-lines=RE ŦXwaC" - -#: src/diff.c:842 src/sdiff.c:191 -msgid "--strip-trailing-cr Strip trailing carriage return on input." -msgstr "--strip-trailing-cr hJƨC楽ݪ carriage return rC" - -#: src/diff.c:844 -msgid "--binary Read and write data in binary mode." -msgstr "--binary HGXɼҦŪgơC" - -#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 -msgid "-a --text Treat all files as text." -msgstr "-a --text Ҧɮ׳Hrɤ覡BzC" - -#: src/diff.c:848 -msgid "" -"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " -"context.\n" -"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " -"context.\n" -" --label LABEL Use LABEL instead of file name.\n" -" -p --show-c-function Show which C function each change is in.\n" -" -F RE --show-function-line=RE Show the most recent line matching RE." -msgstr "" -"-c -C --context[=] ܫw<>(w] 3 )copied 榡WU\n" -"-u -U --unified[=] ܫw<>(w] 3 )unified 榡WU" -"\n" -" --label лx ϥ<лx>NɮצW١C\n" -" -p --show-c-function ܩMCӮt C 禡W١C\n" -" -F RE --show-function-line=RE ̱ܳӲŦX@C" - -#: src/diff.c:853 -msgid "-q --brief Output only whether files differ." -msgstr "-q --brief uɮ׬O_PC" - -#: src/diff.c:854 -msgid "-e --ed Output an ed script." -msgstr "-e --ed H ed script 覡XC" - -#: src/diff.c:855 -msgid "--normal Output a normal diff." -msgstr "--normal H` diff 覡XC" - -#: src/diff.c:856 -msgid "-n --rcs Output an RCS format diff." -msgstr "-n --rcs H RCS diff 榡XC" - -#: src/diff.c:857 -msgid "" -"-y --side-by-side Output in two columns.\n" -" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" -" --left-column Output only the left column of common lines.\n" -" --suppress-common-lines Do not output common lines." -msgstr "" -"-y --side-by-side HCñƪ覡ܡC\n" -" -W NUM --width=NUM C̦ܳh NUM (w] 130) ӦrC\n" -" --left-column ۦPɥuܥ䪺@C\n" -" --suppress-common-lines ۦPɤ|ܡC" - -#: src/diff.c:861 -msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." -msgstr "-D NAME --ifdef=NAME XƥH#ifdef NAME覡ЩtC" - -#: src/diff.c:862 -msgid "" -"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." -msgstr "" -"--GTYPE-group-format=GFMT ĪGA|H GFMT 榡Bz GTYPE JաC" - -#: src/diff.c:863 -msgid "--line-format=LFMT Similar, but format all input lines with LFMT." -msgstr "--line-format=LFMT ĪGA|H LFMT 榡BzC@ơC" - -#: src/diff.c:864 -msgid "" -"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." -msgstr "" -"--LTYPE-line-format=LFMT ĪGA|H LFMT 榡Bz LTYPE JաC" - -#: src/diff.c:865 -msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." -msgstr "" -" LTYPE iHOoldBnewΡunchangedCGTYPE iHO LTYPE \n" -" άOchangedC" - -#: src/diff.c:866 -msgid "" -" GFMT may contain:\n" -" %< lines from FILE1\n" -" %> lines from FILE2\n" -" %= lines common to FILE1 and FILE2\n" -" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" -" LETTERs are as follows for new group, lower case for old group:\n" -" F first line number\n" -" L last line number\n" -" N number of lines = L-F+1\n" -" E F-1\n" -" M L+1" -msgstr "" -" GFMT i]AG\n" -" %< ӲդCݩ FILE1 t\n" -" %> ӲդCݩ FILE2 t\n" -" %= ӲդPɦb FILE1 M FILE2 X{C@\n" -" %[-][e][.[T]]{doxX}r H printf 榡ܸN\n" -" jgݩsɮסApgݩªɮסCNqpUG\n" -" F դĤ@檺渹\n" -" L դ̫@檺渹\n" -" N ( =L-F+1 )\n" -" E F-1\n" -" M L+1" - -#: src/diff.c:877 -msgid "" -" LFMT may contain:\n" -" %L contents of line\n" -" %l contents of line, excluding any trailing newline\n" -" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" -msgstr "" -" LFMT i]AG\n" -" %L Ӧ檺e\n" -" %l Ӧ檺eA]A newline r\n" -" %[-][e][.[T]]{doxX}n H printf 榡ܪJƦ渹" - -#: src/diff.c:881 -msgid "" -" Either GFMT or LFMT may contain:\n" -" %% %\n" -" %c'C' the single character C\n" -" %c'\\OOO' the character with octal code OOO" -msgstr "" -" GFMT LFMT i]AG\n" -" %% %\n" -" %c'C' r C\n" -" %c'\\OOO' KiƦr OOO ҥNr" - -#: src/diff.c:886 -msgid "-l --paginate Pass the output through `pr' to paginate it." -msgstr "-l --paginate NXeܡprOӤC" - -#: src/diff.c:887 src/sdiff.c:198 -msgid "-t --expand-tabs Expand tabs to spaces in output." -msgstr "-t --expand-tabs NX tab ŮC" - -#: src/diff.c:888 src/diff3.c:452 -msgid "-T --initial-tab Make tabs line up by prepending a tab." -msgstr "-T --initial-tab C[W tab rA tab riHC" - -#: src/diff.c:890 -msgid "-r --recursive Recursively compare any subdirectories found." -msgstr "-r --recursive sPҦƥؿ@_C" - -#: src/diff.c:891 -msgid "-N --new-file Treat absent files as empty." -msgstr "-N --new-file sbɮץHťɮפ覡BzC" - -#: src/diff.c:892 -msgid "--unidirectional-new-file Treat absent first files as empty." -msgstr "--unidirectional-new-file YĤ@ɮפsbAHťɮ׳BzC" - -#: src/diff.c:893 -msgid "-s --report-identical-files Report when two files are the same." -msgstr "-s --report-identical-files ɮפ@ˮɤMܵGC" - -#: src/diff.c:894 -msgid "-x PAT --exclude=PAT Exclude files that match PAT." -msgstr "-x PAT --exclude=PAT ư˦ PAT ɮסC" - -#: src/diff.c:895 -msgid "" -"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." -msgstr "-X FILE --exclude-from=FILE ưҦb FILE CX˦ɮסC" - -#: src/diff.c:896 -msgid "" -"-S FILE --starting-file=FILE Start with FILE when comparing directories." -msgstr "-S FILE --starting-file=FILE ؿɡA FILE }lC" - -#: src/diff.c:897 -msgid "" -"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." -msgstr "" -"--from-file=FILE1 N FILE1 MѼƤҦɮ/ؿ@CFILE1 iHOؿC" - -#: src/diff.c:898 -msgid "" -"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." -msgstr "" -"--to-file=FILE2 NѼƤҦɮ/ؿM FILE2 @CFILE2 iHOؿC" - -#: src/diff.c:900 -msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." -msgstr "--horizon-lines=NUM (ﶵ@Bz)" - -#: src/diff.c:901 src/sdiff.c:200 -msgid "-d --minimal Try hard to find a smaller set of changes." -msgstr "-d --minimal ɥiX̤ptC" - -#: src/diff.c:902 -msgid "" -"--speed-large-files Assume large files and many scattered small changes." -msgstr "--speed-large-files ]ɮפQjӥBt\hǷLtC" - -#: src/diff.c:907 -msgid "" -"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." -msgstr "" -"FILES 榡iHOFILE1 FILE2BDIR1 DIR2BDIR FILE...\n" -" FILE... DIRC" - -#: src/diff.c:908 -msgid "" -"If --from-file or --to-file is given, there are no restrictions on FILES." -msgstr "pGϥ --from-file --to-file ﶵAFILES 榡hC" - -#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 -msgid "If a FILE is `-', read standard input." -msgstr "pG FILE O-AhѼзǿJŪơC" - -# It is intentional *not* to translate FILES -- maddog -#: src/diff.c:920 -#, c-format -msgid "Usage: %s [OPTION]... FILES\n" -msgstr "ΪkG%s [ﶵ]... FILES\n" - -#: src/diff.c:949 -#, c-format -msgid "conflicting %s option value `%s'" -msgstr "ۥ٬ު %s ﶵAѼƭȬ%s" - -#: src/diff.c:962 -msgid "conflicting output style options" -msgstr "ۥ٬ުXҦﶵ" - -#: src/diff.c:976 -msgid "regular empty file" -msgstr "qťɮ" - -#: src/diff.c:976 -msgid "regular file" -msgstr "qɮ" - -#: src/diff.c:978 -msgid "directory" -msgstr "ؿ" - -#: src/diff.c:981 -msgid "block special file" -msgstr "϶Sɮ" - -#: src/diff.c:984 -msgid "character special file" -msgstr "rSɮ" - -#: src/diff.c:987 -msgid "fifo" -msgstr "fifo" - -#: src/diff.c:991 -msgid "socket" -msgstr "socket" - -#: src/diff.c:994 -msgid "message queue" -msgstr "TC" - -#: src/diff.c:997 -msgid "semaphore" -msgstr "semaphore" - -#: src/diff.c:1000 -msgid "shared memory object" -msgstr "ɰOЪ" - -#: src/diff.c:1003 -msgid "typed memory object" -msgstr "OЪ" - -#: src/diff.c:1006 -msgid "weird file" -msgstr "M`ɮ" - -#: src/diff.c:1070 src/diff.c:1256 -#, c-format -msgid "Only in %s: %s\n" -msgstr "ub %s sbG%s\n" - -#: src/diff.c:1193 -msgid "cannot compare `-' to a directory" -msgstr "-LkPؿ@" - -#: src/diff.c:1220 -msgid "-D option not supported with directories" -msgstr "-D ﶵitXؿϥ" - -#: src/diff.c:1229 -#, c-format -msgid "Common subdirectories: %s and %s\n" -msgstr "%s M %s @Pƥؿ\n" - -#: src/diff.c:1266 -#, c-format -msgid "File %s is a %s while file %s is a %s\n" -msgstr "ɮ %s O%sɮ %s O%s\n" - -#: src/diff.c:1345 -#, c-format -msgid "Files %s and %s are identical\n" -msgstr "ɮ %s M %s ۦP\n" - -#: src/diff3.c:26 -msgid "Written by Randy Smith." -msgstr " Randy Smith sgC" - -#: src/diff3.c:328 -msgid "incompatible options" -msgstr "ݮeﶵ" - -#: src/diff3.c:368 -msgid "`-' specified for more than one input file" -msgstr "h@ӪJɬO-" - -#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 -#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 -msgid "read failed" -msgstr "Ūƥ" - -#: src/diff3.c:441 -msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." -msgstr "" -"-e --ed X OLDFILE YOURFILE ﳡAÿXiN\n" -" ܮMΦ MYFILE ed scriptC" - -#: src/diff3.c:442 -msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." -msgstr "-E --show-overlap ܥX֪ﳡAìAW۩IJaC" - -#: src/diff3.c:443 -msgid "-A --show-all Output all changes, bracketing conflicts." -msgstr "-A --show-all ܩҦn諸AìAW۩IJaC" - -#: src/diff3.c:444 -msgid "-x --overlap-only Output overlapping changes." -msgstr "-x --overlap-only uܭ|ﳡC" - -#: src/diff3.c:445 -msgid "-X Output overlapping changes, bracketing them." -msgstr "-X ܭ|ﳡAìAWOC" - -#: src/diff3.c:446 -msgid "-3 --easy-only Output unmerged nonoverlapping changes." -msgstr "-3 --easy-only ܥX֦ӥB|ﳡC" - -#: src/diff3.c:448 -msgid "-m --merge Output merged file instead of ed script (default -A)." -msgstr "-m --merge ܦX᪺֫ɮצӤO ed script (w][W -A)C" - -#: src/diff3.c:449 -msgid "-L LABEL --label=LABEL Use LABEL instead of file name." -msgstr "-L лx --label=лx H<лx>NɮצW١C" - -#: src/diff3.c:450 -msgid "-i Append `w' and `q' commands to ed scripts." -msgstr "-i b ed script [wMqOC" - -#: src/diff3.c:453 src/sdiff.c:202 -msgid "--diff-program=PROGRAM Use PROGRAM to compare files." -msgstr "--diff-program={ ϥ<{>ӤɮסC" - -#: src/diff3.c:465 -#, c-format -msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" -msgstr "ΪkG%s [ﶵ]... MYFILE OLDFILE YOURFILE\n" - -#: src/diff3.c:467 -msgid "Compare three files line by line." -msgstr "TɮתC@C" - -#: src/diff3.c:673 -msgid "internal error: screwup in format of diff blocks" -msgstr "~Gdiff Ϭq榡X" - -#: src/diff3.c:971 -#, c-format -msgid "%s: diff failed: " -msgstr "%sGdiff ѡG" - -#: src/diff3.c:993 -msgid "internal error: invalid diff type in process_diff" -msgstr "~Gprocess_diff diff L" - -#: src/diff3.c:1018 -msgid "invalid diff format; invalid change separator" -msgstr "LĪ diff 榡Fܸܧ󪺤jrL" - -#: src/diff3.c:1242 -msgid "invalid diff format; incomplete last line" -msgstr "LĪ diff 榡F̫@椣" - -#: src/diff3.c:1265 src/sdiff.c:273 -#, c-format -msgid "subsidiary program `%s' not executable" -msgstr "һݪ{%sLk" - -#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 -#, c-format -msgid "subsidiary program `%s' not found" -msgstr "䤣һݪ{%s" - -#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 -#, c-format -msgid "subsidiary program `%s' failed" -msgstr "{%s^ǿ~" - -#: src/diff3.c:1294 -msgid "invalid diff format; incorrect leading line chars" -msgstr "diff 榡LġFY檺Ĥ@ӦrT" - -#: src/diff3.c:1370 -msgid "internal error: invalid diff type passed to output" -msgstr "~GdzƿX diff L" - -#: src/diff3.c:1647 src/diff3.c:1704 -msgid "input file shrank" -msgstr "JYp" - -#: src/dir.c:162 -#, c-format -msgid "cannot compare file names `%s' and `%s'" -msgstr "LkɮצW١%sM%s" - -#: src/sdiff.c:35 -msgid "Written by Thomas Lord." -msgstr " Thomas Lord sgC" - -#: src/sdiff.c:183 -msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." -msgstr "-o ɮ --output=ɮ ʦާ@AñNGgJ<ɮ>C" - -#: src/sdiff.c:185 -msgid "-i --ignore-case Consider upper- and lower-case to be the same." -msgstr "-i --ignore-case ɮפejpgC" - -#: src/sdiff.c:188 -msgid "-W --ignore-all-space Ignore all white space." -msgstr "-W --ignore-all-space ҦťզrC" - -#: src/sdiff.c:194 -msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." -msgstr "-w NUM --width=NUM C̦ܳh NUM]w] 130^ӦrC" - -#: src/sdiff.c:195 -msgid "-l --left-column Output only the left column of common lines." -msgstr "-l --left-column ۦPɥuܥ䪺@C" - -#: src/sdiff.c:196 -msgid "-s --suppress-common-lines Do not output common lines." -msgstr "-s --suppress-common-lines ۦPɤ|ܡC" - -#: src/sdiff.c:201 -msgid "" -"-H --speed-large-files Assume large files and many scattered small changes." -msgstr "-H --speed-large-files ]ɮפQjӥBt\hǷLtC" - -#: src/sdiff.c:214 -#, c-format -msgid "Usage: %s [OPTION]... FILE1 FILE2\n" -msgstr "ΪkG%s [ﶵ]... ɮ1 ɮ2\n" - -#: src/sdiff.c:215 -msgid "Side-by-side merge of file differences." -msgstr "HñƤ覡XɮפtC" - -#: src/sdiff.c:327 -msgid "cannot interactively merge standard input" -msgstr "\Hʤ覡XּзǿJ" - -#: src/sdiff.c:588 -msgid "both files to be compared are directories" -msgstr "ӭnOؿ" - -#: src/sdiff.c:853 -msgid "" -"ed:\tEdit then use both versions, each decorated with a header.\n" -"eb:\tEdit then use both versions.\n" -"el:\tEdit then use the left version.\n" -"er:\tEdit then use the right version.\n" -"e:\tEdit a new version.\n" -"l:\tUse the left version.\n" -"r:\tUse the right version.\n" -"s:\tSilently include common lines.\n" -"v:\tVerbosely include common lines.\n" -"q:\tQuit.\n" -msgstr "" -"edG\ts䪺X᪺֫ơAUO[WYHѧOC\n" -"ebG\ts䪺X᪺֫ơC\n" -"elG\tϥΥ䪺ӶisC\n" -"erG\tϥΥk䪺ӶisC\n" -"e G\tssC\n" -"l G\tϥΥ䪺C\n" -"r G\tϥΥk䪺C\n" -"s G\t[W@˪ծɤbeܡC\n" -"v G\t[W@˪ծɷ|beܡC\n" -"q G\t}C\n" - -#~ msgid "--inhibit-hunk-merge Do not merge hunks." -#~ msgstr "--inhibit-hunk-merge (ﶵ@Bz)" - -#~ msgid "" -#~ "SKIP values may be followed by the following multiplicative suffixes:\n" -#~ msgstr "SKIP ȥiH[WHUG\n" - -#~ msgid "kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" -#~ msgstr "kB 1000BK 1024BMB 1,000,000BM 1,048,576B\n" - -#~ msgid "GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y.\n" -#~ msgstr "GB 1,000,000,000BG 1,073,741,824B٦ TBPBEBZBY pC\n" - -#~ msgid "multiple `--from-file' options" -#~ msgstr "--from-fileﶵiϥΦh@" - -#~ msgid "multiple `--to-file' options" -#~ msgstr "--to-fileﶵiϥΦh@" - -#~ msgid "regular executable file" -#~ msgstr "`i" - -#~ msgid "If a FILE is `-', read standard input.\n" -#~ msgstr "pGɮ׬O-AhѼзǿJŪJơC\n" diff --git a/src/bin/diffutils/src/Jamfile b/src/bin/diffutils/src/Jamfile deleted file mode 100644 index a354e73b3f..0000000000 --- a/src/bin/diffutils/src/Jamfile +++ /dev/null @@ -1,48 +0,0 @@ -SubDir HAIKU_TOP src bin diffutils src ; - -# filter warnings we don't want here -TARGET_WARNING_CCFLAGS_$(TARGET_PACKAGING_ARCH) - = [ FFilter $(TARGET_WARNING_CCFLAGS_$(TARGET_PACKAGING_ARCH)) - : -Wall -Wmissing-prototypes -Wsign-compare ] ; - -SubDirCcFlags -DHAVE_CONFIG_H -DLOCALEDIR=\'\"/share/locale\"\' -DPR_PROGRAM=\'\"/bin/pr\"\' -DDEFAULT_DIFF_PROGRAM=\'\"diff\"\' -D__USE_GNU ; -SubDirSysHdrs [ FDirName $(SUBDIR) $(DOTDOT) lib ] ; -SubDirSysHdrs [ FDirName $(SUBDIR) $(DOTDOT) ] ; -SubDirSysHdrs [ FDirName $(HAIKU_TOP) headers ] ; - -local diffutils_rsrc = [ FGristFiles diffutils.rsrc ] ; -ResComp $(diffutils_rsrc) : [ FGristFiles diffutils.rdef ] ; - -BinCommand diff : - analyze.c - context.c - diff.c - dir.c - ed.c - ifdef.c - io.c - normal.c - side.c - util.c - version.c - : libdiffutils.a - : diffutils.rsrc ; - -BinCommand diff3 : - diff3.c - version.c - : libdiffutils.a - : diffutils.rsrc ; - -BinCommand cmp : - cmp.c - version.c - : libdiffutils.a - : diffutils.rsrc ; - -BinCommand sdiff : - sdiff.c - version.c - : libdiffutils.a - : diffutils.rsrc ; - diff --git a/src/bin/diffutils/src/Makefile b/src/bin/diffutils/src/Makefile deleted file mode 100644 index 3c1a309d98..0000000000 --- a/src/bin/diffutils/src/Makefile +++ /dev/null @@ -1,418 +0,0 @@ -# Makefile.in generated by automake 1.6 from Makefile.am. -# src/Makefile. Generated from Makefile.in by configure. - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - - -# Automakefile for GNU diffutils programs. - -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. -SHELL = /bin/sh - -srcdir = . -top_srcdir = .. - -prefix = /usr/local -exec_prefix = ${prefix} - -bindir = ${exec_prefix}/bin -sbindir = ${exec_prefix}/sbin -libexecdir = ${exec_prefix}/libexec -datadir = ${prefix}/share -sysconfdir = ${prefix}/etc -sharedstatedir = ${prefix}/com -localstatedir = ${prefix}/var -libdir = ${exec_prefix}/lib -infodir = ${prefix}/info -mandir = ${prefix}/man -includedir = ${prefix}/include -oldincludedir = /usr/include -pkgdatadir = $(datadir)/diffutils -pkglibdir = $(libdir)/diffutils -pkgincludedir = $(includedir)/diffutils -top_builddir = .. - -ACLOCAL = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run aclocal-1.6 -AUTOCONF = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoconf -AUTOMAKE = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run automake-1.6 -AUTOHEADER = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoheader - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = /bin/install -c -INSTALL_PROGRAM = ${INSTALL} -INSTALL_DATA = ${INSTALL} -m 644 -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -INSTALL_SCRIPT = ${INSTALL} -INSTALL_HEADER = $(INSTALL_DATA) -transform = s,x,x, -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = -host_triplet = i586-pc-beos - -EXEEXT = -OBJEXT = o -PATH_SEPARATOR = : -AMTAR = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run tar -AWK = gawk -BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ -CATOBJEXT = @CATOBJEXT@ -CC = gcc -CPP = gcc -E -DATADIRNAME = @DATADIRNAME@ -DEPDIR = .deps -GENCAT = @GENCAT@ -GLIBC21 = @GLIBC21@ -GMSGFMT = : -HAVE_LIB = @HAVE_LIB@ -HELP2MAN = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run help2man -INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s -INSTOBJEXT = @INSTOBJEXT@ -INTLBISON = @INTLBISON@ -INTLLIBS = -INTLOBJS = @INTLOBJS@ -INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -LIB = @LIB@ -LIBICONV = -LIBINTL = -LIB_CLOCK_GETTIME = -LTLIB = @LTLIB@ -LTLIBICONV = -LTLIBINTL = -MKINSTALLDIRS = config/mkinstalldirs -PACKAGE = diffutils -POSUB = -PR_PROGRAM = /bin/pr -RANLIB = ranlib -STRIP = -U = -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = no -VERSION = 2.8.1 -am__include = include -am__quote = -install_sh = /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/install-sh - -bin_PROGRAMS = cmp diff diff3 sdiff - -noinst_HEADERS = diff.h system.h - -localedir = $(datadir)/locale - -AM_CPPFLAGS = -I../lib -I$(top_srcdir)/lib -DEFS = -DLOCALEDIR=\"$(localedir)\" -DHAVE_CONFIG_H - -LDADD = ../lib/libdiffutils.a -diff_LDADD = $(LDADD) - -cmp_SOURCES = cmp.c version.c -diff3_SOURCES = diff3.c version.c -sdiff_SOURCES = sdiff.c version.c -diff_SOURCES = \ - analyze.c context.c diff.c dir.c ed.c ifdef.c io.c \ - normal.c side.c util.c version.c - - -MAINTAINERCLEANFILES = $(srcdir)/version.c -subdir = src -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -bin_PROGRAMS = cmp$(EXEEXT) diff$(EXEEXT) diff3$(EXEEXT) sdiff$(EXEEXT) -PROGRAMS = $(bin_PROGRAMS) - -am_cmp_OBJECTS = cmp.$(OBJEXT) version.$(OBJEXT) -cmp_OBJECTS = $(am_cmp_OBJECTS) -cmp_LDADD = $(LDADD) -cmp_DEPENDENCIES = ../lib/libdiffutils.a -cmp_LDFLAGS = -am_diff_OBJECTS = analyze.$(OBJEXT) context.$(OBJEXT) diff.$(OBJEXT) \ - dir.$(OBJEXT) ed.$(OBJEXT) ifdef.$(OBJEXT) io.$(OBJEXT) \ - normal.$(OBJEXT) side.$(OBJEXT) util.$(OBJEXT) \ - version.$(OBJEXT) -diff_OBJECTS = $(am_diff_OBJECTS) -diff_DEPENDENCIES = ../lib/libdiffutils.a -diff_LDFLAGS = -am_diff3_OBJECTS = diff3.$(OBJEXT) version.$(OBJEXT) -diff3_OBJECTS = $(am_diff3_OBJECTS) -diff3_LDADD = $(LDADD) -diff3_DEPENDENCIES = ../lib/libdiffutils.a -diff3_LDFLAGS = -am_sdiff_OBJECTS = sdiff.$(OBJEXT) version.$(OBJEXT) -sdiff_OBJECTS = $(am_sdiff_OBJECTS) -sdiff_LDADD = $(LDADD) -sdiff_DEPENDENCIES = ../lib/libdiffutils.a -sdiff_LDFLAGS = -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -CPPFLAGS = -LDFLAGS = -LIBS = -depcomp = $(SHELL) $(top_srcdir)/config/depcomp -am__depfiles_maybe = depfiles -DEP_FILES = ./$(DEPDIR)/analyze.Po ./$(DEPDIR)/cmp.Po \ - ./$(DEPDIR)/context.Po ./$(DEPDIR)/diff.Po \ - ./$(DEPDIR)/diff3.Po ./$(DEPDIR)/dir.Po \ - ./$(DEPDIR)/ed.Po ./$(DEPDIR)/ifdef.Po \ - ./$(DEPDIR)/io.Po ./$(DEPDIR)/normal.Po \ - ./$(DEPDIR)/sdiff.Po ./$(DEPDIR)/side.Po \ - ./$(DEPDIR)/util.Po ./$(DEPDIR)/version.Po -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -CFLAGS = -g -O2 -DIST_SOURCES = $(cmp_SOURCES) $(diff_SOURCES) $(diff3_SOURCES) \ - $(sdiff_SOURCES) -HEADERS = $(noinst_HEADERS) - -DIST_COMMON = $(noinst_HEADERS) Makefile.am Makefile.in -SOURCES = $(cmp_SOURCES) $(diff_SOURCES) $(diff3_SOURCES) $(sdiff_SOURCES) - -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits src/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) -binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(bindir) - @list='$(bin_PROGRAMS)'; for p in $$list; do \ - p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - if test -f $$p \ - ; then \ - p1=`echo "$$p1" | sed -e 's,^.*/,,'`; \ - f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f; \ - else :; fi; \ - done - -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(bin_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ - f=`echo "$$f" | sed -e 's,^.*/,,'`; \ - echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ - rm -f $(DESTDIR)$(bindir)/$$f; \ - done - -clean-binPROGRAMS: - -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) -cmp$(EXEEXT): $(cmp_OBJECTS) $(cmp_DEPENDENCIES) - @rm -f cmp$(EXEEXT) - $(LINK) $(cmp_LDFLAGS) $(cmp_OBJECTS) $(cmp_LDADD) $(LIBS) -diff$(EXEEXT): $(diff_OBJECTS) $(diff_DEPENDENCIES) - @rm -f diff$(EXEEXT) - $(LINK) $(diff_LDFLAGS) $(diff_OBJECTS) $(diff_LDADD) $(LIBS) -diff3$(EXEEXT): $(diff3_OBJECTS) $(diff3_DEPENDENCIES) - @rm -f diff3$(EXEEXT) - $(LINK) $(diff3_LDFLAGS) $(diff3_OBJECTS) $(diff3_LDADD) $(LIBS) -sdiff$(EXEEXT): $(sdiff_OBJECTS) $(sdiff_DEPENDENCIES) - @rm -f sdiff$(EXEEXT) - $(LINK) $(sdiff_LDFLAGS) $(sdiff_OBJECTS) $(sdiff_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) core *.core - -distclean-compile: - -rm -f *.tab.c - -include ./$(DEPDIR)/analyze.Po -include ./$(DEPDIR)/cmp.Po -include ./$(DEPDIR)/context.Po -include ./$(DEPDIR)/diff.Po -include ./$(DEPDIR)/diff3.Po -include ./$(DEPDIR)/dir.Po -include ./$(DEPDIR)/ed.Po -include ./$(DEPDIR)/ifdef.Po -include ./$(DEPDIR)/io.Po -include ./$(DEPDIR)/normal.Po -include ./$(DEPDIR)/sdiff.Po -include ./$(DEPDIR)/side.Po -include ./$(DEPDIR)/util.Po -include ./$(DEPDIR)/version.Po - -distclean-depend: - -rm -rf ./$(DEPDIR) - -.c.o: - source='$<' object='$@' libtool=no \ - depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' \ - $(CCDEPMODE) $(depcomp) \ - $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< - -.c.obj: - source='$<' object='$@' libtool=no \ - depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' \ - $(CCDEPMODE) $(depcomp) \ - $(COMPILE) -c `cygpath -w $<` -CCDEPMODE = depmode=gcc -uninstall-info-am: - -ETAGS = etags -ETAGSFLAGS = - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$tags$$unique" \ - || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir)$$dir \ - || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(PROGRAMS) $(HEADERS) - -installdirs: - $(mkinstalldirs) $(DESTDIR)$(bindir) - -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) -clean: clean-am - -clean-am: clean-binPROGRAMS clean-generic mostlyclean-am - -distclean: distclean-am - -distclean-am: clean-am distclean-compile distclean-depend \ - distclean-generic distclean-tags - -dvi: dvi-am - -dvi-am: - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: install-binPROGRAMS - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -uninstall-am: uninstall-binPROGRAMS uninstall-info-am - -.PHONY: GTAGS all all-am check check-am clean clean-binPROGRAMS \ - clean-generic distclean distclean-compile distclean-depend \ - distclean-generic distclean-tags distdir dvi dvi-am info \ - info-am install install-am install-binPROGRAMS install-data \ - install-data-am install-exec install-exec-am install-info \ - install-info-am install-man install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic tags uninstall uninstall-am \ - uninstall-binPROGRAMS uninstall-info-am - - -$(srcdir)/version.c: $(top_srcdir)/configure.ac - (echo '#include ' && \ - echo 'char const version_string[] = "(GNU $(PACKAGE)) $(VERSION)";') \ - >$@ -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/bin/diffutils/src/Makefile.am b/src/bin/diffutils/src/Makefile.am deleted file mode 100644 index 9d382a5af0..0000000000 --- a/src/bin/diffutils/src/Makefile.am +++ /dev/null @@ -1,44 +0,0 @@ -# Automakefile for GNU diffutils programs. - -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. - -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2, or (at your option) -## any later version. - -## This program is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. - -## You should have received a copy of the GNU General Public License -## along with this program; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -## 02111-1307, USA. - -bin_PROGRAMS = cmp diff diff3 sdiff - -noinst_HEADERS = diff.h system.h - -localedir = $(datadir)/locale - -AM_CPPFLAGS = -I../lib -I$(top_srcdir)/lib -DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@ - -LDADD = ../lib/libdiffutils.a @LIBINTL@ -diff_LDADD = $(LDADD) @LIB_CLOCK_GETTIME@ - -cmp_SOURCES = cmp.c version.c -diff3_SOURCES = diff3.c version.c -sdiff_SOURCES = sdiff.c version.c -diff_SOURCES = \ - analyze.c context.c diff.c dir.c ed.c ifdef.c io.c \ - normal.c side.c util.c version.c - -MAINTAINERCLEANFILES = $(srcdir)/version.c - -$(srcdir)/version.c: $(top_srcdir)/configure.ac - (echo '#include ' && \ - echo 'char const version_string[] = "(GNU $(PACKAGE)) $(VERSION)";') \ - >$@ diff --git a/src/bin/diffutils/src/Makefile.in b/src/bin/diffutils/src/Makefile.in deleted file mode 100644 index 287f368da8..0000000000 --- a/src/bin/diffutils/src/Makefile.in +++ /dev/null @@ -1,418 +0,0 @@ -# Makefile.in generated by automake 1.6 from Makefile.am. -# @configure_input@ - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# Automakefile for GNU diffutils programs. - -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_HEADER = $(INSTALL_DATA) -transform = @program_transform_name@ -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ - -EXEEXT = @EXEEXT@ -OBJEXT = @OBJEXT@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -AMTAR = @AMTAR@ -AWK = @AWK@ -BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -CPP = @CPP@ -DATADIRNAME = @DATADIRNAME@ -DEPDIR = @DEPDIR@ -GENCAT = @GENCAT@ -GLIBC21 = @GLIBC21@ -GMSGFMT = @GMSGFMT@ -HAVE_LIB = @HAVE_LIB@ -HELP2MAN = @HELP2MAN@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTOBJEXT = @INSTOBJEXT@ -INTLBISON = @INTLBISON@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ -INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -LIB = @LIB@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ -LTLIB = @LTLIB@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -PACKAGE = @PACKAGE@ -POSUB = @POSUB@ -PR_PROGRAM = @PR_PROGRAM@ -RANLIB = @RANLIB@ -STRIP = @STRIP@ -U = @U@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -am__include = @am__include@ -am__quote = @am__quote@ -install_sh = @install_sh@ - -bin_PROGRAMS = cmp diff diff3 sdiff - -noinst_HEADERS = diff.h system.h - -localedir = $(datadir)/locale - -AM_CPPFLAGS = -I../lib -I$(top_srcdir)/lib -DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@ - -LDADD = ../lib/libdiffutils.a @LIBINTL@ -diff_LDADD = $(LDADD) @LIB_CLOCK_GETTIME@ - -cmp_SOURCES = cmp.c version.c -diff3_SOURCES = diff3.c version.c -sdiff_SOURCES = sdiff.c version.c -diff_SOURCES = \ - analyze.c context.c diff.c dir.c ed.c ifdef.c io.c \ - normal.c side.c util.c version.c - - -MAINTAINERCLEANFILES = $(srcdir)/version.c -subdir = src -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -bin_PROGRAMS = cmp$(EXEEXT) diff$(EXEEXT) diff3$(EXEEXT) sdiff$(EXEEXT) -PROGRAMS = $(bin_PROGRAMS) - -am_cmp_OBJECTS = cmp.$(OBJEXT) version.$(OBJEXT) -cmp_OBJECTS = $(am_cmp_OBJECTS) -cmp_LDADD = $(LDADD) -cmp_DEPENDENCIES = ../lib/libdiffutils.a -cmp_LDFLAGS = -am_diff_OBJECTS = analyze.$(OBJEXT) context.$(OBJEXT) diff.$(OBJEXT) \ - dir.$(OBJEXT) ed.$(OBJEXT) ifdef.$(OBJEXT) io.$(OBJEXT) \ - normal.$(OBJEXT) side.$(OBJEXT) util.$(OBJEXT) \ - version.$(OBJEXT) -diff_OBJECTS = $(am_diff_OBJECTS) -diff_DEPENDENCIES = ../lib/libdiffutils.a -diff_LDFLAGS = -am_diff3_OBJECTS = diff3.$(OBJEXT) version.$(OBJEXT) -diff3_OBJECTS = $(am_diff3_OBJECTS) -diff3_LDADD = $(LDADD) -diff3_DEPENDENCIES = ../lib/libdiffutils.a -diff3_LDFLAGS = -am_sdiff_OBJECTS = sdiff.$(OBJEXT) version.$(OBJEXT) -sdiff_OBJECTS = $(am_sdiff_OBJECTS) -sdiff_LDADD = $(LDADD) -sdiff_DEPENDENCIES = ../lib/libdiffutils.a -sdiff_LDFLAGS = -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -CPPFLAGS = @CPPFLAGS@ -LDFLAGS = @LDFLAGS@ -LIBS = @LIBS@ -depcomp = $(SHELL) $(top_srcdir)/config/depcomp -am__depfiles_maybe = depfiles -@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/analyze.Po ./$(DEPDIR)/cmp.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/context.Po ./$(DEPDIR)/diff.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/diff3.Po ./$(DEPDIR)/dir.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ed.Po ./$(DEPDIR)/ifdef.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/io.Po ./$(DEPDIR)/normal.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/sdiff.Po ./$(DEPDIR)/side.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/util.Po ./$(DEPDIR)/version.Po -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -CFLAGS = @CFLAGS@ -DIST_SOURCES = $(cmp_SOURCES) $(diff_SOURCES) $(diff3_SOURCES) \ - $(sdiff_SOURCES) -HEADERS = $(noinst_HEADERS) - -DIST_COMMON = $(noinst_HEADERS) Makefile.am Makefile.in -SOURCES = $(cmp_SOURCES) $(diff_SOURCES) $(diff3_SOURCES) $(sdiff_SOURCES) - -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits src/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) -binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(bindir) - @list='$(bin_PROGRAMS)'; for p in $$list; do \ - p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - if test -f $$p \ - ; then \ - p1=`echo "$$p1" | sed -e 's,^.*/,,'`; \ - f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f; \ - else :; fi; \ - done - -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(bin_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ - f=`echo "$$f" | sed -e 's,^.*/,,'`; \ - echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ - rm -f $(DESTDIR)$(bindir)/$$f; \ - done - -clean-binPROGRAMS: - -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) -cmp$(EXEEXT): $(cmp_OBJECTS) $(cmp_DEPENDENCIES) - @rm -f cmp$(EXEEXT) - $(LINK) $(cmp_LDFLAGS) $(cmp_OBJECTS) $(cmp_LDADD) $(LIBS) -diff$(EXEEXT): $(diff_OBJECTS) $(diff_DEPENDENCIES) - @rm -f diff$(EXEEXT) - $(LINK) $(diff_LDFLAGS) $(diff_OBJECTS) $(diff_LDADD) $(LIBS) -diff3$(EXEEXT): $(diff3_OBJECTS) $(diff3_DEPENDENCIES) - @rm -f diff3$(EXEEXT) - $(LINK) $(diff3_LDFLAGS) $(diff3_OBJECTS) $(diff3_LDADD) $(LIBS) -sdiff$(EXEEXT): $(sdiff_OBJECTS) $(sdiff_DEPENDENCIES) - @rm -f sdiff$(EXEEXT) - $(LINK) $(sdiff_LDFLAGS) $(sdiff_OBJECTS) $(sdiff_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) core *.core - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/analyze.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/context.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diff.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diff3.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dir.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ed.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifdef.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/normal.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sdiff.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/side.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Po@am__quote@ - -distclean-depend: - -rm -rf ./$(DEPDIR) - -.c.o: -@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< - -.c.obj: -@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `cygpath -w $<` -CCDEPMODE = @CCDEPMODE@ -uninstall-info-am: - -ETAGS = etags -ETAGSFLAGS = - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$tags$$unique" \ - || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir)$$dir \ - || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(PROGRAMS) $(HEADERS) - -installdirs: - $(mkinstalldirs) $(DESTDIR)$(bindir) - -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) -clean: clean-am - -clean-am: clean-binPROGRAMS clean-generic mostlyclean-am - -distclean: distclean-am - -distclean-am: clean-am distclean-compile distclean-depend \ - distclean-generic distclean-tags - -dvi: dvi-am - -dvi-am: - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: install-binPROGRAMS - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -uninstall-am: uninstall-binPROGRAMS uninstall-info-am - -.PHONY: GTAGS all all-am check check-am clean clean-binPROGRAMS \ - clean-generic distclean distclean-compile distclean-depend \ - distclean-generic distclean-tags distdir dvi dvi-am info \ - info-am install install-am install-binPROGRAMS install-data \ - install-data-am install-exec install-exec-am install-info \ - install-info-am install-man install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic tags uninstall uninstall-am \ - uninstall-binPROGRAMS uninstall-info-am - - -$(srcdir)/version.c: $(top_srcdir)/configure.ac - (echo '#include ' && \ - echo 'char const version_string[] = "(GNU $(PACKAGE)) $(VERSION)";') \ - >$@ -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/bin/diffutils/src/analyze.c b/src/bin/diffutils/src/analyze.c deleted file mode 100644 index 796b79da2e..0000000000 --- a/src/bin/diffutils/src/analyze.c +++ /dev/null @@ -1,1068 +0,0 @@ -/* Analyze file differences for GNU DIFF. - - Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1998, 2001, 2002 - Free Software Foundation, Inc. - - This file is part of GNU DIFF. - - GNU DIFF is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GNU DIFF is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* The basic algorithm is described in: - "An O(ND) Difference Algorithm and its Variations", Eugene Myers, - Algorithmica Vol. 1 No. 2, 1986, pp. 251-266; - see especially section 4.2, which describes the variation used below. - Unless the --minimal option is specified, this code uses the TOO_EXPENSIVE - heuristic, by Paul Eggert, to limit the cost to O(N**1.5 log N) - at the price of producing suboptimal output for large inputs with - many differences. - - The basic algorithm was independently discovered as described in: - "Algorithms for Approximate String Matching", E. Ukkonen, - Information and Control Vol. 64, 1985, pp. 100-118. */ - -#include "diff.h" -#include -#include -#include -#include - -static lin *xvec, *yvec; /* Vectors being compared. */ -static lin *fdiag; /* Vector, indexed by diagonal, containing - 1 + the X coordinate of the point furthest - along the given diagonal in the forward - search of the edit matrix. */ -static lin *bdiag; /* Vector, indexed by diagonal, containing - the X coordinate of the point furthest - along the given diagonal in the backward - search of the edit matrix. */ -static lin too_expensive; /* Edit scripts longer than this are too - expensive to compute. */ - -#define SNAKE_LIMIT 20 /* Snakes bigger than this are considered `big'. */ - -struct partition -{ - lin xmid, ymid; /* Midpoints of this partition. */ - bool lo_minimal; /* Nonzero if low half will be analyzed minimally. */ - bool hi_minimal; /* Likewise for high half. */ -}; - -/* Find the midpoint of the shortest edit script for a specified - portion of the two files. - - Scan from the beginnings of the files, and simultaneously from the ends, - doing a breadth-first search through the space of edit-sequence. - When the two searches meet, we have found the midpoint of the shortest - edit sequence. - - If FIND_MINIMAL is nonzero, find the minimal edit script regardless - of expense. Otherwise, if the search is too expensive, use - heuristics to stop the search and report a suboptimal answer. - - Set PART->(xmid,ymid) to the midpoint (XMID,YMID). The diagonal number - XMID - YMID equals the number of inserted lines minus the number - of deleted lines (counting only lines before the midpoint). - Return the approximate edit cost; this is the total number of - lines inserted or deleted (counting only lines before the midpoint), - unless a heuristic is used to terminate the search prematurely. - - Set PART->lo_minimal to true iff the minimal edit script for the - left half of the partition is known; similarly for PART->hi_minimal. - - This function assumes that the first lines of the specified portions - of the two files do not match, and likewise that the last lines do not - match. The caller must trim matching lines from the beginning and end - of the portions it is going to specify. - - If we return the "wrong" partitions, - the worst this can do is cause suboptimal diff output. - It cannot cause incorrect diff output. */ - -static lin -diag (lin xoff, lin xlim, lin yoff, lin ylim, bool find_minimal, - struct partition *part) -{ - lin *const fd = fdiag; /* Give the compiler a chance. */ - lin *const bd = bdiag; /* Additional help for the compiler. */ - lin const *const xv = xvec; /* Still more help for the compiler. */ - lin const *const yv = yvec; /* And more and more . . . */ - lin const dmin = xoff - ylim; /* Minimum valid diagonal. */ - lin const dmax = xlim - yoff; /* Maximum valid diagonal. */ - lin const fmid = xoff - yoff; /* Center diagonal of top-down search. */ - lin const bmid = xlim - ylim; /* Center diagonal of bottom-up search. */ - lin fmin = fmid, fmax = fmid; /* Limits of top-down search. */ - lin bmin = bmid, bmax = bmid; /* Limits of bottom-up search. */ - lin c; /* Cost. */ - bool odd = (fmid - bmid) & 1; /* True if southeast corner is on an odd - diagonal with respect to the northwest. */ - - fd[fmid] = xoff; - bd[bmid] = xlim; - - for (c = 1;; ++c) - { - lin d; /* Active diagonal. */ - bool big_snake = 0; - - /* Extend the top-down search by an edit step in each diagonal. */ - fmin > dmin ? fd[--fmin - 1] = -1 : ++fmin; - fmax < dmax ? fd[++fmax + 1] = -1 : --fmax; - for (d = fmax; d >= fmin; d -= 2) - { - lin x, y, oldx, tlo = fd[d - 1], thi = fd[d + 1]; - - if (tlo >= thi) - x = tlo + 1; - else - x = thi; - oldx = x; - y = x - d; - while (x < xlim && y < ylim && xv[x] == yv[y]) - ++x, ++y; - if (x - oldx > SNAKE_LIMIT) - big_snake = 1; - fd[d] = x; - if (odd && bmin <= d && d <= bmax && bd[d] <= x) - { - part->xmid = x; - part->ymid = y; - part->lo_minimal = part->hi_minimal = 1; - return 2 * c - 1; - } - } - - /* Similarly extend the bottom-up search. */ - bmin > dmin ? bd[--bmin - 1] = LIN_MAX : ++bmin; - bmax < dmax ? bd[++bmax + 1] = LIN_MAX : --bmax; - for (d = bmax; d >= bmin; d -= 2) - { - lin x, y, oldx, tlo = bd[d - 1], thi = bd[d + 1]; - - if (tlo < thi) - x = tlo; - else - x = thi - 1; - oldx = x; - y = x - d; - while (x > xoff && y > yoff && xv[x - 1] == yv[y - 1]) - --x, --y; - if (oldx - x > SNAKE_LIMIT) - big_snake = 1; - bd[d] = x; - if (!odd && fmin <= d && d <= fmax && x <= fd[d]) - { - part->xmid = x; - part->ymid = y; - part->lo_minimal = part->hi_minimal = 1; - return 2 * c; - } - } - - if (find_minimal) - continue; - - /* Heuristic: check occasionally for a diagonal that has made - lots of progress compared with the edit distance. - If we have any such, find the one that has made the most - progress and return it as if it had succeeded. - - With this heuristic, for files with a constant small density - of changes, the algorithm is linear in the file size. */ - - if (200 < c && big_snake && speed_large_files) - { - lin best; - - best = 0; - for (d = fmax; d >= fmin; d -= 2) - { - lin dd = d - fmid; - lin x = fd[d]; - lin y = x - d; - lin v = (x - xoff) * 2 - dd; - if (v > 12 * (c + (dd < 0 ? -dd : dd))) - { - if (v > best - && xoff + SNAKE_LIMIT <= x && x < xlim - && yoff + SNAKE_LIMIT <= y && y < ylim) - { - /* We have a good enough best diagonal; - now insist that it end with a significant snake. */ - int k; - - for (k = 1; xv[x - k] == yv[y - k]; k++) - if (k == SNAKE_LIMIT) - { - best = v; - part->xmid = x; - part->ymid = y; - break; - } - } - } - } - if (best > 0) - { - part->lo_minimal = 1; - part->hi_minimal = 0; - return 2 * c - 1; - } - - best = 0; - for (d = bmax; d >= bmin; d -= 2) - { - lin dd = d - bmid; - lin x = bd[d]; - lin y = x - d; - lin v = (xlim - x) * 2 + dd; - if (v > 12 * (c + (dd < 0 ? -dd : dd))) - { - if (v > best - && xoff < x && x <= xlim - SNAKE_LIMIT - && yoff < y && y <= ylim - SNAKE_LIMIT) - { - /* We have a good enough best diagonal; - now insist that it end with a significant snake. */ - int k; - - for (k = 0; xv[x + k] == yv[y + k]; k++) - if (k == SNAKE_LIMIT - 1) - { - best = v; - part->xmid = x; - part->ymid = y; - break; - } - } - } - } - if (best > 0) - { - part->lo_minimal = 0; - part->hi_minimal = 1; - return 2 * c - 1; - } - } - - /* Heuristic: if we've gone well beyond the call of duty, - give up and report halfway between our best results so far. */ - if (c >= too_expensive) - { - lin fxybest, fxbest; - lin bxybest, bxbest; - - fxbest = bxbest = 0; /* Pacify `gcc -Wall'. */ - - /* Find forward diagonal that maximizes X + Y. */ - fxybest = -1; - for (d = fmax; d >= fmin; d -= 2) - { - lin x = MIN (fd[d], xlim); - lin y = x - d; - if (ylim < y) - x = ylim + d, y = ylim; - if (fxybest < x + y) - { - fxybest = x + y; - fxbest = x; - } - } - - /* Find backward diagonal that minimizes X + Y. */ - bxybest = LIN_MAX; - for (d = bmax; d >= bmin; d -= 2) - { - lin x = MAX (xoff, bd[d]); - lin y = x - d; - if (y < yoff) - x = yoff + d, y = yoff; - if (x + y < bxybest) - { - bxybest = x + y; - bxbest = x; - } - } - - /* Use the better of the two diagonals. */ - if ((xlim + ylim) - bxybest < fxybest - (xoff + yoff)) - { - part->xmid = fxbest; - part->ymid = fxybest - fxbest; - part->lo_minimal = 1; - part->hi_minimal = 0; - } - else - { - part->xmid = bxbest; - part->ymid = bxybest - bxbest; - part->lo_minimal = 0; - part->hi_minimal = 1; - } - return 2 * c - 1; - } - } -} - -/* Compare in detail contiguous subsequences of the two files - which are known, as a whole, to match each other. - - The results are recorded in the vectors files[N].changed, by - storing 1 in the element for each line that is an insertion or deletion. - - The subsequence of file 0 is [XOFF, XLIM) and likewise for file 1. - - Note that XLIM, YLIM are exclusive bounds. - All line numbers are origin-0 and discarded lines are not counted. - - If FIND_MINIMAL, find a minimal difference no matter how - expensive it is. */ - -static void -compareseq (lin xoff, lin xlim, lin yoff, lin ylim, bool find_minimal) -{ - lin * const xv = xvec; /* Help the compiler. */ - lin * const yv = yvec; - - /* Slide down the bottom initial diagonal. */ - while (xoff < xlim && yoff < ylim && xv[xoff] == yv[yoff]) - ++xoff, ++yoff; - /* Slide up the top initial diagonal. */ - while (xlim > xoff && ylim > yoff && xv[xlim - 1] == yv[ylim - 1]) - --xlim, --ylim; - - /* Handle simple cases. */ - if (xoff == xlim) - while (yoff < ylim) - files[1].changed[files[1].realindexes[yoff++]] = 1; - else if (yoff == ylim) - while (xoff < xlim) - files[0].changed[files[0].realindexes[xoff++]] = 1; - else - { - lin c; - struct partition part; - - /* Find a point of correspondence in the middle of the files. */ - - c = diag (xoff, xlim, yoff, ylim, find_minimal, &part); - - if (c == 1) - { - /* This should be impossible, because it implies that - one of the two subsequences is empty, - and that case was handled above without calling `diag'. - Let's verify that this is true. */ - abort (); -#if 0 - /* The two subsequences differ by a single insert or delete; - record it and we are done. */ - if (part.xmid - part.ymid < xoff - yoff) - files[1].changed[files[1].realindexes[part.ymid - 1]] = 1; - else - files[0].changed[files[0].realindexes[part.xmid]] = 1; -#endif - } - else - { - /* Use the partitions to split this problem into subproblems. */ - compareseq (xoff, part.xmid, yoff, part.ymid, part.lo_minimal); - compareseq (part.xmid, xlim, part.ymid, ylim, part.hi_minimal); - } - } -} - -/* Discard lines from one file that have no matches in the other file. - - A line which is discarded will not be considered by the actual - comparison algorithm; it will be as if that line were not in the file. - The file's `realindexes' table maps virtual line numbers - (which don't count the discarded lines) into real line numbers; - this is how the actual comparison algorithm produces results - that are comprehensible when the discarded lines are counted. - - When we discard a line, we also mark it as a deletion or insertion - so that it will be printed in the output. */ - -static void -discard_confusing_lines (struct file_data filevec[]) -{ - int f; - lin i; - char *discarded[2]; - lin *equiv_count[2]; - lin *p; - - /* Allocate our results. */ - p = xmalloc ((filevec[0].buffered_lines + filevec[1].buffered_lines) - * (2 * sizeof *p)); - for (f = 0; f < 2; f++) - { - filevec[f].undiscarded = p; p += filevec[f].buffered_lines; - filevec[f].realindexes = p; p += filevec[f].buffered_lines; - } - - /* Set up equiv_count[F][I] as the number of lines in file F - that fall in equivalence class I. */ - - p = zalloc (filevec[0].equiv_max * (2 * sizeof *p)); - equiv_count[0] = p; - equiv_count[1] = p + filevec[0].equiv_max; - - for (i = 0; i < filevec[0].buffered_lines; ++i) - ++equiv_count[0][filevec[0].equivs[i]]; - for (i = 0; i < filevec[1].buffered_lines; ++i) - ++equiv_count[1][filevec[1].equivs[i]]; - - /* Set up tables of which lines are going to be discarded. */ - - discarded[0] = zalloc (filevec[0].buffered_lines - + filevec[1].buffered_lines); - discarded[1] = discarded[0] + filevec[0].buffered_lines; - - /* Mark to be discarded each line that matches no line of the other file. - If a line matches many lines, mark it as provisionally discardable. */ - - for (f = 0; f < 2; f++) - { - size_t end = filevec[f].buffered_lines; - char *discards = discarded[f]; - lin *counts = equiv_count[1 - f]; - lin *equivs = filevec[f].equivs; - size_t many = 5; - size_t tem = end / 64; - - /* Multiply MANY by approximate square root of number of lines. - That is the threshold for provisionally discardable lines. */ - while ((tem = tem >> 2) > 0) - many *= 2; - - for (i = 0; i < end; i++) - { - lin nmatch; - if (equivs[i] == 0) - continue; - nmatch = counts[equivs[i]]; - if (nmatch == 0) - discards[i] = 1; - else if (nmatch > many) - discards[i] = 2; - } - } - - /* Don't really discard the provisional lines except when they occur - in a run of discardables, with nonprovisionals at the beginning - and end. */ - - for (f = 0; f < 2; f++) - { - lin end = filevec[f].buffered_lines; - register char *discards = discarded[f]; - - for (i = 0; i < end; i++) - { - /* Cancel provisional discards not in middle of run of discards. */ - if (discards[i] == 2) - discards[i] = 0; - else if (discards[i] != 0) - { - /* We have found a nonprovisional discard. */ - register lin j; - lin length; - lin provisional = 0; - - /* Find end of this run of discardable lines. - Count how many are provisionally discardable. */ - for (j = i; j < end; j++) - { - if (discards[j] == 0) - break; - if (discards[j] == 2) - ++provisional; - } - - /* Cancel provisional discards at end, and shrink the run. */ - while (j > i && discards[j - 1] == 2) - discards[--j] = 0, --provisional; - - /* Now we have the length of a run of discardable lines - whose first and last are not provisional. */ - length = j - i; - - /* If 1/4 of the lines in the run are provisional, - cancel discarding of all provisional lines in the run. */ - if (provisional * 4 > length) - { - while (j > i) - if (discards[--j] == 2) - discards[j] = 0; - } - else - { - register lin consec; - lin minimum = 1; - lin tem = length >> 2; - - /* MINIMUM is approximate square root of LENGTH/4. - A subrun of two or more provisionals can stand - when LENGTH is at least 16. - A subrun of 4 or more can stand when LENGTH >= 64. */ - while (0 < (tem >>= 2)) - minimum <<= 1; - minimum++; - - /* Cancel any subrun of MINIMUM or more provisionals - within the larger run. */ - for (j = 0, consec = 0; j < length; j++) - if (discards[i + j] != 2) - consec = 0; - else if (minimum == ++consec) - /* Back up to start of subrun, to cancel it all. */ - j -= consec; - else if (minimum < consec) - discards[i + j] = 0; - - /* Scan from beginning of run - until we find 3 or more nonprovisionals in a row - or until the first nonprovisional at least 8 lines in. - Until that point, cancel any provisionals. */ - for (j = 0, consec = 0; j < length; j++) - { - if (j >= 8 && discards[i + j] == 1) - break; - if (discards[i + j] == 2) - consec = 0, discards[i + j] = 0; - else if (discards[i + j] == 0) - consec = 0; - else - consec++; - if (consec == 3) - break; - } - - /* I advances to the last line of the run. */ - i += length - 1; - - /* Same thing, from end. */ - for (j = 0, consec = 0; j < length; j++) - { - if (j >= 8 && discards[i - j] == 1) - break; - if (discards[i - j] == 2) - consec = 0, discards[i - j] = 0; - else if (discards[i - j] == 0) - consec = 0; - else - consec++; - if (consec == 3) - break; - } - } - } - } - } - - /* Actually discard the lines. */ - for (f = 0; f < 2; f++) - { - char *discards = discarded[f]; - lin end = filevec[f].buffered_lines; - lin j = 0; - for (i = 0; i < end; ++i) - if (minimal || discards[i] == 0) - { - filevec[f].undiscarded[j] = filevec[f].equivs[i]; - filevec[f].realindexes[j++] = i; - } - else - filevec[f].changed[i] = 1; - filevec[f].nondiscarded_lines = j; - } - - free (discarded[0]); - free (equiv_count[0]); -} - -/* Adjust inserts/deletes of identical lines to join changes - as much as possible. - - We do something when a run of changed lines include a - line at one end and have an excluded, identical line at the other. - We are free to choose which identical line is included. - `compareseq' usually chooses the one at the beginning, - but usually it is cleaner to consider the following identical line - to be the "change". */ - -static void -shift_boundaries (struct file_data filevec[]) -{ - int f; - - for (f = 0; f < 2; f++) - { - bool *changed = filevec[f].changed; - bool const *other_changed = filevec[1 - f].changed; - lin const *equivs = filevec[f].equivs; - lin i = 0; - lin j = 0; - lin i_end = filevec[f].buffered_lines; - - while (1) - { - lin runlength, start, corresponding; - - /* Scan forwards to find beginning of another run of changes. - Also keep track of the corresponding point in the other file. */ - - while (i < i_end && !changed[i]) - { - while (other_changed[j++]) - continue; - i++; - } - - if (i == i_end) - break; - - start = i; - - /* Find the end of this run of changes. */ - - while (changed[++i]) - continue; - while (other_changed[j]) - j++; - - do - { - /* Record the length of this run of changes, so that - we can later determine whether the run has grown. */ - runlength = i - start; - - /* Move the changed region back, so long as the - previous unchanged line matches the last changed one. - This merges with previous changed regions. */ - - while (start && equivs[start - 1] == equivs[i - 1]) - { - changed[--start] = 1; - changed[--i] = 0; - while (changed[start - 1]) - start--; - while (other_changed[--j]) - continue; - } - - /* Set CORRESPONDING to the end of the changed run, at the last - point where it corresponds to a changed run in the other file. - CORRESPONDING == I_END means no such point has been found. */ - corresponding = other_changed[j - 1] ? i : i_end; - - /* Move the changed region forward, so long as the - first changed line matches the following unchanged one. - This merges with following changed regions. - Do this second, so that if there are no merges, - the changed region is moved forward as far as possible. */ - - while (i != i_end && equivs[start] == equivs[i]) - { - changed[start++] = 0; - changed[i++] = 1; - while (changed[i]) - i++; - while (other_changed[++j]) - corresponding = i; - } - } - while (runlength != i - start); - - /* If possible, move the fully-merged run of changes - back to a corresponding run in the other file. */ - - while (corresponding < i) - { - changed[--start] = 1; - changed[--i] = 0; - while (other_changed[--j]) - continue; - } - } - } -} - -/* Cons an additional entry onto the front of an edit script OLD. - LINE0 and LINE1 are the first affected lines in the two files (origin 0). - DELETED is the number of lines deleted here from file 0. - INSERTED is the number of lines inserted here in file 1. - - If DELETED is 0 then LINE0 is the number of the line before - which the insertion was done; vice versa for INSERTED and LINE1. */ - -static struct change * -add_change (lin line0, lin line1, lin deleted, lin inserted, - struct change *old) -{ - struct change *new = xmalloc (sizeof *new); - - new->line0 = line0; - new->line1 = line1; - new->inserted = inserted; - new->deleted = deleted; - new->link = old; - return new; -} - -/* Scan the tables of which lines are inserted and deleted, - producing an edit script in reverse order. */ - -static struct change * -build_reverse_script (struct file_data const filevec[]) -{ - struct change *script = 0; - bool *changed0 = filevec[0].changed; - bool *changed1 = filevec[1].changed; - lin len0 = filevec[0].buffered_lines; - lin len1 = filevec[1].buffered_lines; - - /* Note that changedN[len0] does exist, and is 0. */ - - lin i0 = 0, i1 = 0; - - while (i0 < len0 || i1 < len1) - { - if (changed0[i0] | changed1[i1]) - { - lin line0 = i0, line1 = i1; - - /* Find # lines changed here in each file. */ - while (changed0[i0]) ++i0; - while (changed1[i1]) ++i1; - - /* Record this change. */ - script = add_change (line0, line1, i0 - line0, i1 - line1, script); - } - - /* We have reached lines in the two files that match each other. */ - i0++, i1++; - } - - return script; -} - -/* Scan the tables of which lines are inserted and deleted, - producing an edit script in forward order. */ - -static struct change * -build_script (struct file_data const filevec[]) -{ - struct change *script = 0; - bool *changed0 = filevec[0].changed; - bool *changed1 = filevec[1].changed; - lin i0 = filevec[0].buffered_lines, i1 = filevec[1].buffered_lines; - - /* Note that changedN[-1] does exist, and is 0. */ - - while (i0 >= 0 || i1 >= 0) - { - if (changed0[i0 - 1] | changed1[i1 - 1]) - { - lin line0 = i0, line1 = i1; - - /* Find # lines changed here in each file. */ - while (changed0[i0 - 1]) --i0; - while (changed1[i1 - 1]) --i1; - - /* Record this change. */ - script = add_change (i0, i1, line0 - i0, line1 - i1, script); - } - - /* We have reached lines in the two files that match each other. */ - i0--, i1--; - } - - return script; -} - -/* If CHANGES, briefly report that two files differed. - Return 2 if trouble, CHANGES otherwise. */ -static int -briefly_report (int changes, struct file_data const filevec[]) -{ - if (changes) - { - char const *label0 = file_label[0] ? file_label[0] : filevec[0].name; - char const *label1 = file_label[1] ? file_label[1] : filevec[1].name; - - if (brief) - message ("Files %s and %s differ\n", label0, label1); - else - { - message ("Binary files %s and %s differ\n", label0, label1); - changes = 2; - } - } - - return changes; -} - -/* Report the differences of two files. */ -int -diff_2_files (struct comparison *cmp) -{ - lin diags; - int f; - struct change *e, *p; - struct change *script; - int changes; - - - /* If we have detected that either file is binary, - compare the two files as binary. This can happen - only when the first chunk is read. - Also, --brief without any --ignore-* options means - we can speed things up by treating the files as binary. */ - - if (read_files (cmp->file, files_can_be_treated_as_binary)) - { - /* Files with different lengths must be different. */ - if (cmp->file[0].stat.st_size != cmp->file[1].stat.st_size - && (cmp->file[0].desc < 0 || S_ISREG (cmp->file[0].stat.st_mode)) - && (cmp->file[1].desc < 0 || S_ISREG (cmp->file[1].stat.st_mode))) - changes = 1; - - /* Standard input equals itself. */ - else if (cmp->file[0].desc == cmp->file[1].desc) - changes = 0; - - else - /* Scan both files, a buffer at a time, looking for a difference. */ - { - /* Allocate same-sized buffers for both files. */ - size_t lcm_max = PTRDIFF_MAX - 1; - size_t buffer_size = - buffer_lcm (sizeof (word), - buffer_lcm (STAT_BLOCKSIZE (cmp->file[0].stat), - STAT_BLOCKSIZE (cmp->file[1].stat), - lcm_max), - lcm_max); - for (f = 0; f < 2; f++) - cmp->file[f].buffer = xrealloc (cmp->file[f].buffer, buffer_size); - - for (;; cmp->file[0].buffered = cmp->file[1].buffered = 0) - { - /* Read a buffer's worth from both files. */ - for (f = 0; f < 2; f++) - if (0 <= cmp->file[f].desc) - file_block_read (&cmp->file[f], - buffer_size - cmp->file[f].buffered); - - /* If the buffers differ, the files differ. */ - if (cmp->file[0].buffered != cmp->file[1].buffered - || memcmp (cmp->file[0].buffer, - cmp->file[1].buffer, - cmp->file[0].buffered)) - { - changes = 1; - break; - } - - /* If we reach end of file, the files are the same. */ - if (cmp->file[0].buffered != buffer_size) - { - changes = 0; - break; - } - } - } - - changes = briefly_report (changes, cmp->file); - } - else - { - /* Allocate vectors for the results of comparison: - a flag for each line of each file, saying whether that line - is an insertion or deletion. - Allocate an extra element, always 0, at each end of each vector. */ - - size_t s = cmp->file[0].buffered_lines + cmp->file[1].buffered_lines + 4; - bool *flag_space = zalloc (s * sizeof *flag_space); - cmp->file[0].changed = flag_space + 1; - cmp->file[1].changed = flag_space + cmp->file[0].buffered_lines + 3; - - /* Some lines are obviously insertions or deletions - because they don't match anything. Detect them now, and - avoid even thinking about them in the main comparison algorithm. */ - - discard_confusing_lines (cmp->file); - - /* Now do the main comparison algorithm, considering just the - undiscarded lines. */ - - xvec = cmp->file[0].undiscarded; - yvec = cmp->file[1].undiscarded; - diags = (cmp->file[0].nondiscarded_lines - + cmp->file[1].nondiscarded_lines + 3); - fdiag = xmalloc (diags * (2 * sizeof *fdiag)); - bdiag = fdiag + diags; - fdiag += cmp->file[1].nondiscarded_lines + 1; - bdiag += cmp->file[1].nondiscarded_lines + 1; - - /* Set TOO_EXPENSIVE to be approximate square root of input size, - bounded below by 256. */ - too_expensive = 1; - for (; diags != 0; diags >>= 2) - too_expensive <<= 1; - too_expensive = MAX (256, too_expensive); - - files[0] = cmp->file[0]; - files[1] = cmp->file[1]; - - compareseq (0, cmp->file[0].nondiscarded_lines, - 0, cmp->file[1].nondiscarded_lines, minimal); - - free (fdiag - (cmp->file[1].nondiscarded_lines + 1)); - - /* Modify the results slightly to make them prettier - in cases where that can validly be done. */ - - shift_boundaries (cmp->file); - - /* Get the results of comparison in the form of a chain - of `struct change's -- an edit script. */ - - if (output_style == OUTPUT_ED) - script = build_reverse_script (cmp->file); - else - script = build_script (cmp->file); - - /* Set CHANGES if we had any diffs. - If some changes are ignored, we must scan the script to decide. */ - if (ignore_blank_lines || ignore_regexp.fastmap) - { - struct change *next = script; - changes = 0; - - while (next && changes == 0) - { - struct change *this, *end; - lin first0, last0, first1, last1; - - /* Find a set of changes that belong together. */ - this = next; - end = find_change (next); - - /* Disconnect them from the rest of the changes, making them - a hunk, and remember the rest for next iteration. */ - next = end->link; - end->link = 0; - - /* Determine whether this hunk is really a difference. */ - if (analyze_hunk (this, &first0, &last0, &first1, &last1)) - changes = 1; - - /* Reconnect the script so it will all be freed properly. */ - end->link = next; - } - } - else - changes = (script != 0); - - if (brief) - changes = briefly_report (changes, cmp->file); - else - { - if (changes | !no_diff_means_no_output) - { - /* Record info for starting up output, - to be used if and when we have some output to print. */ - setup_output (file_label[0] ? file_label[0] : cmp->file[0].name, - file_label[1] ? file_label[1] : cmp->file[1].name, - cmp->parent != 0); - - switch (output_style) - { - case OUTPUT_CONTEXT: - print_context_script (script, 0); - break; - - case OUTPUT_UNIFIED: - print_context_script (script, 1); - break; - - case OUTPUT_ED: - print_ed_script (script); - break; - - case OUTPUT_FORWARD_ED: - pr_forward_ed_script (script); - break; - - case OUTPUT_RCS: - print_rcs_script (script); - break; - - case OUTPUT_NORMAL: - print_normal_script (script); - break; - - case OUTPUT_IFDEF: - print_ifdef_script (script); - break; - - case OUTPUT_SDIFF: - print_sdiff_script (script); - break; - - default: - abort (); - } - - finish_output (); - } - } - - free (cmp->file[0].undiscarded); - - free (flag_space); - - for (f = 0; f < 2; f++) - { - free (cmp->file[f].equivs); - free (cmp->file[f].linbuf + cmp->file[f].linbuf_base); - } - - for (e = script; e; e = p) - { - p = e->link; - free (e); - } - - if (! ROBUST_OUTPUT_STYLE (output_style)) - for (f = 0; f < 2; ++f) - if (cmp->file[f].missing_newline) - { - error (0, 0, "%s: %s\n", - file_label[f] ? file_label[f] : cmp->file[f].name, - _("No newline at end of file")); - changes = 2; - } - } - - if (cmp->file[0].buffer != cmp->file[1].buffer) - free (cmp->file[0].buffer); - free (cmp->file[1].buffer); - - return changes; -} diff --git a/src/bin/diffutils/src/cmp.c b/src/bin/diffutils/src/cmp.c deleted file mode 100644 index f978429504..0000000000 --- a/src/bin/diffutils/src/cmp.c +++ /dev/null @@ -1,674 +0,0 @@ -/* cmp - compare two files byte by byte - - Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 2001, - 2002 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include "system.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if defined LC_MESSAGES && ENABLE_NLS -# define hard_locale_LC_MESSAGES hard_locale (LC_MESSAGES) -#else -# define hard_locale_LC_MESSAGES 0 -#endif - -static char const authorship_msgid[] = - N_("Written by Torbjorn Granlund and David MacKenzie."); - -static char const copyright_string[] = - "Copyright (C) 2002 Free Software Foundation, Inc."; - -extern char const version_string[]; - -static int cmp (void); -static off_t file_position (int); -static size_t block_compare (word const *, word const *); -static size_t block_compare_and_count (word const *, word const *, off_t *); -static void sprintc (char *, unsigned char); - -/* Name under which this program was invoked. */ -char *program_name; - -/* Filenames of the compared files. */ -static char const *file[2]; - -/* File descriptors of the files. */ -static int file_desc[2]; - -/* Status of the files. */ -static struct stat stat_buf[2]; - -/* Read buffers for the files. */ -static word *buffer[2]; - -/* Optimal block size for the files. */ -static size_t buf_size; - -/* Initial prefix to ignore for each file. */ -static off_t ignore_initial[2]; - -/* Number of bytes to compare. */ -static uintmax_t bytes = UINTMAX_MAX; - -/* Output format. */ -static enum comparison_type - { - type_first_diff, /* Print the first difference. */ - type_all_diffs, /* Print all differences. */ - type_status /* Exit status only. */ - } comparison_type; - -/* If nonzero, print values of bytes quoted like cat -t does. */ -static bool opt_print_bytes; - -/* Values for long options that do not have single-letter equivalents. */ -enum -{ - HELP_OPTION = CHAR_MAX + 1 -}; - -static struct option const long_options[] = -{ - {"print-bytes", 0, 0, 'b'}, - {"print-chars", 0, 0, 'c'}, /* obsolescent as of diffutils 2.7.3 */ - {"ignore-initial", 1, 0, 'i'}, - {"verbose", 0, 0, 'l'}, - {"bytes", 1, 0, 'n'}, - {"silent", 0, 0, 's'}, - {"quiet", 0, 0, 's'}, - {"version", 0, 0, 'v'}, - {"help", 0, 0, HELP_OPTION}, - {0, 0, 0, 0} -}; - -static void try_help (char const *, char const *) __attribute__((noreturn)); -static void -try_help (char const *reason_msgid, char const *operand) -{ - if (reason_msgid) - error (0, 0, _(reason_msgid), operand); - error (EXIT_TROUBLE, 0, - _("Try `%s --help' for more information."), program_name); - abort (); -} - -static char const valid_suffixes[] = "kKMGTPEZY0"; - -/* Parse an operand *ARGPTR of --ignore-initial, updating *ARGPTR to - point after the operand. If DELIMITER is nonzero, the operand may - be followed by DELIMITER; otherwise it must be null-terminated. */ -static off_t -parse_ignore_initial (char **argptr, char delimiter) -{ - uintmax_t val; - off_t o; - char const *arg = *argptr; - strtol_error e = xstrtoumax (arg, argptr, 0, &val, valid_suffixes); - if (! (e == LONGINT_OK - || (e == LONGINT_INVALID_SUFFIX_CHAR && **argptr == delimiter)) - || (o = val) < 0 || o != val || val == UINTMAX_MAX) - try_help ("invalid --ignore-initial value `%s'", arg); - return o; -} - -/* Specify the output format. */ -static void -specify_comparison_type (enum comparison_type t) -{ - if (comparison_type) - try_help ("options -l and -s are incompatible", 0); - comparison_type = t; -} - -static void -check_stdout (void) -{ - if (ferror (stdout)) - error (EXIT_TROUBLE, 0, "%s", _("write failed")); - else if (fclose (stdout) != 0) - error (EXIT_TROUBLE, errno, "%s", _("standard output")); -} - -static char const * const option_help_msgid[] = { - N_("-b --print-bytes Print differing bytes."), - N_("-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input."), - N_("-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2"), - N_(" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2."), - N_("-l --verbose Output byte numbers and values of all differing bytes."), - N_("-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes."), - N_("-s --quiet --silent Output nothing; yield exit status only."), - N_("-v --version Output version info."), - N_("--help Output this help."), - 0 -}; - -static void -usage (void) -{ - char const * const *p; - - printf (_("Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n"), - program_name); - printf ("%s\n\n", _("Compare two files byte by byte.")); - for (p = option_help_msgid; *p; p++) - printf (" %s\n", _(*p)); - printf ("\n%s\n%s\n\n%s\n\n%s\n", - _("SKIP1 and SKIP2 are the number of bytes to skip in each file."), - _("SKIP values may be followed by the following multiplicative suffixes:\n\ -kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n\ -GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y."), - _("If a FILE is `-' or missing, read standard input."), - _("Report bugs to .")); -} - -int -main (int argc, char **argv) -{ - int c, f, exit_status; - size_t words_per_buffer; - - exit_failure = EXIT_TROUBLE; - initialize_main (&argc, &argv); - program_name = argv[0]; - setlocale (LC_ALL, ""); - bindtextdomain (PACKAGE, LOCALEDIR); - textdomain (PACKAGE); - c_stack_action (c_stack_die); - - /* Parse command line options. */ - - while ((c = getopt_long (argc, argv, "bci:ln:sv", long_options, 0)) - != -1) - switch (c) - { - case 'b': - case 'c': /* 'c' is obsolescent as of diffutils 2.7.3 */ - opt_print_bytes = 1; - break; - - case 'i': - ignore_initial[0] = parse_ignore_initial (&optarg, ':'); - ignore_initial[1] = (*optarg++ == ':' - ? parse_ignore_initial (&optarg, 0) - : ignore_initial[0]); - break; - - case 'l': - specify_comparison_type (type_all_diffs); - break; - - case 'n': - { - uintmax_t n; - if (xstrtoumax (optarg, 0, 0, &n, valid_suffixes) != LONGINT_OK) - try_help ("invalid --bytes value `%s'", optarg); - if (n < bytes) - bytes = n; - } - break; - - case 's': - specify_comparison_type (type_status); - break; - - case 'v': - printf ("cmp %s\n%s\n\n%s\n\n%s\n", - version_string, copyright_string, - _(free_software_msgid), _(authorship_msgid)); - check_stdout (); - return EXIT_SUCCESS; - - case HELP_OPTION: - usage (); - check_stdout (); - return EXIT_SUCCESS; - - default: - try_help (0, 0); - } - - if (optind == argc) - try_help ("missing operand after `%s'", argv[argc - 1]); - - file[0] = argv[optind++]; - file[1] = optind < argc ? argv[optind++] : "-"; - - for (f = 0; f < 2 && optind < argc; f++) - { - char *arg = argv[optind++]; - ignore_initial[f] = parse_ignore_initial (&arg, 0); - } - - if (optind < argc) - try_help ("extra operand `%s'", argv[optind]); - - for (f = 0; f < 2; f++) - { - /* If file[1] is "-", treat it first; this avoids a misdiagnostic if - stdin is closed and opening file[0] yields file descriptor 0. */ - int f1 = f ^ (strcmp (file[1], "-") == 0); - - /* Two files with the same name are identical. - But wait until we open the file once, for proper diagnostics. */ - if (f && file_name_cmp (file[0], file[1]) == 0) - return EXIT_SUCCESS; - - file_desc[f1] = (strcmp (file[f1], "-") == 0 - ? STDIN_FILENO - : open (file[f1], O_RDONLY, 0)); - if (file_desc[f1] < 0 || fstat (file_desc[f1], stat_buf + f1) != 0) - { - if (file_desc[f1] < 0 && comparison_type == type_status) - exit (EXIT_TROUBLE); - else - error (EXIT_TROUBLE, errno, "%s", file[f1]); - } - - set_binary_mode (file_desc[f1], 1); - } - - /* If the files are links to the same inode and have the same file position, - they are identical. */ - - if (0 < same_file (&stat_buf[0], &stat_buf[1]) - && same_file_attributes (&stat_buf[0], &stat_buf[1]) - && file_position (0) == file_position (1)) - return EXIT_SUCCESS; - - /* If output is redirected to the null device, we may assume `-s'. */ - - if (comparison_type != type_status) - { - struct stat outstat, nullstat; - - if (fstat (STDOUT_FILENO, &outstat) == 0 - && stat (NULL_DEVICE, &nullstat) == 0 - && 0 < same_file (&outstat, &nullstat)) - comparison_type = type_status; - } - - /* If only a return code is needed, - and if both input descriptors are associated with plain files, - conclude that the files differ if they have different sizes - and if more bytes will be compared than are in the smaller file. */ - - if (comparison_type == type_status - && S_ISREG (stat_buf[0].st_mode) - && S_ISREG (stat_buf[1].st_mode)) - { - off_t s0 = stat_buf[0].st_size - file_position (0); - off_t s1 = stat_buf[1].st_size - file_position (1); - if (s0 < 0) - s0 = 0; - if (s1 < 0) - s1 = 0; - if (s0 != s1 && MIN (s0, s1) < bytes) - exit (EXIT_FAILURE); - } - - /* Get the optimal block size of the files. */ - - buf_size = buffer_lcm (STAT_BLOCKSIZE (stat_buf[0]), - STAT_BLOCKSIZE (stat_buf[1]), - PTRDIFF_MAX - sizeof (word)); - - /* Allocate word-aligned buffers, with space for sentinels at the end. */ - - words_per_buffer = (buf_size + 2 * sizeof (word) - 1) / sizeof (word); - buffer[0] = xmalloc (2 * sizeof (word) * words_per_buffer); - buffer[1] = buffer[0] + words_per_buffer; - - exit_status = cmp (); - - for (f = 0; f < 2; f++) - if (close (file_desc[f]) != 0) - error (EXIT_TROUBLE, errno, "%s", file[f]); - if (exit_status != 0 && comparison_type != type_status) - check_stdout (); - exit (exit_status); - return exit_status; -} - -/* Compare the two files already open on `file_desc[0]' and `file_desc[1]', - using `buffer[0]' and `buffer[1]'. - Return EXIT_SUCCESS if identical, EXIT_FAILURE if different, - >1 if error. */ - -static int -cmp (void) -{ - off_t line_number = 1; /* Line number (1...) of difference. */ - off_t byte_number = 1; /* Byte number (1...) of difference. */ - uintmax_t remaining = bytes; /* Remaining number of bytes to compare. */ - size_t read0, read1; /* Number of bytes read from each file. */ - size_t first_diff; /* Offset (0...) in buffers of 1st diff. */ - size_t smaller; /* The lesser of `read0' and `read1'. */ - word *buffer0 = buffer[0]; - word *buffer1 = buffer[1]; - char *buf0 = (char *) buffer0; - char *buf1 = (char *) buffer1; - int ret = EXIT_SUCCESS; - int f; - int offset_width; - - if (comparison_type == type_all_diffs) - { - off_t byte_number_max = MIN (bytes, TYPE_MAXIMUM (off_t)); - - for (f = 0; f < 2; f++) - if (S_ISREG (stat_buf[f].st_mode)) - { - off_t file_bytes = stat_buf[f].st_size - file_position (f); - if (file_bytes < byte_number_max) - byte_number_max = file_bytes; - } - - for (offset_width = 1; (byte_number_max /= 10) != 0; offset_width++) - continue; - } - - for (f = 0; f < 2; f++) - { - off_t ig = ignore_initial[f]; - if (ig && file_position (f) == -1) - { - /* lseek failed; read and discard the ignored initial prefix. */ - do - { - size_t bytes_to_read = MIN (ig, buf_size); - size_t r = block_read (file_desc[f], buf0, bytes_to_read); - if (r != bytes_to_read) - { - if (r == SIZE_MAX) - error (EXIT_TROUBLE, errno, "%s", file[f]); - break; - } - ig -= r; - } - while (ig); - } - } - - do - { - size_t bytes_to_read = buf_size; - - if (remaining != UINTMAX_MAX) - { - if (remaining < bytes_to_read) - bytes_to_read = remaining; - remaining -= bytes_to_read; - } - - read0 = block_read (file_desc[0], buf0, bytes_to_read); - if (read0 == SIZE_MAX) - error (EXIT_TROUBLE, errno, "%s", file[0]); - read1 = block_read (file_desc[1], buf1, bytes_to_read); - if (read1 == SIZE_MAX) - error (EXIT_TROUBLE, errno, "%s", file[1]); - - /* Insert sentinels for the block compare. */ - - buf0[read0] = ~buf1[read0]; - buf1[read1] = ~buf0[read1]; - - /* If the line number should be written for differing files, - compare the blocks and count the number of newlines - simultaneously. */ - first_diff = (comparison_type == type_first_diff - ? block_compare_and_count (buffer0, buffer1, &line_number) - : block_compare (buffer0, buffer1)); - - byte_number += first_diff; - smaller = MIN (read0, read1); - - if (first_diff < smaller) - { - switch (comparison_type) - { - case type_first_diff: - { - char byte_buf[INT_BUFSIZE_BOUND (off_t)]; - char line_buf[INT_BUFSIZE_BOUND (off_t)]; - char const *byte_num = offtostr (byte_number, byte_buf); - char const *line_num = offtostr (line_number, line_buf); - if (!opt_print_bytes) - { - /* See POSIX 1003.1-2001 for this format. This - message is used only in the POSIX locale, so it - need not be translated. */ - static char const char_message[] = - "%s %s differ: char %s, line %s\n"; - - /* The POSIX rationale recommends using the word - "byte" outside the POSIX locale. Some gettext - implementations translate even in the POSIX - locale if certain other environment variables - are set, so use "byte" if a translation is - available, or if outside the POSIX locale. */ - static char const byte_msgid[] = - N_("%s %s differ: byte %s, line %s\n"); - char const *byte_message = _(byte_msgid); - bool use_byte_message = (byte_message != byte_msgid - || hard_locale_LC_MESSAGES); - - printf ((use_byte_message - ? byte_message - : "%s %s differ: char %s, line %s\n"), - file[0], file[1], byte_num, line_num); - } - else - { - unsigned char c0 = buf0[first_diff]; - unsigned char c1 = buf1[first_diff]; - char s0[5]; - char s1[5]; - sprintc (s0, c0); - sprintc (s1, c1); - printf (_("%s %s differ: byte %s, line %s is %3o %s %3o %s\n"), - file[0], file[1], byte_num, line_num, - c0, s0, c1, s1); - } - } - /* Fall through. */ - case type_status: - return EXIT_FAILURE; - - case type_all_diffs: - do - { - unsigned char c0 = buf0[first_diff]; - unsigned char c1 = buf1[first_diff]; - if (c0 != c1) - { - char byte_buf[INT_BUFSIZE_BOUND (off_t)]; - char const *byte_num = offtostr (byte_number, byte_buf); - if (!opt_print_bytes) - { - /* See POSIX 1003.1-2001 for this format. */ - printf ("%*s %3o %3o\n", - offset_width, byte_num, c0, c1); - } - else - { - char s0[5]; - char s1[5]; - sprintc (s0, c0); - sprintc (s1, c1); - printf ("%*s %3o %-4s %3o %s\n", - offset_width, byte_num, c0, s0, c1, s1); - } - } - byte_number++; - first_diff++; - } - while (first_diff < smaller); - ret = EXIT_FAILURE; - break; - } - } - - if (read0 != read1) - { - if (comparison_type != type_status) - { - /* See POSIX 1003.1-2001 for this format. */ - fprintf (stderr, _("cmp: EOF on %s\n"), file[read1 < read0]); - } - - return EXIT_FAILURE; - } - } - while (read0 == buf_size); - - return ret; -} - -/* Compare two blocks of memory P0 and P1 until they differ, - and count the number of '\n' occurrences in the common - part of P0 and P1. - If the blocks are not guaranteed to be different, put sentinels at the ends - of the blocks before calling this function. - - Return the offset of the first byte that differs. - Increment *COUNT by the count of '\n' occurrences. */ - -static size_t -block_compare_and_count (word const *p0, word const *p1, off_t *count) -{ - word l; /* One word from first buffer. */ - word const *l0, *l1; /* Pointers into each buffer. */ - char const *c0, *c1; /* Pointers for finding exact address. */ - size_t cnt = 0; /* Number of '\n' occurrences. */ - word nnnn; /* Newline, sizeof (word) times. */ - int i; - - nnnn = 0; - for (i = 0; i < sizeof nnnn; i++) - nnnn = (nnnn << CHAR_BIT) | '\n'; - - /* Find the rough position of the first difference by reading words, - not bytes. */ - - for (l0 = p0, l1 = p1; (l = *l0) == *l1; l0++, l1++) - { - l ^= nnnn; - for (i = 0; i < sizeof l; i++) - { - cnt += ! (unsigned char) l; - l >>= CHAR_BIT; - } - } - - /* Find the exact differing position (endianness independent). */ - - for (c0 = (char const *) l0, c1 = (char const *) l1; - *c0 == *c1; - c0++, c1++) - cnt += *c0 == '\n'; - - *count += cnt; - return c0 - (char const *) p0; -} - -/* Compare two blocks of memory P0 and P1 until they differ. - If the blocks are not guaranteed to be different, put sentinels at the ends - of the blocks before calling this function. - - Return the offset of the first byte that differs. */ - -static size_t -block_compare (word const *p0, word const *p1) -{ - word const *l0, *l1; - char const *c0, *c1; - - /* Find the rough position of the first difference by reading words, - not bytes. */ - - for (l0 = p0, l1 = p1; *l0 == *l1; l0++, l1++) - continue; - - /* Find the exact differing position (endianness independent). */ - - for (c0 = (char const *) l0, c1 = (char const *) l1; - *c0 == *c1; - c0++, c1++) - continue; - - return c0 - (char const *) p0; -} - -/* Put into BUF the unsigned char C, making unprintable bytes - visible by quoting like cat -t does. */ - -static void -sprintc (char *buf, unsigned char c) -{ - if (! ISPRINT (c)) - { - if (c >= 128) - { - *buf++ = 'M'; - *buf++ = '-'; - c -= 128; - } - if (c < 32) - { - *buf++ = '^'; - c += 64; - } - else if (c == 127) - { - *buf++ = '^'; - c = '?'; - } - } - - *buf++ = c; - *buf = 0; -} - -/* Position file F to ignore_initial[F] bytes from its initial position, - and yield its new position. Don't try more than once. */ - -static off_t -file_position (int f) -{ - static bool positioned[2]; - static off_t position[2]; - - if (! positioned[f]) - { - positioned[f] = 1; - position[f] = lseek (file_desc[f], ignore_initial[f], SEEK_CUR); - } - return position[f]; -} diff --git a/src/bin/diffutils/src/context.c b/src/bin/diffutils/src/context.c deleted file mode 100644 index 18d70235ef..0000000000 --- a/src/bin/diffutils/src/context.c +++ /dev/null @@ -1,478 +0,0 @@ -/* Context-format output routines for GNU DIFF. - - Copyright (C) 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1998, 2001, - 2002 Free Software Foundation, Inc. - - This file is part of GNU DIFF. - - GNU DIFF is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GNU DIFF is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include "diff.h" -#include -#include - -#ifdef ST_MTIM_NSEC -# define TIMESPEC_NS(timespec) ((timespec).ST_MTIM_NSEC) -#else -# define TIMESPEC_NS(timespec) 0 -#endif - -size_t nstrftime (char *, size_t, char const *, struct tm const *, int, int); - -static char const *find_function (char const * const *, lin); -static struct change *find_hunk (struct change *); -static void mark_ignorable (struct change *); -static void pr_context_hunk (struct change *); -static void pr_unidiff_hunk (struct change *); - -/* Last place find_function started searching from. */ -static lin find_function_last_search; - -/* The value find_function returned when it started searching there. */ -static lin find_function_last_match; - -/* Print a label for a context diff, with a file name and date or a label. */ - -static void -print_context_label (char const *mark, - struct file_data *inf, - char const *label) -{ - if (label) - fprintf (outfile, "%s %s\n", mark, label); - else - { - char buf[MAX (INT_STRLEN_BOUND (int) + 32, - INT_STRLEN_BOUND (time_t) + 11)]; - struct tm const *tm = localtime (&inf->stat.st_mtime); - int nsec = TIMESPEC_NS (inf->stat.st_mtim); - if (! (tm && nstrftime (buf, sizeof buf, time_format, tm, 0, nsec))) - { - long sec = inf->stat.st_mtime; - verify (info_preserved, sizeof inf->stat.st_mtime <= sizeof sec); - sprintf (buf, "%ld.%.9d", sec, nsec); - } - fprintf (outfile, "%s %s\t%s\n", mark, inf->name, buf); - } -} - -/* Print a header for a context diff, with the file names and dates. */ - -void -print_context_header (struct file_data inf[], bool unidiff) -{ - if (unidiff) - { - print_context_label ("---", &inf[0], file_label[0]); - print_context_label ("+++", &inf[1], file_label[1]); - } - else - { - print_context_label ("***", &inf[0], file_label[0]); - print_context_label ("---", &inf[1], file_label[1]); - } -} - -/* Print an edit script in context format. */ - -void -print_context_script (struct change *script, bool unidiff) -{ - if (ignore_blank_lines || ignore_regexp.fastmap) - mark_ignorable (script); - else - { - struct change *e; - for (e = script; e; e = e->link) - e->ignore = 0; - } - - find_function_last_search = - files[0].prefix_lines; - find_function_last_match = LIN_MAX; - - if (unidiff) - print_script (script, find_hunk, pr_unidiff_hunk); - else - print_script (script, find_hunk, pr_context_hunk); -} - -/* Print a pair of line numbers with a comma, translated for file FILE. - If the second number is not greater, use the first in place of it. - - Args A and B are internal line numbers. - We print the translated (real) line numbers. */ - -static void -print_context_number_range (struct file_data const *file, lin a, lin b) -{ - long trans_a, trans_b; - translate_range (file, a, b, &trans_a, &trans_b); - - /* We can have B <= A in the case of a range of no lines. - In this case, we should print the line number before the range, - which is B. - - POSIX 1003.1-2001 requires two line numbers separated by a comma - even if the line numbers are the same. However, this does not - match existing practice and is surely an error in the - specification. */ - - if (trans_b <= trans_a) - fprintf (outfile, "%ld", trans_b); - else - fprintf (outfile, "%ld,%ld", trans_a, trans_b); -} - -/* Print FUNCTION in a context header. */ -static void -print_context_function (FILE *out, char const *function) -{ - int i; - putc (' ', out); - for (i = 0; i < 40 && function[i] != '\n'; i++) - continue; - fwrite (function, 1, i, out); -} - -/* Print a portion of an edit script in context format. - HUNK is the beginning of the portion to be printed. - The end is marked by a `link' that has been nulled out. - - Prints out lines from both files, and precedes each - line with the appropriate flag-character. */ - -static void -pr_context_hunk (struct change *hunk) -{ - lin first0, last0, first1, last1, i; - char const *prefix; - char const *function; - FILE *out; - - /* Determine range of line numbers involved in each file. */ - - enum changes changes = analyze_hunk (hunk, &first0, &last0, &first1, &last1); - if (! changes) - return; - - /* Include a context's width before and after. */ - - i = - files[0].prefix_lines; - first0 = MAX (first0 - context, i); - first1 = MAX (first1 - context, i); - if (last0 < files[0].valid_lines - context) - last0 += context; - else - last0 = files[0].valid_lines - 1; - if (last1 < files[1].valid_lines - context) - last1 += context; - else - last1 = files[1].valid_lines - 1; - - /* If desired, find the preceding function definition line in file 0. */ - function = 0; - if (function_regexp.fastmap) - function = find_function (files[0].linbuf, first0); - - begin_output (); - out = outfile; - - fprintf (out, "***************"); - - if (function) - print_context_function (out, function); - - fprintf (out, "\n*** "); - print_context_number_range (&files[0], first0, last0); - fprintf (out, " ****\n"); - - if (changes & OLD) - { - struct change *next = hunk; - - for (i = first0; i <= last0; i++) - { - /* Skip past changes that apply (in file 0) - only to lines before line I. */ - - while (next && next->line0 + next->deleted <= i) - next = next->link; - - /* Compute the marking for line I. */ - - prefix = " "; - if (next && next->line0 <= i) - /* The change NEXT covers this line. - If lines were inserted here in file 1, this is "changed". - Otherwise it is "deleted". */ - prefix = (next->inserted > 0 ? "!" : "-"); - - print_1_line (prefix, &files[0].linbuf[i]); - } - } - - fprintf (out, "--- "); - print_context_number_range (&files[1], first1, last1); - fprintf (out, " ----\n"); - - if (changes & NEW) - { - struct change *next = hunk; - - for (i = first1; i <= last1; i++) - { - /* Skip past changes that apply (in file 1) - only to lines before line I. */ - - while (next && next->line1 + next->inserted <= i) - next = next->link; - - /* Compute the marking for line I. */ - - prefix = " "; - if (next && next->line1 <= i) - /* The change NEXT covers this line. - If lines were deleted here in file 0, this is "changed". - Otherwise it is "inserted". */ - prefix = (next->deleted > 0 ? "!" : "+"); - - print_1_line (prefix, &files[1].linbuf[i]); - } - } -} - -/* Print a pair of line numbers with a comma, translated for file FILE. - If the second number is smaller, use the first in place of it. - If the numbers are equal, print just one number. - - Args A and B are internal line numbers. - We print the translated (real) line numbers. */ - -static void -print_unidiff_number_range (struct file_data const *file, lin a, lin b) -{ - long trans_a, trans_b; - translate_range (file, a, b, &trans_a, &trans_b); - - /* We can have B < A in the case of a range of no lines. - In this case, we should print the line number before the range, - which is B. */ - if (trans_b <= trans_a) - fprintf (outfile, trans_b < trans_a ? "%ld,0" : "%ld", trans_b); - else - fprintf (outfile, "%ld,%ld", trans_a, trans_b - trans_a + 1); -} - -/* Print a portion of an edit script in unidiff format. - HUNK is the beginning of the portion to be printed. - The end is marked by a `link' that has been nulled out. - - Prints out lines from both files, and precedes each - line with the appropriate flag-character. */ - -static void -pr_unidiff_hunk (struct change *hunk) -{ - lin first0, last0, first1, last1; - lin i, j, k; - struct change *next; - char const *function; - FILE *out; - - /* Determine range of line numbers involved in each file. */ - - if (! analyze_hunk (hunk, &first0, &last0, &first1, &last1)) - return; - - /* Include a context's width before and after. */ - - i = - files[0].prefix_lines; - first0 = MAX (first0 - context, i); - first1 = MAX (first1 - context, i); - if (last0 < files[0].valid_lines - context) - last0 += context; - else - last0 = files[0].valid_lines - 1; - if (last1 < files[1].valid_lines - context) - last1 += context; - else - last1 = files[1].valid_lines - 1; - - /* If desired, find the preceding function definition line in file 0. */ - function = 0; - if (function_regexp.fastmap) - function = find_function (files[0].linbuf, first0); - - begin_output (); - out = outfile; - - fprintf (out, "@@ -"); - print_unidiff_number_range (&files[0], first0, last0); - fprintf (out, " +"); - print_unidiff_number_range (&files[1], first1, last1); - fprintf (out, " @@"); - - if (function) - print_context_function (out, function); - - putc ('\n', out); - - next = hunk; - i = first0; - j = first1; - - while (i <= last0 || j <= last1) - { - - /* If the line isn't a difference, output the context from file 0. */ - - if (!next || i < next->line0) - { - putc (initial_tab ? '\t' : ' ', out); - print_1_line (0, &files[0].linbuf[i++]); - j++; - } - else - { - /* For each difference, first output the deleted part. */ - - k = next->deleted; - while (k--) - { - putc ('-', out); - if (initial_tab) - putc ('\t', out); - print_1_line (0, &files[0].linbuf[i++]); - } - - /* Then output the inserted part. */ - - k = next->inserted; - while (k--) - { - putc ('+', out); - if (initial_tab) - putc ('\t', out); - print_1_line (0, &files[1].linbuf[j++]); - } - - /* We're done with this hunk, so on to the next! */ - - next = next->link; - } - } -} - -/* Scan a (forward-ordered) edit script for the first place that more than - 2*CONTEXT unchanged lines appear, and return a pointer - to the `struct change' for the last change before those lines. */ - -static struct change * -find_hunk (struct change *start) -{ - struct change *prev; - lin top0, top1; - lin thresh; - - /* Threshold distance is 2 * CONTEXT + 1 between two non-ignorable - changes, but only CONTEXT if one is ignorable. Watch out for - integer overflow, though. */ - lin non_ignorable_threshold = - (LIN_MAX - 1) / 2 < context ? LIN_MAX : 2 * context + 1; - lin ignorable_threshold = context; - - do - { - /* Compute number of first line in each file beyond this changed. */ - top0 = start->line0 + start->deleted; - top1 = start->line1 + start->inserted; - prev = start; - start = start->link; - thresh = (prev->ignore || (start && start->ignore) - ? ignorable_threshold - : non_ignorable_threshold); - /* It is not supposed to matter which file we check in the end-test. - If it would matter, crash. */ - if (start && start->line0 - top0 != start->line1 - top1) - abort (); - } while (start - /* Keep going if less than THRESH lines - elapse before the affected line. */ - && start->line0 - top0 < thresh); - - return prev; -} - -/* Set the `ignore' flag properly in each change in SCRIPT. - It should be 1 if all the lines inserted or deleted in that change - are ignorable lines. */ - -static void -mark_ignorable (struct change *script) -{ - while (script) - { - struct change *next = script->link; - lin first0, last0, first1, last1; - - /* Turn this change into a hunk: detach it from the others. */ - script->link = 0; - - /* Determine whether this change is ignorable. */ - script->ignore = ! analyze_hunk (script, - &first0, &last0, &first1, &last1); - - /* Reconnect the chain as before. */ - script->link = next; - - /* Advance to the following change. */ - script = next; - } -} - -/* Find the last function-header line in LINBUF prior to line number LINENUM. - This is a line containing a match for the regexp in `function_regexp'. - Return the address of the text, or 0 if no function-header is found. */ - -static char const * -find_function (char const * const *linbuf, lin linenum) -{ - lin i = linenum; - lin last = find_function_last_search; - find_function_last_search = i; - - while (last <= --i) - { - /* See if this line is what we want. */ - char const *line = linbuf[i]; - size_t linelen = linbuf[i + 1] - line - 1; - - /* FIXME: re_search's size args should be size_t, not int. */ - int len = MIN (linelen, INT_MAX); - - if (0 <= re_search (&function_regexp, line, len, 0, len, 0)) - { - find_function_last_match = i; - return line; - } - } - /* If we search back to where we started searching the previous time, - find the line we found last time. */ - if (find_function_last_match != LIN_MAX) - return linbuf[find_function_last_match]; - - return 0; -} diff --git a/src/bin/diffutils/src/diff.c b/src/bin/diffutils/src/diff.c deleted file mode 100644 index 4dc4044176..0000000000 --- a/src/bin/diffutils/src/diff.c +++ /dev/null @@ -1,1363 +0,0 @@ -/* diff - compare files line by line - - Copyright (C) 1988, 1989, 1992, 1993, 1994, 1996, 1998, 2001, 2002 - Free Software Foundation, Inc. - - This file is part of GNU DIFF. - - GNU DIFF is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GNU DIFF is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GNU DIFF; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#define GDIFF_MAIN -#include "diff.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -static char const authorship_msgid[] = - N_("Written by Paul Eggert, Mike Haertel, David Hayes,\n\ -Richard Stallman, and Len Tower."); - -static char const copyright_string[] = - "Copyright (C) 2002 Free Software Foundation, Inc."; - -#ifndef GUTTER_WIDTH_MINIMUM -# define GUTTER_WIDTH_MINIMUM 3 -#endif - -struct regexp_list -{ - char *regexps; /* chars representing disjunction of the regexps */ - size_t len; /* chars used in `regexps' */ - size_t size; /* size malloc'ed for `regexps'; 0 if not malloc'ed */ - bool multiple_regexps;/* Does `regexps' represent a disjunction? */ - struct re_pattern_buffer *buf; -}; - -static int compare_files (struct comparison const *, char const *, char const *); -static void add_regexp (struct regexp_list *, char const *); -static void summarize_regexp_list (struct regexp_list *); -static void specify_style (enum output_style); -static void specify_value (char const **, char const *, char const *); -static void try_help (char const *, char const *) __attribute__((noreturn)); -static void check_stdout (void); -static void usage (void); - -/* If comparing directories, compare their common subdirectories - recursively. */ -static bool recursive; - -/* In context diffs, show previous lines that match these regexps. */ -static struct regexp_list function_regexp_list; - -/* Ignore changes affecting only lines that match these regexps. */ -static struct regexp_list ignore_regexp_list; - -#if HAVE_SETMODE_DOS -/* Use binary I/O when reading and writing data (--binary). - On POSIX hosts, this has no effect. */ -static bool binary; -#endif - -/* When comparing directories, if a file appears only in one - directory, treat it as present but empty in the other (-N). - Then `patch' would create the file with appropriate contents. */ -static bool new_file; - -/* When comparing directories, if a file appears only in the second - directory of the two, treat it as present but empty in the other - (--unidirectional-new-file). - Then `patch' would create the file with appropriate contents. */ -static bool unidirectional_new_file; - -/* Report files compared that are the same (-s). - Normally nothing is output when that happens. */ -static bool report_identical_files; - - -/* Return a string containing the command options with which diff was invoked. - Spaces appear between what were separate ARGV-elements. - There is a space at the beginning but none at the end. - If there were no options, the result is an empty string. - - Arguments: OPTIONVEC, a vector containing separate ARGV-elements, and COUNT, - the length of that vector. */ - -static char * -option_list (char **optionvec, int count) -{ - int i; - size_t size = 1; - char *result; - char *p; - - for (i = 0; i < count; i++) - size += 1 + quote_system_arg ((char *) 0, optionvec[i]); - - p = result = xmalloc (size); - - for (i = 0; i < count; i++) - { - *p++ = ' '; - p += quote_system_arg (p, optionvec[i]); - } - - *p = 0; - return result; -} - - -/* Return an option value suitable for add_exclude. */ - -static int -exclude_options (void) -{ - return EXCLUDE_WILDCARDS | (ignore_file_name_case ? FNM_CASEFOLD : 0); -} - -static char const shortopts[] = -"0123456789abBcC:dD:eEfF:hHiI:lL:nNpPqrsS:tTuU:vwW:x:X:y"; - -/* Values for long options that do not have single-letter equivalents. */ -enum -{ - BINARY_OPTION = CHAR_MAX + 1, - FROM_FILE_OPTION, - HELP_OPTION, - HORIZON_LINES_OPTION, - IGNORE_FILE_NAME_CASE_OPTION, - INHIBIT_HUNK_MERGE_OPTION, - LEFT_COLUMN_OPTION, - LINE_FORMAT_OPTION, - NO_IGNORE_FILE_NAME_CASE_OPTION, - NORMAL_OPTION, - SDIFF_MERGE_ASSIST_OPTION, - STRIP_TRAILING_CR_OPTION, - SUPPRESS_COMMON_LINES_OPTION, - TO_FILE_OPTION, - - /* These options must be in sequence. */ - UNCHANGED_LINE_FORMAT_OPTION, - OLD_LINE_FORMAT_OPTION, - NEW_LINE_FORMAT_OPTION, - - /* These options must be in sequence. */ - UNCHANGED_GROUP_FORMAT_OPTION, - OLD_GROUP_FORMAT_OPTION, - NEW_GROUP_FORMAT_OPTION, - CHANGED_GROUP_FORMAT_OPTION -}; - -static char const group_format_option[][sizeof "--unchanged-group-format"] = - { - "--unchanged-group-format", - "--old-group-format", - "--new-group-format", - "--changed-group-format" - }; - -static char const line_format_option[][sizeof "--unchanged-line-format"] = - { - "--unchanged-line-format", - "--old-line-format", - "--new-line-format" - }; - -static struct option const longopts[] = -{ - {"binary", 0, 0, BINARY_OPTION}, - {"brief", 0, 0, 'q'}, - {"changed-group-format", 1, 0, CHANGED_GROUP_FORMAT_OPTION}, - {"context", 2, 0, 'C'}, - {"ed", 0, 0, 'e'}, - {"exclude", 1, 0, 'x'}, - {"exclude-from", 1, 0, 'X'}, - {"expand-tabs", 0, 0, 't'}, - {"forward-ed", 0, 0, 'f'}, - {"from-file", 1, 0, FROM_FILE_OPTION}, - {"help", 0, 0, HELP_OPTION}, - {"horizon-lines", 1, 0, HORIZON_LINES_OPTION}, - {"ifdef", 1, 0, 'D'}, - {"ignore-all-space", 0, 0, 'w'}, - {"ignore-blank-lines", 0, 0, 'B'}, - {"ignore-case", 0, 0, 'i'}, - {"ignore-file-name-case", 0, 0, IGNORE_FILE_NAME_CASE_OPTION}, - {"ignore-matching-lines", 1, 0, 'I'}, - {"ignore-space-change", 0, 0, 'b'}, - {"ignore-tab-expansion", 0, 0, 'E'}, - {"inhibit-hunk-merge", 0, 0, INHIBIT_HUNK_MERGE_OPTION}, - {"initial-tab", 0, 0, 'T'}, - {"label", 1, 0, 'L'}, - {"left-column", 0, 0, LEFT_COLUMN_OPTION}, - {"line-format", 1, 0, LINE_FORMAT_OPTION}, - {"minimal", 0, 0, 'd'}, - {"new-file", 0, 0, 'N'}, - {"new-group-format", 1, 0, NEW_GROUP_FORMAT_OPTION}, - {"new-line-format", 1, 0, NEW_LINE_FORMAT_OPTION}, - {"no-ignore-file-name-case", 0, 0, NO_IGNORE_FILE_NAME_CASE_OPTION}, - {"normal", 0, 0, NORMAL_OPTION}, - {"old-group-format", 1, 0, OLD_GROUP_FORMAT_OPTION}, - {"old-line-format", 1, 0, OLD_LINE_FORMAT_OPTION}, - {"paginate", 0, 0, 'l'}, - {"rcs", 0, 0, 'n'}, - {"recursive", 0, 0, 'r'}, - {"report-identical-files", 0, 0, 's'}, - {"sdiff-merge-assist", 0, 0, SDIFF_MERGE_ASSIST_OPTION}, - {"show-c-function", 0, 0, 'p'}, - {"show-function-line", 1, 0, 'F'}, - {"side-by-side", 0, 0, 'y'}, - {"speed-large-files", 0, 0, 'H'}, - {"starting-file", 1, 0, 'S'}, - {"strip-trailing-cr", 0, 0, STRIP_TRAILING_CR_OPTION}, - {"suppress-common-lines", 0, 0, SUPPRESS_COMMON_LINES_OPTION}, - {"text", 0, 0, 'a'}, - {"to-file", 1, 0, TO_FILE_OPTION}, - {"unchanged-group-format", 1, 0, UNCHANGED_GROUP_FORMAT_OPTION}, - {"unchanged-line-format", 1, 0, UNCHANGED_LINE_FORMAT_OPTION}, - {"unidirectional-new-file", 0, 0, 'P'}, - {"unified", 2, 0, 'U'}, - {"version", 0, 0, 'v'}, - {"width", 1, 0, 'W'}, - {0, 0, 0, 0} -}; - -int -main (int argc, char **argv) -{ - int exit_status = EXIT_SUCCESS; - int c; - int i; - int prev = -1; - lin ocontext = -1; - bool explicit_context = 0; - int width = 0; - bool show_c_function = 0; - char const *from_file = 0; - char const *to_file = 0; - uintmax_t numval; - char *numend; - - /* Do our initializations. */ - exit_failure = 2; - initialize_main (&argc, &argv); - program_name = argv[0]; - setlocale (LC_ALL, ""); - bindtextdomain (PACKAGE, LOCALEDIR); - textdomain (PACKAGE); - c_stack_action (c_stack_die); - function_regexp_list.buf = &function_regexp; - ignore_regexp_list.buf = &ignore_regexp; - re_set_syntax (RE_SYNTAX_GREP | RE_NO_POSIX_BACKTRACKING); - excluded = new_exclude (); - - /* Decode the options. */ - - while ((c = getopt_long (argc, argv, shortopts, longopts, 0)) != -1) - { - switch (c) - { - case 0: - break; - - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - if (! ISDIGIT (prev)) - ocontext = c - '0'; - else if (LIN_MAX / 10 < ocontext - || ((ocontext = 10 * ocontext + c - '0') < 0)) - ocontext = LIN_MAX; - break; - - case 'a': - text = 1; - break; - - case 'b': - if (ignore_white_space < IGNORE_SPACE_CHANGE) - ignore_white_space = IGNORE_SPACE_CHANGE; - break; - - case 'B': - ignore_blank_lines = 1; - break; - - case 'C': /* +context[=lines] */ - case 'U': /* +unified[=lines] */ - { - if (optarg) - { - numval = strtoumax (optarg, &numend, 10); - if (*numend) - try_help ("invalid context length `%s'", optarg); - if (LIN_MAX < numval) - numval = LIN_MAX; - } - else - numval = 3; - - specify_style (c == 'U' ? OUTPUT_UNIFIED : OUTPUT_CONTEXT); - if (context < numval) - context = numval; - explicit_context = 1; - } - break; - - case 'c': - specify_style (OUTPUT_CONTEXT); - if (context < 3) - context = 3; - break; - - case 'd': - minimal = 1; - break; - - case 'D': - specify_style (OUTPUT_IFDEF); - { - static char const C_ifdef_group_formats[] = - "%%=%c#ifndef %s\n%%<#endif /* ! %s */\n%c#ifdef %s\n%%>#endif /* %s */\n%c#ifndef %s\n%%<#else /* %s */\n%%>#endif /* %s */\n"; - char *b = xmalloc (sizeof C_ifdef_group_formats - + 7 * strlen (optarg) - 14 /* 7*"%s" */ - - 8 /* 5*"%%" + 3*"%c" */); - sprintf (b, C_ifdef_group_formats, - 0, - optarg, optarg, 0, - optarg, optarg, 0, - optarg, optarg, optarg); - for (i = 0; i < sizeof group_format / sizeof *group_format; i++) - { - specify_value (&group_format[i], b, "-D"); - b += strlen (b) + 1; - } - } - break; - - case 'e': - specify_style (OUTPUT_ED); - break; - - case 'E': - if (ignore_white_space < IGNORE_TAB_EXPANSION) - ignore_white_space = IGNORE_TAB_EXPANSION; - break; - - case 'f': - specify_style (OUTPUT_FORWARD_ED); - break; - - case 'F': - add_regexp (&function_regexp_list, optarg); - break; - - case 'h': - /* Split the files into chunks for faster processing. - Usually does not change the result. - - This currently has no effect. */ - break; - - case 'H': - speed_large_files = 1; - break; - - case 'i': - ignore_case = 1; - break; - - case 'I': - add_regexp (&ignore_regexp_list, optarg); - break; - - case 'l': - if (!pr_program[0]) - try_help ("pagination not supported on this host", 0); - paginate = 1; -#ifdef SIGCHLD - /* Pagination requires forking and waiting, and - System V fork+wait does not work if SIGCHLD is ignored. */ - signal (SIGCHLD, SIG_DFL); -#endif - break; - - case 'L': - if (!file_label[0]) - file_label[0] = optarg; - else if (!file_label[1]) - file_label[1] = optarg; - else - fatal ("too many file label options"); - break; - - case 'n': - specify_style (OUTPUT_RCS); - break; - - case 'N': - new_file = 1; - break; - - case 'p': - show_c_function = 1; - add_regexp (&function_regexp_list, "^[[:alpha:]$_]"); - break; - - case 'P': - unidirectional_new_file = 1; - break; - - case 'q': - brief = 1; - break; - - case 'r': - recursive = 1; - break; - - case 's': - report_identical_files = 1; - break; - - case 'S': - specify_value (&starting_file, optarg, "-S"); - break; - - case 't': - expand_tabs = 1; - break; - - case 'T': - initial_tab = 1; - break; - - case 'u': - specify_style (OUTPUT_UNIFIED); - if (context < 3) - context = 3; - break; - - case 'v': - printf ("diff %s\n%s\n\n%s\n\n%s\n", - version_string, copyright_string, - _(free_software_msgid), _(authorship_msgid)); - check_stdout (); - return EXIT_SUCCESS; - - case 'w': - ignore_white_space = IGNORE_ALL_SPACE; - break; - - case 'x': - add_exclude (excluded, optarg, exclude_options ()); - break; - - case 'X': - if (add_exclude_file (add_exclude, excluded, optarg, - exclude_options (), '\n')) - pfatal_with_name (optarg); - break; - - case 'y': - specify_style (OUTPUT_SDIFF); - break; - - case 'W': - numval = strtoumax (optarg, &numend, 10); - if (! (0 < numval && numval <= INT_MAX) || *numend) - try_help ("invalid width `%s'", optarg); - if (width != numval) - { - if (width) - fatal ("conflicting width options"); - width = numval; - } - break; - - case BINARY_OPTION: -#if HAVE_SETMODE_DOS - binary = 1; - set_binary_mode (STDOUT_FILENO, 1); -#endif - break; - - case FROM_FILE_OPTION: - specify_value (&from_file, optarg, "--from-file"); - break; - - case HELP_OPTION: - usage (); - check_stdout (); - return EXIT_SUCCESS; - - case HORIZON_LINES_OPTION: - numval = strtoumax (optarg, &numend, 10); - if (*numend) - try_help ("invalid horizon length `%s'", optarg); - horizon_lines = MAX (horizon_lines, MIN (numval, LIN_MAX)); - break; - - case IGNORE_FILE_NAME_CASE_OPTION: - ignore_file_name_case = 1; - break; - - case INHIBIT_HUNK_MERGE_OPTION: - /* This option is obsolete, but accept it for backward - compatibility. */ - break; - - case LEFT_COLUMN_OPTION: - left_column = 1; - break; - - case LINE_FORMAT_OPTION: - specify_style (OUTPUT_IFDEF); - for (i = 0; i < sizeof line_format / sizeof *line_format; i++) - specify_value (&line_format[i], optarg, "--line-format"); - break; - - case NO_IGNORE_FILE_NAME_CASE_OPTION: - ignore_file_name_case = 0; - break; - - case NORMAL_OPTION: - specify_style (OUTPUT_NORMAL); - break; - - case SDIFF_MERGE_ASSIST_OPTION: - specify_style (OUTPUT_SDIFF); - sdiff_merge_assist = 1; - break; - - case STRIP_TRAILING_CR_OPTION: - strip_trailing_cr = 1; - break; - - case SUPPRESS_COMMON_LINES_OPTION: - suppress_common_lines = 1; - break; - - case TO_FILE_OPTION: - specify_value (&to_file, optarg, "--to-file"); - break; - - case UNCHANGED_LINE_FORMAT_OPTION: - case OLD_LINE_FORMAT_OPTION: - case NEW_LINE_FORMAT_OPTION: - specify_style (OUTPUT_IFDEF); - c -= UNCHANGED_LINE_FORMAT_OPTION; - specify_value (&line_format[c], optarg, line_format_option[c]); - break; - - case UNCHANGED_GROUP_FORMAT_OPTION: - case OLD_GROUP_FORMAT_OPTION: - case NEW_GROUP_FORMAT_OPTION: - case CHANGED_GROUP_FORMAT_OPTION: - specify_style (OUTPUT_IFDEF); - c -= UNCHANGED_GROUP_FORMAT_OPTION; - specify_value (&group_format[c], optarg, group_format_option[c]); - break; - - default: - try_help (0, 0); - } - prev = c; - } - - if (output_style == OUTPUT_UNSPECIFIED) - { - if (show_c_function) - { - specify_style (OUTPUT_CONTEXT); - if (ocontext < 0) - context = 3; - } - else - specify_style (OUTPUT_NORMAL); - } - - if (output_style != OUTPUT_CONTEXT || hard_locale (LC_TIME)) - time_format = "%Y-%m-%d %H:%M:%S.%N %z"; - else - { - /* See POSIX 1003.1-2001 for this format. */ - time_format = "%a %b %e %T %Y"; - } - - if (0 <= ocontext) - { - bool modern_usage = 200112 <= posix2_version (); - - if ((output_style == OUTPUT_CONTEXT - || output_style == OUTPUT_UNIFIED) - && (context < ocontext - || (ocontext < context && ! explicit_context))) - { - if (modern_usage) - { - error (0, 0, - _("`-%ld' option is obsolete; use `-%c %ld'"), - (long) ocontext, - output_style == OUTPUT_CONTEXT ? 'C' : 'U', - (long) ocontext); - try_help (0, 0); - } - context = ocontext; - } - else - { - if (modern_usage) - { - error (0, 0, _("`-%ld' option is obsolete; omit it"), - (long) ocontext); - try_help (0, 0); - } - } - } - - { - /* - * We maximize first the half line width, and then the gutter width, - * according to the following constraints: - * 1. Two half lines plus a gutter must fit in a line. - * 2. If the half line width is nonzero: - * a. The gutter width is at least GUTTER_WIDTH_MINIMUM. - * b. If tabs are not expanded to spaces, - * a half line plus a gutter is an integral number of tabs, - * so that tabs in the right column line up. - */ - unsigned int t = expand_tabs ? 1 : TAB_WIDTH; - int w = width ? width : 130; - int off = (w + t + GUTTER_WIDTH_MINIMUM) / (2 * t) * t; - sdiff_half_width = MAX (0, MIN (off - GUTTER_WIDTH_MINIMUM, w - off)), - sdiff_column2_offset = sdiff_half_width ? off : w; - } - - /* Make the horizon at least as large as the context, so that - shift_boundaries has more freedom to shift the first and last hunks. */ - if (horizon_lines < context) - horizon_lines = context; - - summarize_regexp_list (&function_regexp_list); - summarize_regexp_list (&ignore_regexp_list); - - if (output_style == OUTPUT_IFDEF) - { - for (i = 0; i < sizeof line_format / sizeof *line_format; i++) - if (!line_format[i]) - line_format[i] = "%l\n"; - if (!group_format[OLD]) - group_format[OLD] - = group_format[CHANGED] ? group_format[CHANGED] : "%<"; - if (!group_format[NEW]) - group_format[NEW] - = group_format[CHANGED] ? group_format[CHANGED] : "%>"; - if (!group_format[UNCHANGED]) - group_format[UNCHANGED] = "%="; - if (!group_format[CHANGED]) - group_format[CHANGED] = concat (group_format[OLD], - group_format[NEW], ""); - } - - no_diff_means_no_output = - (output_style == OUTPUT_IFDEF ? - (!*group_format[UNCHANGED] - || (strcmp (group_format[UNCHANGED], "%=") == 0 - && !*line_format[UNCHANGED])) - : (output_style != OUTPUT_SDIFF) | suppress_common_lines); - - files_can_be_treated_as_binary = - (brief - & ~ (ignore_blank_lines | ignore_case | strip_trailing_cr - | (ignore_regexp_list.regexps || ignore_white_space))); - - switch_string = option_list (argv + 1, optind - 1); - - if (from_file) - { - if (to_file) - fatal ("--from-file and --to-file both specified"); - else - for (; optind < argc; optind++) - { - int status = compare_files ((struct comparison *) 0, - from_file, argv[optind]); - if (exit_status < status) - exit_status = status; - } - } - else - { - if (to_file) - for (; optind < argc; optind++) - { - int status = compare_files ((struct comparison *) 0, - argv[optind], to_file); - if (exit_status < status) - exit_status = status; - } - else - { - if (argc - optind != 2) - { - if (argc - optind < 2) - try_help ("missing operand after `%s'", argv[argc - 1]); - else - try_help ("extra operand `%s'", argv[optind + 2]); - } - - exit_status = compare_files ((struct comparison *) 0, - argv[optind], argv[optind + 1]); - } - } - - /* Print any messages that were saved up for last. */ - print_message_queue (); - - check_stdout (); - exit (exit_status); - return exit_status; -} - -/* Append to REGLIST the regexp PATTERN. */ - -static void -add_regexp (struct regexp_list *reglist, char const *pattern) -{ - size_t patlen = strlen (pattern); - char const *m = re_compile_pattern (pattern, patlen, reglist->buf); - - if (m != 0) - error (0, 0, "%s: %s", pattern, m); - else - { - char *regexps = reglist->regexps; - size_t len = reglist->len; - bool multiple_regexps = reglist->multiple_regexps = regexps != 0; - size_t newlen = reglist->len = len + 2 * multiple_regexps + patlen; - size_t size = reglist->size; - - if (size <= newlen) - { - if (!size) - size = 1; - - do size *= 2; - while (size <= newlen); - - reglist->size = size; - reglist->regexps = regexps = xrealloc (regexps, size); - } - if (multiple_regexps) - { - regexps[len++] = '\\'; - regexps[len++] = '|'; - } - memcpy (regexps + len, pattern, patlen + 1); - } -} - -/* Ensure that REGLIST represents the disjunction of its regexps. - This is done here, rather than earlier, to avoid O(N^2) behavior. */ - -static void -summarize_regexp_list (struct regexp_list *reglist) -{ - if (reglist->regexps) - { - /* At least one regexp was specified. Allocate a fastmap for it. */ - reglist->buf->fastmap = xmalloc (1 << CHAR_BIT); - if (reglist->multiple_regexps) - { - /* Compile the disjunction of the regexps. - (If just one regexp was specified, it is already compiled.) */ - char const *m = re_compile_pattern (reglist->regexps, reglist->len, - reglist->buf); - if (m != 0) - error (EXIT_TROUBLE, 0, "%s: %s", reglist->regexps, m); - } - } -} - -static void -try_help (char const *reason_msgid, char const *operand) -{ - if (reason_msgid) - error (0, 0, _(reason_msgid), operand); - error (EXIT_TROUBLE, 0, _("Try `%s --help' for more information."), - program_name); - abort (); -} - -static void -check_stdout (void) -{ - if (ferror (stdout)) - fatal ("write failed"); - else if (fclose (stdout) != 0) - pfatal_with_name (_("standard output")); -} - -static char const * const option_help_msgid[] = { - N_("Compare files line by line."), - "", - N_("-i --ignore-case Ignore case differences in file contents."), - N_("--ignore-file-name-case Ignore case when comparing file names."), - N_("--no-ignore-file-name-case Consider case when comparing file names."), - N_("-E --ignore-tab-expansion Ignore changes due to tab expansion."), - N_("-b --ignore-space-change Ignore changes in the amount of white space."), - N_("-w --ignore-all-space Ignore all white space."), - N_("-B --ignore-blank-lines Ignore changes whose lines are all blank."), - N_("-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE."), - N_("--strip-trailing-cr Strip trailing carriage return on input."), -#if HAVE_SETMODE_DOS - N_("--binary Read and write data in binary mode."), -#endif - N_("-a --text Treat all files as text."), - "", - N_("-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied context.\n\ --u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified context.\n\ - --label LABEL Use LABEL instead of file name.\n\ - -p --show-c-function Show which C function each change is in.\n\ - -F RE --show-function-line=RE Show the most recent line matching RE."), - N_("-q --brief Output only whether files differ."), - N_("-e --ed Output an ed script."), - N_("--normal Output a normal diff."), - N_("-n --rcs Output an RCS format diff."), - N_("-y --side-by-side Output in two columns.\n\ - -W NUM --width=NUM Output at most NUM (default 130) print columns.\n\ - --left-column Output only the left column of common lines.\n\ - --suppress-common-lines Do not output common lines."), - N_("-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs."), - N_("--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT."), - N_("--line-format=LFMT Similar, but format all input lines with LFMT."), - N_("--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT."), - N_(" LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'."), - N_(" GFMT may contain:\n\ - %< lines from FILE1\n\ - %> lines from FILE2\n\ - %= lines common to FILE1 and FILE2\n\ - %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n\ - LETTERs are as follows for new group, lower case for old group:\n\ - F first line number\n\ - L last line number\n\ - N number of lines = L-F+1\n\ - E F-1\n\ - M L+1"), - N_(" LFMT may contain:\n\ - %L contents of line\n\ - %l contents of line, excluding any trailing newline\n\ - %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number"), - N_(" Either GFMT or LFMT may contain:\n\ - %% %\n\ - %c'C' the single character C\n\ - %c'\\OOO' the character with octal code OOO"), - "", - N_("-l --paginate Pass the output through `pr' to paginate it."), - N_("-t --expand-tabs Expand tabs to spaces in output."), - N_("-T --initial-tab Make tabs line up by prepending a tab."), - "", - N_("-r --recursive Recursively compare any subdirectories found."), - N_("-N --new-file Treat absent files as empty."), - N_("--unidirectional-new-file Treat absent first files as empty."), - N_("-s --report-identical-files Report when two files are the same."), - N_("-x PAT --exclude=PAT Exclude files that match PAT."), - N_("-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE."), - N_("-S FILE --starting-file=FILE Start with FILE when comparing directories."), - N_("--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory."), - N_("--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory."), - "", - N_("--horizon-lines=NUM Keep NUM lines of the common prefix and suffix."), - N_("-d --minimal Try hard to find a smaller set of changes."), - N_("--speed-large-files Assume large files and many scattered small changes."), - "", - N_("-v --version Output version info."), - N_("--help Output this help."), - "", - N_("FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'."), - N_("If --from-file or --to-file is given, there are no restrictions on FILES."), - N_("If a FILE is `-', read standard input."), - "", - N_("Report bugs to ."), - 0 -}; - -static void -usage (void) -{ - char const * const *p; - - printf (_("Usage: %s [OPTION]... FILES\n"), program_name); - - for (p = option_help_msgid; *p; p++) - { - if (!**p) - putchar ('\n'); - else - { - char const *msg = _(*p); - char const *nl; - while ((nl = strchr (msg, '\n'))) - { - int msglen = nl + 1 - msg; - printf (" %.*s", msglen, msg); - msg = nl + 1; - } - - printf (" %s\n" + 2 * (*msg != ' ' && *msg != '-'), msg); - } - } -} - -/* Set VAR to VALUE, reporting an OPTION error if this is a - conflict. */ -static void -specify_value (char const **var, char const *value, char const *option) -{ - if (*var && strcmp (*var, value) != 0) - { - error (0, 0, _("conflicting %s option value `%s'"), option, value); - try_help (0, 0); - } - *var = value; -} - -/* Set the output style to STYLE, diagnosing conflicts. */ -static void -specify_style (enum output_style style) -{ - if (output_style != style) - { - if (output_style != OUTPUT_UNSPECIFIED) - try_help ("conflicting output style options", 0); - output_style = style; - } -} - -static char const * -filetype (struct stat const *st) -{ - /* See POSIX 1003.1-2001 for these formats. - - To keep diagnostics grammatical in English, the returned string - must start with a consonant. */ - - if (S_ISREG (st->st_mode)) - return st->st_size == 0 ? _("regular empty file") : _("regular file"); - - if (S_ISDIR (st->st_mode)) return _("directory"); - -#ifdef S_ISBLK - if (S_ISBLK (st->st_mode)) return _("block special file"); -#endif -#ifdef S_ISCHR - if (S_ISCHR (st->st_mode)) return _("character special file"); -#endif -#ifdef S_ISFIFO - if (S_ISFIFO (st->st_mode)) return _("fifo"); -#endif - /* S_ISLNK is impossible with `fstat' and `stat'. */ -#ifdef S_ISSOCK - if (S_ISSOCK (st->st_mode)) return _("socket"); -#endif -#ifdef S_TYPEISMQ - if (S_TYPEISMQ (st)) return _("message queue"); -#endif -#ifdef S_TYPEISSEM - if (S_TYPEISSEM (st)) return _("semaphore"); -#endif -#ifdef S_TYPEISSHM - if (S_TYPEISSHM (st)) return _("shared memory object"); -#endif -#ifdef S_TYPEISTMO - if (S_TYPEISTMO (st)) return _("typed memory object"); -#endif - - return _("weird file"); -} - -/* Set the last-modified time of *ST to be the current time. */ - -static void -set_mtime_to_now (struct stat *st) -{ -#ifdef ST_MTIM_NSEC - -# if HAVE_CLOCK_GETTIME && defined CLOCK_REALTIME - if (clock_gettime (CLOCK_REALTIME, &st->st_mtim) == 0) - return; -# endif - -# if HAVE_GETTIMEOFDAY - { - struct timeval timeval; - if (gettimeofday (&timeval, NULL) == 0) - { - st->st_mtime = timeval.tv_sec; - st->st_mtim.ST_MTIM_NSEC = timeval.tv_usec * 1000; - return; - } - } -# endif - -#endif /* ST_MTIM_NSEC */ - - time (&st->st_mtime); -} - -/* Compare two files (or dirs) with parent comparison PARENT - and names NAME0 and NAME1. - (If PARENT is 0, then the first name is just NAME0, etc.) - This is self-contained; it opens the files and closes them. - - Value is EXIT_SUCCESS if files are the same, EXIT_FAILURE if - different, EXIT_TROUBLE if there is a problem opening them. */ - -static int -compare_files (struct comparison const *parent, - char const *name0, - char const *name1) -{ - struct comparison cmp; -#define DIR_P(f) (S_ISDIR (cmp.file[f].stat.st_mode) != 0) - register int f; - int status = EXIT_SUCCESS; - bool same_files; - char *free0, *free1; - - /* If this is directory comparison, perhaps we have a file - that exists only in one of the directories. - If so, just print a message to that effect. */ - - if (! ((name0 && name1) - || (unidirectional_new_file && name1) - || new_file)) - { - char const *name = name0 == 0 ? name1 : name0; - char const *dir = parent->file[name0 == 0].name; - - /* See POSIX 1003.1-2001 for this format. */ - message ("Only in %s: %s\n", dir, name); - - /* Return EXIT_FAILURE so that diff_dirs will return - EXIT_FAILURE ("some files differ"). */ - return EXIT_FAILURE; - } - - memset (cmp.file, 0, sizeof cmp.file); - cmp.parent = parent; - - /* cmp.file[f].desc markers */ -#define NONEXISTENT (-1) /* nonexistent file */ -#define UNOPENED (-2) /* unopened file (e.g. directory) */ -#define ERRNO_ENCODE(errno) (-3 - (errno)) /* encoded errno value */ - -#define ERRNO_DECODE(desc) (-3 - (desc)) /* inverse of ERRNO_ENCODE */ - - cmp.file[0].desc = name0 == 0 ? NONEXISTENT : UNOPENED; - cmp.file[1].desc = name1 == 0 ? NONEXISTENT : UNOPENED; - - /* Now record the full name of each file, including nonexistent ones. */ - - if (name0 == 0) - name0 = name1; - if (name1 == 0) - name1 = name0; - - if (!parent) - { - free0 = 0; - free1 = 0; - cmp.file[0].name = name0; - cmp.file[1].name = name1; - } - else - { - cmp.file[0].name = free0 - = dir_file_pathname (parent->file[0].name, name0); - cmp.file[1].name = free1 - = dir_file_pathname (parent->file[1].name, name1); - } - - /* Stat the files. */ - - for (f = 0; f < 2; f++) - { - if (cmp.file[f].desc != NONEXISTENT) - { - if (f && file_name_cmp (cmp.file[f].name, cmp.file[0].name) == 0) - { - cmp.file[f].desc = cmp.file[0].desc; - cmp.file[f].stat = cmp.file[0].stat; - } - else if (strcmp (cmp.file[f].name, "-") == 0) - { - cmp.file[f].desc = STDIN_FILENO; - if (fstat (STDIN_FILENO, &cmp.file[f].stat) != 0) - cmp.file[f].desc = ERRNO_ENCODE (errno); - else - { - if (S_ISREG (cmp.file[f].stat.st_mode)) - { - off_t pos = lseek (STDIN_FILENO, (off_t) 0, SEEK_CUR); - if (pos < 0) - cmp.file[f].desc = ERRNO_ENCODE (errno); - else - cmp.file[f].stat.st_size = - MAX (0, cmp.file[f].stat.st_size - pos); - } - - /* POSIX 1003.1-2001 requires current time for - stdin. */ - set_mtime_to_now (&cmp.file[f].stat); - } - } - else if (stat (cmp.file[f].name, &cmp.file[f].stat) != 0) - cmp.file[f].desc = ERRNO_ENCODE (errno); - } - } - - /* Mark files as nonexistent at the top level as needed for -N and - --unidirectional-new-file. */ - if (! parent) - { - if ((new_file | unidirectional_new_file) - && cmp.file[0].desc == ERRNO_ENCODE (ENOENT) - && cmp.file[1].desc == UNOPENED) - cmp.file[0].desc = NONEXISTENT; - - if (new_file - && cmp.file[0].desc == UNOPENED - && cmp.file[1].desc == ERRNO_ENCODE (ENOENT)) - cmp.file[1].desc = NONEXISTENT; - } - - for (f = 0; f < 2; f++) - if (cmp.file[f].desc == NONEXISTENT) - cmp.file[f].stat.st_mode = cmp.file[1 - f].stat.st_mode; - - for (f = 0; f < 2; f++) - { - int e = ERRNO_DECODE (cmp.file[f].desc); - if (0 <= e) - { - errno = e; - perror_with_name (cmp.file[f].name); - status = EXIT_TROUBLE; - } - } - - if (status == EXIT_SUCCESS && ! parent && DIR_P (0) != DIR_P (1)) - { - /* If one is a directory, and it was specified in the command line, - use the file in that dir with the other file's basename. */ - - int fnm_arg = DIR_P (0); - int dir_arg = 1 - fnm_arg; - char const *fnm = cmp.file[fnm_arg].name; - char const *dir = cmp.file[dir_arg].name; - char const *filename = cmp.file[dir_arg].name = free0 - = dir_file_pathname (dir, base_name (fnm)); - - if (strcmp (fnm, "-") == 0) - fatal ("cannot compare `-' to a directory"); - - if (stat (filename, &cmp.file[dir_arg].stat) != 0) - { - perror_with_name (filename); - status = EXIT_TROUBLE; - } - } - - if (status != EXIT_SUCCESS) - { - /* One of the files should exist but does not. */ - } - else if ((same_files - = (cmp.file[0].desc != NONEXISTENT - && cmp.file[1].desc != NONEXISTENT - && 0 < same_file (&cmp.file[0].stat, &cmp.file[1].stat) - && same_file_attributes (&cmp.file[0].stat, - &cmp.file[1].stat))) - && no_diff_means_no_output) - { - /* The two named files are actually the same physical file. - We know they are identical without actually reading them. */ - } - else if (DIR_P (0) & DIR_P (1)) - { - if (output_style == OUTPUT_IFDEF) - fatal ("-D option not supported with directories"); - - /* If both are directories, compare the files in them. */ - - if (parent && !recursive) - { - /* But don't compare dir contents one level down - unless -r was specified. - See POSIX 1003.1-2001 for this format. */ - message ("Common subdirectories: %s and %s\n", - cmp.file[0].name, cmp.file[1].name); - } - else - status = diff_dirs (&cmp, compare_files); - } - else if ((DIR_P (0) | DIR_P (1)) - || (parent - && (! S_ISREG (cmp.file[0].stat.st_mode) - || ! S_ISREG (cmp.file[1].stat.st_mode)))) - { - if (cmp.file[0].desc == NONEXISTENT || cmp.file[1].desc == NONEXISTENT) - { - /* We have a subdirectory that exists only in one directory. */ - - if ((DIR_P (0) | DIR_P (1)) - && recursive - && (new_file - || (unidirectional_new_file - && cmp.file[0].desc == NONEXISTENT))) - status = diff_dirs (&cmp, compare_files); - else - { - char const *dir - = parent->file[cmp.file[0].desc == NONEXISTENT].name; - - /* See POSIX 1003.1-2001 for this format. */ - message ("Only in %s: %s\n", dir, name0); - - status = EXIT_FAILURE; - } - } - else - { - /* We have two files that are not to be compared. */ - - /* See POSIX 1003.1-2001 for this format. */ - message5 ("File %s is a %s while file %s is a %s\n", - file_label[0] ? file_label[0] : cmp.file[0].name, - filetype (&cmp.file[0].stat), - file_label[1] ? file_label[1] : cmp.file[1].name, - filetype (&cmp.file[1].stat)); - - /* This is a difference. */ - status = EXIT_FAILURE; - } - } - else if (files_can_be_treated_as_binary - && cmp.file[0].stat.st_size != cmp.file[1].stat.st_size - && (cmp.file[0].desc == NONEXISTENT - || S_ISREG (cmp.file[0].stat.st_mode)) - && (cmp.file[1].desc == NONEXISTENT - || S_ISREG (cmp.file[1].stat.st_mode))) - { - message ("Files %s and %s differ\n", - file_label[0] ? file_label[0] : cmp.file[0].name, - file_label[1] ? file_label[1] : cmp.file[1].name); - status = EXIT_FAILURE; - } - else - { - /* Both exist and neither is a directory. */ - - /* Open the files and record their descriptors. */ - - if (cmp.file[0].desc == UNOPENED) - if ((cmp.file[0].desc = open (cmp.file[0].name, O_RDONLY, 0)) < 0) - { - perror_with_name (cmp.file[0].name); - status = EXIT_TROUBLE; - } - if (cmp.file[1].desc == UNOPENED) - { - if (same_files) - cmp.file[1].desc = cmp.file[0].desc; - else if ((cmp.file[1].desc = open (cmp.file[1].name, O_RDONLY, 0)) - < 0) - { - perror_with_name (cmp.file[1].name); - status = EXIT_TROUBLE; - } - } - -#if HAVE_SETMODE_DOS - if (binary) - for (f = 0; f < 2; f++) - if (0 <= cmp.file[f].desc) - set_binary_mode (cmp.file[f].desc, 1); -#endif - - /* Compare the files, if no error was found. */ - - if (status == EXIT_SUCCESS) - status = diff_2_files (&cmp); - - /* Close the file descriptors. */ - - if (0 <= cmp.file[0].desc && close (cmp.file[0].desc) != 0) - { - perror_with_name (cmp.file[0].name); - status = EXIT_TROUBLE; - } - if (0 <= cmp.file[1].desc && cmp.file[0].desc != cmp.file[1].desc - && close (cmp.file[1].desc) != 0) - { - perror_with_name (cmp.file[1].name); - status = EXIT_TROUBLE; - } - } - - /* Now the comparison has been done, if no error prevented it, - and STATUS is the value this function will return. */ - - if (status == EXIT_SUCCESS) - { - if (report_identical_files && !DIR_P (0)) - message ("Files %s and %s are identical\n", - file_label[0] ? file_label[0] : cmp.file[0].name, - file_label[1] ? file_label[1] : cmp.file[1].name); - } - else - { - /* Flush stdout so that the user sees differences immediately. - This can hurt performance, unfortunately. */ - if (fflush (stdout) != 0) - pfatal_with_name (_("standard output")); - } - - if (free0) - free (free0); - if (free1) - free (free1); - - return status; -} diff --git a/src/bin/diffutils/src/diff.h b/src/bin/diffutils/src/diff.h deleted file mode 100644 index b7c76a642d..0000000000 --- a/src/bin/diffutils/src/diff.h +++ /dev/null @@ -1,375 +0,0 @@ -/* Shared definitions for GNU DIFF - - Copyright (C) 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1998, 2001, - 2002 Free Software Foundation, Inc. - - This file is part of GNU DIFF. - - GNU DIFF is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GNU DIFF is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include "system.h" -#include - -#define TAB_WIDTH 8 - -/* What kind of changes a hunk contains. */ -enum changes -{ - /* No changes: lines common to both files. */ - UNCHANGED, - - /* Deletes only: lines taken from just the first file. */ - OLD, - - /* Inserts only: lines taken from just the second file. */ - NEW, - - /* Both deletes and inserts: a hunk containing both old and new lines. */ - CHANGED -}; - -/* Variables for command line options */ - -#ifndef GDIFF_MAIN -# define XTERN extern -#else -# define XTERN -#endif - -enum output_style -{ - /* No output style specified. */ - OUTPUT_UNSPECIFIED, - - /* Default output style. */ - OUTPUT_NORMAL, - - /* Output the differences with lines of context before and after (-c). */ - OUTPUT_CONTEXT, - - /* Output the differences in a unified context diff format (-u). */ - OUTPUT_UNIFIED, - - /* Output the differences as commands suitable for `ed' (-e). */ - OUTPUT_ED, - - /* Output the diff as a forward ed script (-f). */ - OUTPUT_FORWARD_ED, - - /* Like -f, but output a count of changed lines in each "command" (-n). */ - OUTPUT_RCS, - - /* Output merged #ifdef'd file (-D). */ - OUTPUT_IFDEF, - - /* Output sdiff style (-y). */ - OUTPUT_SDIFF -}; - -/* True for output styles that are robust, - i.e. can handle a file that ends in a non-newline. */ -#define ROBUST_OUTPUT_STYLE(S) ((S) != OUTPUT_ED && (S) != OUTPUT_FORWARD_ED) - -XTERN enum output_style output_style; - -/* Nonzero if output cannot be generated for identical files. */ -XTERN bool no_diff_means_no_output; - -/* Number of lines of context to show in each set of diffs. - This is zero when context is not to be shown. */ -XTERN lin context; - -/* Consider all files as text files (-a). - Don't interpret codes over 0177 as implying a "binary file". */ -XTERN bool text; - -/* Number of lines to keep in identical prefix and suffix. */ -XTERN lin horizon_lines; - -/* The significance of white space during comparisons. */ -XTERN enum -{ - /* All white space is significant (the default). */ - IGNORE_NO_WHITE_SPACE, - - /* Ignore changes due to tab expansion (-E). */ - IGNORE_TAB_EXPANSION, - - /* Ignore changes in horizontal white space (-b). */ - IGNORE_SPACE_CHANGE, - - /* Ignore all horizontal white space (-w). */ - IGNORE_ALL_SPACE -} ignore_white_space; - -/* Ignore changes that affect only blank lines (-B). */ -XTERN bool ignore_blank_lines; - -/* Files can be compared byte-by-byte, as if they were binary. - This depends on various options. */ -XTERN bool files_can_be_treated_as_binary; - -/* Ignore differences in case of letters (-i). */ -XTERN bool ignore_case; - -/* Ignore differences in case of letters in file names. */ -XTERN bool ignore_file_name_case; - -/* File labels for `-c' output headers (--label). */ -XTERN char *file_label[2]; - -/* Regexp to identify function-header lines (-F). */ -XTERN struct re_pattern_buffer function_regexp; - -/* Ignore changes that affect only lines matching this regexp (-I). */ -XTERN struct re_pattern_buffer ignore_regexp; - -/* Say only whether files differ, not how (-q). */ -XTERN bool brief; - -/* Expand tabs in the output so the text lines up properly - despite the characters added to the front of each line (-t). */ -XTERN bool expand_tabs; - -/* Use a tab in the output, rather than a space, before the text of an - input line, so as to keep the proper alignment in the input line - without changing the characters in it (-T). */ -XTERN bool initial_tab; - -/* Remove trailing carriage returns from input. */ -XTERN bool strip_trailing_cr; - -/* In directory comparison, specify file to start with (-S). - This is used for resuming an aborted comparison. - All file names less than this name are ignored. */ -XTERN char const *starting_file; - -/* Pipe each file's output through pr (-l). */ -XTERN bool paginate; - -/* Line group formats for unchanged, old, new, and changed groups. */ -XTERN char const *group_format[CHANGED + 1]; - -/* Line formats for unchanged, old, and new lines. */ -XTERN char const *line_format[NEW + 1]; - -/* If using OUTPUT_SDIFF print extra information to help the sdiff filter. */ -XTERN bool sdiff_merge_assist; - -/* Tell OUTPUT_SDIFF to show only the left version of common lines. */ -XTERN bool left_column; - -/* Tell OUTPUT_SDIFF to not show common lines. */ -XTERN bool suppress_common_lines; - -/* The half line width and column 2 offset for OUTPUT_SDIFF. */ -XTERN unsigned int sdiff_half_width; -XTERN unsigned int sdiff_column2_offset; - -/* String containing all the command options diff received, - with spaces between and at the beginning but none at the end. - If there were no options given, this string is empty. */ -XTERN char *switch_string; - -/* Use heuristics for better speed with large files with a small - density of changes. */ -XTERN bool speed_large_files; - -/* Patterns that match file names to be excluded. */ -XTERN struct exclude *excluded; - -/* Don't discard lines. This makes things slower (sometimes much - slower) but will find a guaranteed minimal set of changes. */ -XTERN bool minimal; - -/* Name of program the user invoked (for error messages). */ -XTERN char *program_name; - -/* The strftime format to use for time strings. */ -XTERN char const *time_format; - -/* The result of comparison is an "edit script": a chain of `struct change'. - Each `struct change' represents one place where some lines are deleted - and some are inserted. - - LINE0 and LINE1 are the first affected lines in the two files (origin 0). - DELETED is the number of lines deleted here from file 0. - INSERTED is the number of lines inserted here in file 1. - - If DELETED is 0 then LINE0 is the number of the line before - which the insertion was done; vice versa for INSERTED and LINE1. */ - -struct change -{ - struct change *link; /* Previous or next edit command */ - lin inserted; /* # lines of file 1 changed here. */ - lin deleted; /* # lines of file 0 changed here. */ - lin line0; /* Line number of 1st deleted line. */ - lin line1; /* Line number of 1st inserted line. */ - bool ignore; /* Flag used in context.c. */ -}; - -/* Structures that describe the input files. */ - -/* Data on one input file being compared. */ - -struct file_data { - int desc; /* File descriptor */ - char const *name; /* File name */ - struct stat stat; /* File status */ - - /* Buffer in which text of file is read. */ - word *buffer; - - /* Allocated size of buffer, in bytes. Always a multiple of - sizeof *buffer. */ - size_t bufsize; - - /* Number of valid bytes now in the buffer. */ - size_t buffered; - - /* Array of pointers to lines in the file. */ - char const **linbuf; - - /* linbuf_base <= buffered_lines <= valid_lines <= alloc_lines. - linebuf[linbuf_base ... buffered_lines - 1] are possibly differing. - linebuf[linbuf_base ... valid_lines - 1] contain valid data. - linebuf[linbuf_base ... alloc_lines - 1] are allocated. */ - lin linbuf_base, buffered_lines, valid_lines, alloc_lines; - - /* Pointer to end of prefix of this file to ignore when hashing. */ - char const *prefix_end; - - /* Count of lines in the prefix. - There are this many lines in the file before linbuf[0]. */ - lin prefix_lines; - - /* Pointer to start of suffix of this file to ignore when hashing. */ - char const *suffix_begin; - - /* Vector, indexed by line number, containing an equivalence code for - each line. It is this vector that is actually compared with that - of another file to generate differences. */ - lin *equivs; - - /* Vector, like the previous one except that - the elements for discarded lines have been squeezed out. */ - lin *undiscarded; - - /* Vector mapping virtual line numbers (not counting discarded lines) - to real ones (counting those lines). Both are origin-0. */ - lin *realindexes; - - /* Total number of nondiscarded lines. */ - lin nondiscarded_lines; - - /* Vector, indexed by real origin-0 line number, - containing TRUE for a line that is an insertion or a deletion. - The results of comparison are stored here. */ - bool *changed; - - /* 1 if file ends in a line with no final newline. */ - bool missing_newline; - - /* 1 if at end of file. */ - bool eof; - - /* 1 more than the maximum equivalence value used for this or its - sibling file. */ - lin equiv_max; -}; - -/* The file buffer, considered as an array of bytes rather than - as an array of words. */ -#define FILE_BUFFER(f) ((char *) (f)->buffer) - -/* Data on two input files being compared. */ - -struct comparison - { - struct file_data file[2]; - struct comparison const *parent; /* parent, if a recursive comparison */ - }; - -/* Describe the two files currently being compared. */ - -XTERN struct file_data files[2]; - -/* Stdio stream to output diffs to. */ - -XTERN FILE *outfile; - -/* Declare various functions. */ - -/* analyze.c */ -int diff_2_files (struct comparison *); - -/* context.c */ -void print_context_header (struct file_data[], bool); -void print_context_script (struct change *, bool); - -/* dir.c */ -int diff_dirs (struct comparison const *, int (*) (struct comparison const *, char const *, char const *)); - -/* ed.c */ -void print_ed_script (struct change *); -void pr_forward_ed_script (struct change *); - -/* ifdef.c */ -void print_ifdef_script (struct change *); - -/* io.c */ -void file_block_read (struct file_data *, size_t); -bool read_files (struct file_data[], bool); - -/* normal.c */ -void print_normal_script (struct change *); - -/* rcs.c */ -void print_rcs_script (struct change *); - -/* side.c */ -void print_sdiff_script (struct change *); - -/* util.c */ -extern char const change_letter[4]; -extern char const pr_program[]; -char *concat (char const *, char const *, char const *); -char *dir_file_pathname (char const *, char const *); -bool lines_differ (char const *, char const *); -lin translate_line_number (struct file_data const *, lin); -struct change *find_change (struct change *); -struct change *find_reverse_change (struct change *); -void *zalloc (size_t); -enum changes analyze_hunk (struct change *, lin *, lin *, lin *, lin *); -void begin_output (void); -void debug_script (struct change *); -void fatal (char const *) __attribute__((noreturn)); -void finish_output (void); -void message (char const *, char const *, char const *); -void message5 (char const *, char const *, char const *, char const *, char const *); -void output_1_line (char const *, char const *, char const *, char const *); -void perror_with_name (char const *); -void pfatal_with_name (char const *) __attribute__((noreturn)); -void print_1_line (char const *, char const * const *); -void print_message_queue (void); -void print_number_range (char, struct file_data *, lin, lin); -void print_script (struct change *, struct change * (*) (struct change *), void (*) (struct change *)); -void setup_output (char const *, char const *, bool); -void translate_range (struct file_data const *, lin, lin, long *, long *); - -/* version.c */ -extern char const version_string[]; diff --git a/src/bin/diffutils/src/diff3.c b/src/bin/diffutils/src/diff3.c deleted file mode 100644 index f3d3dcf7f9..0000000000 --- a/src/bin/diffutils/src/diff3.c +++ /dev/null @@ -1,1745 +0,0 @@ -/* diff3 - compare three files line by line - - Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1998, 2001, - 2002 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include "system.h" - -static char const copyright_string[] = - "Copyright (C) 2002 Free Software Foundation, Inc."; - -static char const authorship_msgid[] = N_("Written by Randy Smith."); - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -extern char const version_string[]; - -/* - * Internal data structures and macros for the diff3 program; includes - * data structures for both diff3 diffs and normal diffs. - */ - -/* Different files within a three way diff. */ -#define FILE0 0 -#define FILE1 1 -#define FILE2 2 - -/* - * A three way diff is built from two two-way diffs; the file which - * the two two-way diffs share is: - */ -#define FILEC FILE2 - -/* - * Different files within a two way diff. - * FC is the common file, FO the other file. - */ -#define FO 0 -#define FC 1 - -/* The ranges are indexed by */ -#define RANGE_START 0 -#define RANGE_END 1 - -enum diff_type { - ERROR, /* Should not be used */ - ADD, /* Two way diff add */ - CHANGE, /* Two way diff change */ - DELETE, /* Two way diff delete */ - DIFF_ALL, /* All three are different */ - DIFF_1ST, /* Only the first is different */ - DIFF_2ND, /* Only the second */ - DIFF_3RD /* Only the third */ -}; - -/* Two way diff */ -struct diff_block { - lin ranges[2][2]; /* Ranges are inclusive */ - char **lines[2]; /* The actual lines (may contain nulls) */ - size_t *lengths[2]; /* Line lengths (including newlines, if any) */ - struct diff_block *next; -}; - -/* Three way diff */ - -struct diff3_block { - enum diff_type correspond; /* Type of diff */ - lin ranges[3][2]; /* Ranges are inclusive */ - char **lines[3]; /* The actual lines (may contain nulls) */ - size_t *lengths[3]; /* Line lengths (including newlines, if any) */ - struct diff3_block *next; -}; - -/* - * Access the ranges on a diff block. - */ -#define D_LOWLINE(diff, filenum) \ - ((diff)->ranges[filenum][RANGE_START]) -#define D_HIGHLINE(diff, filenum) \ - ((diff)->ranges[filenum][RANGE_END]) -#define D_NUMLINES(diff, filenum) \ - (D_HIGHLINE (diff, filenum) - D_LOWLINE (diff, filenum) + 1) - -/* - * Access the line numbers in a file in a diff by relative line - * numbers (i.e. line number within the diff itself). Note that these - * are lvalues and can be used for assignment. - */ -#define D_RELNUM(diff, filenum, linenum) \ - ((diff)->lines[filenum][linenum]) -#define D_RELLEN(diff, filenum, linenum) \ - ((diff)->lengths[filenum][linenum]) - -/* - * And get at them directly, when that should be necessary. - */ -#define D_LINEARRAY(diff, filenum) \ - ((diff)->lines[filenum]) -#define D_LENARRAY(diff, filenum) \ - ((diff)->lengths[filenum]) - -/* - * Next block. - */ -#define D_NEXT(diff) ((diff)->next) - -/* - * Access the type of a diff3 block. - */ -#define D3_TYPE(diff) ((diff)->correspond) - -/* - * Line mappings based on diffs. The first maps off the top of the - * diff, the second off of the bottom. - */ -#define D_HIGH_MAPLINE(diff, fromfile, tofile, linenum) \ - ((linenum) \ - - D_HIGHLINE ((diff), (fromfile)) \ - + D_HIGHLINE ((diff), (tofile))) - -#define D_LOW_MAPLINE(diff, fromfile, tofile, linenum) \ - ((linenum) \ - - D_LOWLINE ((diff), (fromfile)) \ - + D_LOWLINE ((diff), (tofile))) - -/* Options variables for flags set on command line. */ - -/* If nonzero, treat all files as text files, never as binary. */ -static bool text; - -/* If nonzero, write out an ed script instead of the standard diff3 format. */ -static bool edscript; - -/* If nonzero, in the case of overlapping diffs (type DIFF_ALL), - preserve the lines which would normally be deleted from - file 1 with a special flagging mechanism. */ -static bool flagging; - -/* Use a tab to align output lines (-T). */ -static bool initial_tab; - -/* If nonzero, do not output information for overlapping diffs. */ -static bool simple_only; - -/* If nonzero, do not output information for non-overlapping diffs. */ -static bool overlap_only; - -/* If nonzero, show information for DIFF_2ND diffs. */ -static bool show_2nd; - -/* If nonzero, include `:wq' at the end of the script - to write out the file being edited. */ -static bool finalwrite; - -/* If nonzero, output a merged file. */ -static bool merge; - -char *program_name; - -static char *read_diff (char const *, char const *, char **); -static char *scan_diff_line (char *, char **, size_t *, char *, char); -static enum diff_type process_diff_control (char **, struct diff_block *); -static bool compare_line_list (char * const[], size_t const[], char * const[], size_t const[], lin); -static bool copy_stringlist (char * const[], size_t const[], char *[], size_t[], lin); -static bool output_diff3_edscript (FILE *, struct diff3_block *, int const[3], int const[3], char const *, char const *, char const *); -static bool output_diff3_merge (FILE *, FILE *, struct diff3_block *, int const[3], int const[3], char const *, char const *, char const *); -static struct diff3_block *create_diff3_block (lin, lin, lin, lin, lin, lin); -static struct diff3_block *make_3way_diff (struct diff_block *, struct diff_block *); -static struct diff3_block *reverse_diff3_blocklist (struct diff3_block *); -static struct diff3_block *using_to_diff3_block (struct diff_block *[2], struct diff_block *[2], int, int, struct diff3_block const *); -static struct diff_block *process_diff (char const *, char const *, struct diff_block **); -static void check_stdout (void); -static void fatal (char const *) __attribute__((noreturn)); -static void output_diff3 (FILE *, struct diff3_block *, int const[3], int const[3]); -static void perror_with_exit (char const *) __attribute__((noreturn)); -static void try_help (char const *, char const *) __attribute__((noreturn)); -static void usage (void); - -static char const *diff_program = DEFAULT_DIFF_PROGRAM; - -/* Values for long options that do not have single-letter equivalents. */ -enum -{ - DIFF_PROGRAM_OPTION = CHAR_MAX + 1, - HELP_OPTION -}; - -static struct option const longopts[] = -{ - {"text", 0, 0, 'a'}, - {"show-all", 0, 0, 'A'}, - {"ed", 0, 0, 'e'}, - {"diff-program", 1, 0, DIFF_PROGRAM_OPTION}, - {"show-overlap", 0, 0, 'E'}, - {"label", 1, 0, 'L'}, - {"merge", 0, 0, 'm'}, - {"initial-tab", 0, 0, 'T'}, - {"overlap-only", 0, 0, 'x'}, - {"easy-only", 0, 0, '3'}, - {"version", 0, 0, 'v'}, - {"help", 0, 0, HELP_OPTION}, - {0, 0, 0, 0} -}; - -/* - * Main program. Calls diff twice on two pairs of input files, - * combines the two diffs, and outputs them. - */ -int -main (int argc, char **argv) -{ - int c, i; - int common; - int mapping[3]; - int rev_mapping[3]; - int incompat = 0; - bool conflicts_found; - struct diff_block *thread0, *thread1, *last_block; - struct diff3_block *diff3; - int tag_count = 0; - char *tag_strings[3]; - char *commonname; - char **file; - struct stat statb; - - exit_failure = 2; - initialize_main (&argc, &argv); - program_name = argv[0]; - setlocale (LC_ALL, ""); - bindtextdomain (PACKAGE, LOCALEDIR); - textdomain (PACKAGE); - c_stack_action (c_stack_die); - - while ((c = getopt_long (argc, argv, "aeimvx3AEL:TX", longopts, 0)) != -1) - { - switch (c) - { - case 'a': - text = 1; - break; - case 'A': - show_2nd = 1; - flagging = 1; - incompat++; - break; - case 'x': - overlap_only = 1; - incompat++; - break; - case '3': - simple_only = 1; - incompat++; - break; - case 'i': - finalwrite = 1; - break; - case 'm': - merge = 1; - break; - case 'X': - overlap_only = 1; - /* Fall through. */ - case 'E': - flagging = 1; - /* Fall through. */ - case 'e': - incompat++; - break; - case 'T': - initial_tab = 1; - break; - case 'v': - printf ("diff3 %s\n%s\n\n%s\n\n%s\n", - version_string, copyright_string, - _(free_software_msgid), _(authorship_msgid)); - check_stdout (); - return EXIT_SUCCESS; - case DIFF_PROGRAM_OPTION: - diff_program = optarg; - break; - case HELP_OPTION: - usage (); - check_stdout (); - return EXIT_SUCCESS; - case 'L': - /* Handle up to three -L options. */ - if (tag_count < 3) - { - tag_strings[tag_count++] = optarg; - break; - } - try_help ("too many file label options", 0); - default: - try_help (0, 0); - } - } - - edscript = incompat & ~merge; /* -AeExX3 without -m implies ed script. */ - show_2nd |= ~incompat & merge; /* -m without -AeExX3 implies -A. */ - flagging |= ~incompat & merge; - - if (incompat > 1 /* Ensure at most one of -AeExX3. */ - || finalwrite & merge /* -i -m would rewrite input file. */ - || (tag_count && ! flagging)) /* -L requires one of -AEX. */ - try_help ("incompatible options", 0); - - if (argc - optind != 3) - { - if (argc - optind < 3) - try_help ("missing operand after `%s'", argv[argc - 1]); - else - try_help ("extra operand `%s'", argv[optind + 3]); - } - - file = &argv[optind]; - - for (i = tag_count; i < 3; i++) - tag_strings[i] = file[i]; - - /* Always compare file1 to file2, even if file2 is "-". - This is needed for -mAeExX3. Using the file0 as - the common file would produce wrong results, because if the - file0-file1 diffs didn't line up with the file0-file2 diffs - (which is entirely possible since we don't use diff's -n option), - diff3 might report phantom changes from file1 to file2. - - Also, try to compare file0 to file1, because this is where - changes are expected to come from. Diffing between these pairs - of files is more likely to avoid phantom changes from file0 to file1. - - Historically, the default common file was file2, so some older - applications (e.g. Emacs ediff) used file2 as the ancestor. So, - for compatibility, if this is a 3-way diff (not a merge or - edscript), prefer file2 as the common file. */ - - common = 2 - (edscript | merge); - - if (strcmp (file[common], "-") == 0) - { - /* Sigh. We've got standard input as the common file. We can't - call diff twice on stdin. Use the other arg as the common - file instead. */ - common = 3 - common; - if (strcmp (file[0], "-") == 0 || strcmp (file[common], "-") == 0) - fatal ("`-' specified for more than one input file"); - } - - mapping[0] = 0; - mapping[1] = 3 - common; - mapping[2] = common; - - for (i = 0; i < 3; i++) - rev_mapping[mapping[i]] = i; - - for (i = 0; i < 3; i++) - if (strcmp (file[i], "-") != 0) - { - if (stat (file[i], &statb) < 0) - perror_with_exit (file[i]); - else if (S_ISDIR (statb.st_mode)) - error (EXIT_TROUBLE, EISDIR, "%s", file[i]); - } - -#ifdef SIGCHLD - /* System V fork+wait does not work if SIGCHLD is ignored. */ - signal (SIGCHLD, SIG_DFL); -#endif - - commonname = file[rev_mapping[FILEC]]; - thread1 = process_diff (file[rev_mapping[FILE1]], commonname, &last_block); - thread0 = process_diff (file[rev_mapping[FILE0]], commonname, &last_block); - diff3 = make_3way_diff (thread0, thread1); - if (edscript) - conflicts_found - = output_diff3_edscript (stdout, diff3, mapping, rev_mapping, - tag_strings[0], tag_strings[1], tag_strings[2]); - else if (merge) - { - if (! freopen (file[rev_mapping[FILE0]], "r", stdin)) - perror_with_exit (file[rev_mapping[FILE0]]); - conflicts_found - = output_diff3_merge (stdin, stdout, diff3, mapping, rev_mapping, - tag_strings[0], tag_strings[1], tag_strings[2]); - if (ferror (stdin)) - fatal ("read failed"); - } - else - { - output_diff3 (stdout, diff3, mapping, rev_mapping); - conflicts_found = 0; - } - - check_stdout (); - exit (conflicts_found); - return conflicts_found; -} - -static void -try_help (char const *reason_msgid, char const *operand) -{ - if (reason_msgid) - error (0, 0, _(reason_msgid), operand); - error (EXIT_TROUBLE, 0, - _("Try `%s --help' for more information."), program_name); - abort (); -} - -static void -check_stdout (void) -{ - if (ferror (stdout)) - fatal ("write failed"); - else if (fclose (stdout) != 0) - perror_with_exit (_("standard output")); -} - -static char const * const option_help_msgid[] = { - N_("-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE."), - N_("-E --show-overlap Output unmerged changes, bracketing conflicts."), - N_("-A --show-all Output all changes, bracketing conflicts."), - N_("-x --overlap-only Output overlapping changes."), - N_("-X Output overlapping changes, bracketing them."), - N_("-3 --easy-only Output unmerged nonoverlapping changes."), - "", - N_("-m --merge Output merged file instead of ed script (default -A)."), - N_("-L LABEL --label=LABEL Use LABEL instead of file name."), - N_("-i Append `w' and `q' commands to ed scripts."), - N_("-a --text Treat all files as text."), - N_("-T --initial-tab Make tabs line up by prepending a tab."), - N_("--diff-program=PROGRAM Use PROGRAM to compare files."), - "", - N_("-v --version Output version info."), - N_("--help Output this help."), - 0 -}; - -static void -usage (void) -{ - char const * const *p; - - printf (_("Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n"), - program_name); - printf ("%s\n\n", _("Compare three files line by line.")); - for (p = option_help_msgid; *p; p++) - if (**p) - printf (" %s\n", _(*p)); - else - putchar ('\n'); - printf ("\n%s\n\n%s\n", - _("If a FILE is `-', read standard input."), - _("Report bugs to .")); -} - -/* - * Routines that combine the two diffs together into one. The - * algorithm used follows: - * - * File2 is shared in common between the two diffs. - * Diff02 is the diff between 0 and 2. - * Diff12 is the diff between 1 and 2. - * - * 1) Find the range for the first block in File2. - * a) Take the lowest of the two ranges (in File2) in the two - * current blocks (one from each diff) as being the low - * water mark. Assign the upper end of this block as - * being the high water mark and move the current block up - * one. Mark the block just moved over as to be used. - * b) Check the next block in the diff that the high water - * mark is *not* from. - * - * *If* the high water mark is above - * the low end of the range in that block, - * - * mark that block as to be used and move the current - * block up. Set the high water mark to the max of - * the high end of this block and the current. Repeat b. - * - * 2) Find the corresponding ranges in File0 (from the blocks - * in diff02; line per line outside of diffs) and in File1. - * Create a diff3_block, reserving space as indicated by the ranges. - * - * 3) Copy all of the pointers for file2 in. At least for now, - * do memcmp's between corresponding strings in the two diffs. - * - * 4) Copy all of the pointers for file0 and 1 in. Get what you - * need from file2 (when there isn't a diff block, it's - * identical to file2 within the range between diff blocks). - * - * 5) If the diff blocks you used came from only one of the two - * strings of diffs, then that file (i.e. the one other than - * the common file in that diff) is the odd person out. If you used - * diff blocks from both sets, check to see if files 0 and 1 match: - * - * Same number of lines? If so, do a set of memcmp's (if a - * memcmp matches; copy the pointer over; it'll be easier later - * if you have to do any compares). If they match, 0 & 1 are - * the same. If not, all three different. - * - * Then you do it again, until you run out of blocks. - * - */ - -/* - * This routine makes a three way diff (chain of diff3_block's) from two - * two way diffs (chains of diff_block's). It is assumed that each of - * the two diffs passed are onto the same file (i.e. that each of the - * diffs were made "to" the same file). The three way diff pointer - * returned will have numbering FILE0--the other file in diff02, - * FILE1--the other file in diff12, and FILEC--the common file. - */ -static struct diff3_block * -make_3way_diff (struct diff_block *thread0, struct diff_block *thread1) -{ -/* - * This routine works on the two diffs passed to it as threads. - * Thread number 0 is diff02, thread number 1 is diff12. The USING - * array is set to the base of the list of blocks to be used to - * construct each block of the three way diff; if no blocks from a - * particular thread are to be used, that element of the using array - * is set to 0. The elements LAST_USING array are set to the last - * elements on each of the using lists. - * - * The HIGH_WATER_MARK is set to the highest line number in the common file - * described in any of the diffs in either of the USING lists. The - * HIGH_WATER_THREAD names the thread. Similarly the BASE_WATER_MARK - * and BASE_WATER_THREAD describe the lowest line number in the common file - * described in any of the diffs in either of the USING lists. The - * HIGH_WATER_DIFF is the diff from which the HIGH_WATER_MARK was - * taken. - * - * The HIGH_WATER_DIFF should always be equal to LAST_USING - * [HIGH_WATER_THREAD]. The OTHER_DIFF is the next diff to check for - * higher water, and should always be equal to - * CURRENT[HIGH_WATER_THREAD ^ 0x1]. The OTHER_THREAD is the thread - * in which the OTHER_DIFF is, and hence should always be equal to - * HIGH_WATER_THREAD ^ 0x1. - * - * The variable LAST_DIFF is kept set to the last diff block produced - * by this routine, for line correspondence purposes between that diff - * and the one currently being worked on. It is initialized to - * ZERO_DIFF before any blocks have been created. - */ - - struct diff_block *using[2]; - struct diff_block *last_using[2]; - struct diff_block *current[2]; - - lin high_water_mark; - - int high_water_thread; - int base_water_thread; - int other_thread; - - struct diff_block *high_water_diff; - struct diff_block *other_diff; - - struct diff3_block *result; - struct diff3_block *tmpblock; - struct diff3_block **result_end; - - struct diff3_block const *last_diff3; - - static struct diff3_block const zero_diff3; - - /* Initialization */ - result = 0; - result_end = &result; - current[0] = thread0; current[1] = thread1; - last_diff3 = &zero_diff3; - - /* Sniff up the threads until we reach the end */ - - while (current[0] || current[1]) - { - using[0] = using[1] = last_using[0] = last_using[1] = 0; - - /* Setup low and high water threads, diffs, and marks. */ - if (!current[0]) - base_water_thread = 1; - else if (!current[1]) - base_water_thread = 0; - else - base_water_thread = - (D_LOWLINE (current[0], FC) > D_LOWLINE (current[1], FC)); - - high_water_thread = base_water_thread; - - high_water_diff = current[high_water_thread]; - - high_water_mark = D_HIGHLINE (high_water_diff, FC); - - /* Make the diff you just got info from into the using class */ - using[high_water_thread] - = last_using[high_water_thread] - = high_water_diff; - current[high_water_thread] = high_water_diff->next; - last_using[high_water_thread]->next = 0; - - /* And mark the other diff */ - other_thread = high_water_thread ^ 0x1; - other_diff = current[other_thread]; - - /* Shuffle up the ladder, checking the other diff to see if it - needs to be incorporated. */ - while (other_diff - && D_LOWLINE (other_diff, FC) <= high_water_mark + 1) - { - - /* Incorporate this diff into the using list. Note that - this doesn't take it off the current list */ - if (using[other_thread]) - last_using[other_thread]->next = other_diff; - else - using[other_thread] = other_diff; - last_using[other_thread] = other_diff; - - /* Take it off the current list. Note that this following - code assumes that other_diff enters it equal to - current[high_water_thread ^ 0x1] */ - current[other_thread] = current[other_thread]->next; - other_diff->next = 0; - - /* Set the high_water stuff - If this comparison is equal, then this is the last pass - through this loop; since diff blocks within a given - thread cannot overlap, the high_water_mark will be - *below* the range_start of either of the next diffs. */ - - if (high_water_mark < D_HIGHLINE (other_diff, FC)) - { - high_water_thread ^= 1; - high_water_diff = other_diff; - high_water_mark = D_HIGHLINE (other_diff, FC); - } - - /* Set the other diff */ - other_thread = high_water_thread ^ 0x1; - other_diff = current[other_thread]; - } - - /* The using lists contain a list of all of the blocks to be - included in this diff3_block. Create it. */ - - tmpblock = using_to_diff3_block (using, last_using, - base_water_thread, high_water_thread, - last_diff3); - - if (!tmpblock) - fatal ("internal error: screwup in format of diff blocks"); - - /* Put it on the list. */ - *result_end = tmpblock; - result_end = &tmpblock->next; - - /* Set up corresponding lines correctly. */ - last_diff3 = tmpblock; - } - return result; -} - -/* - * using_to_diff3_block: - * This routine takes two lists of blocks (from two separate diff - * threads) and puts them together into one diff3 block. - * It then returns a pointer to this diff3 block or 0 for failure. - * - * All arguments besides using are for the convenience of the routine; - * they could be derived from the using array. - * LAST_USING is a pair of pointers to the last blocks in the using - * structure. - * LOW_THREAD and HIGH_THREAD tell which threads contain the lowest - * and highest line numbers for File0. - * last_diff3 contains the last diff produced in the calling routine. - * This is used for lines mappings which would still be identical to - * the state that diff ended in. - * - * A distinction should be made in this routine between the two diffs - * that are part of a normal two diff block, and the three diffs that - * are part of a diff3_block. - */ -static struct diff3_block * -using_to_diff3_block (struct diff_block *using[2], - struct diff_block *last_using[2], - int low_thread, int high_thread, - struct diff3_block const *last_diff3) -{ - lin low[2], high[2]; - struct diff3_block *result; - struct diff_block *ptr; - int d; - lin i; - - /* Find the range in the common file. */ - lin lowc = D_LOWLINE (using[low_thread], FC); - lin highc = D_HIGHLINE (last_using[high_thread], FC); - - /* Find the ranges in the other files. - If using[d] is null, that means that the file to which that diff - refers is equivalent to the common file over this range. */ - - for (d = 0; d < 2; d++) - if (using[d]) - { - low[d] = D_LOW_MAPLINE (using[d], FC, FO, lowc); - high[d] = D_HIGH_MAPLINE (last_using[d], FC, FO, highc); - } - else - { - low[d] = D_HIGH_MAPLINE (last_diff3, FILEC, FILE0 + d, lowc); - high[d] = D_HIGH_MAPLINE (last_diff3, FILEC, FILE0 + d, highc); - } - - /* Create a block with the appropriate sizes */ - result = create_diff3_block (low[0], high[0], low[1], high[1], lowc, highc); - - /* Copy information for the common file. - Return with a zero if any of the compares failed. */ - - for (d = 0; d < 2; d++) - for (ptr = using[d]; ptr; ptr = D_NEXT (ptr)) - { - lin result_offset = D_LOWLINE (ptr, FC) - lowc; - - if (!copy_stringlist (D_LINEARRAY (ptr, FC), - D_LENARRAY (ptr, FC), - D_LINEARRAY (result, FILEC) + result_offset, - D_LENARRAY (result, FILEC) + result_offset, - D_NUMLINES (ptr, FC))) - return 0; - } - - /* Copy information for file d. First deal with anything that might be - before the first diff. */ - - for (d = 0; d < 2; d++) - { - struct diff_block *u = using[d]; - lin lo = low[d], hi = high[d]; - - for (i = 0; - i + lo < (u ? D_LOWLINE (u, FO) : hi + 1); - i++) - { - D_RELNUM (result, FILE0 + d, i) = D_RELNUM (result, FILEC, i); - D_RELLEN (result, FILE0 + d, i) = D_RELLEN (result, FILEC, i); - } - - for (ptr = u; ptr; ptr = D_NEXT (ptr)) - { - lin result_offset = D_LOWLINE (ptr, FO) - lo; - lin linec; - - if (!copy_stringlist (D_LINEARRAY (ptr, FO), - D_LENARRAY (ptr, FO), - D_LINEARRAY (result, FILE0 + d) + result_offset, - D_LENARRAY (result, FILE0 + d) + result_offset, - D_NUMLINES (ptr, FO))) - return 0; - - /* Catch the lines between here and the next diff */ - linec = D_HIGHLINE (ptr, FC) + 1 - lowc; - for (i = D_HIGHLINE (ptr, FO) + 1 - lo; - i < (D_NEXT (ptr) ? D_LOWLINE (D_NEXT (ptr), FO) : hi + 1) - lo; - i++) - { - D_RELNUM (result, FILE0 + d, i) = D_RELNUM (result, FILEC, linec); - D_RELLEN (result, FILE0 + d, i) = D_RELLEN (result, FILEC, linec); - linec++; - } - } - } - - /* Set correspond */ - if (!using[0]) - D3_TYPE (result) = DIFF_2ND; - else if (!using[1]) - D3_TYPE (result) = DIFF_1ST; - else - { - lin nl0 = D_NUMLINES (result, FILE0); - lin nl1 = D_NUMLINES (result, FILE1); - - if (nl0 != nl1 - || !compare_line_list (D_LINEARRAY (result, FILE0), - D_LENARRAY (result, FILE0), - D_LINEARRAY (result, FILE1), - D_LENARRAY (result, FILE1), - nl0)) - D3_TYPE (result) = DIFF_ALL; - else - D3_TYPE (result) = DIFF_3RD; - } - - return result; -} - -/* - * This routine copies pointers from a list of strings to a different list - * of strings. If a spot in the second list is already filled, it - * makes sure that it is filled with the same string; if not it - * returns 0, the copy incomplete. - * Upon successful completion of the copy, it returns 1. - */ -static bool -copy_stringlist (char * const fromptrs[], size_t const fromlengths[], - char *toptrs[], size_t tolengths[], - lin copynum) -{ - register char * const *f = fromptrs; - register char **t = toptrs; - register size_t const *fl = fromlengths; - register size_t *tl = tolengths; - - while (copynum--) - { - if (*t) - { if (*fl != *tl || memcmp (*f, *t, *fl)) return 0; } - else - { *t = *f ; *tl = *fl; } - - t++; f++; tl++; fl++; - } - return 1; -} - -/* - * Create a diff3_block, with ranges as specified in the arguments. - * Allocate the arrays for the various pointers (and zero them) based - * on the arguments passed. Return the block as a result. - */ -static struct diff3_block * -create_diff3_block (lin low0, lin high0, - lin low1, lin high1, - lin low2, lin high2) -{ - struct diff3_block *result = xmalloc (sizeof *result); - lin numlines; - - D3_TYPE (result) = ERROR; - D_NEXT (result) = 0; - - /* Assign ranges */ - D_LOWLINE (result, FILE0) = low0; - D_HIGHLINE (result, FILE0) = high0; - D_LOWLINE (result, FILE1) = low1; - D_HIGHLINE (result, FILE1) = high1; - D_LOWLINE (result, FILE2) = low2; - D_HIGHLINE (result, FILE2) = high2; - - /* Allocate and zero space */ - numlines = D_NUMLINES (result, FILE0); - if (numlines) - { - D_LINEARRAY (result, FILE0) = xcalloc (numlines, sizeof (char *)); - D_LENARRAY (result, FILE0) = xcalloc (numlines, sizeof (size_t)); - } - else - { - D_LINEARRAY (result, FILE0) = 0; - D_LENARRAY (result, FILE0) = 0; - } - - numlines = D_NUMLINES (result, FILE1); - if (numlines) - { - D_LINEARRAY (result, FILE1) = xcalloc (numlines, sizeof (char *)); - D_LENARRAY (result, FILE1) = xcalloc (numlines, sizeof (size_t)); - } - else - { - D_LINEARRAY (result, FILE1) = 0; - D_LENARRAY (result, FILE1) = 0; - } - - numlines = D_NUMLINES (result, FILE2); - if (numlines) - { - D_LINEARRAY (result, FILE2) = xcalloc (numlines, sizeof (char *)); - D_LENARRAY (result, FILE2) = xcalloc (numlines, sizeof (size_t)); - } - else - { - D_LINEARRAY (result, FILE2) = 0; - D_LENARRAY (result, FILE2) = 0; - } - - /* Return */ - return result; -} - -/* - * Compare two lists of lines of text. - * Return 1 if they are equivalent, 0 if not. - */ -static bool -compare_line_list (char * const list1[], size_t const lengths1[], - char * const list2[], size_t const lengths2[], - lin nl) -{ - char - * const *l1 = list1, - * const *l2 = list2; - size_t const - *lgths1 = lengths1, - *lgths2 = lengths2; - - while (nl--) - if (!*l1 || !*l2 || *lgths1 != *lgths2++ - || memcmp (*l1++, *l2++, *lgths1++)) - return 0; - return 1; -} - -/* - * Routines to input and parse two way diffs. - */ - -static struct diff_block * -process_diff (char const *filea, - char const *fileb, - struct diff_block **last_block) -{ - char *diff_contents; - char *diff_limit; - char *scan_diff; - enum diff_type dt; - lin i; - struct diff_block *block_list, **block_list_end, *bptr; - size_t too_many_lines = (PTRDIFF_MAX - / MIN (sizeof *bptr->lines[1], - sizeof *bptr->lengths[1])); - - diff_limit = read_diff (filea, fileb, &diff_contents); - scan_diff = diff_contents; - block_list_end = &block_list; - bptr = 0; /* Pacify `gcc -W'. */ - - while (scan_diff < diff_limit) - { - bptr = xmalloc (sizeof *bptr); - bptr->lines[0] = bptr->lines[1] = 0; - bptr->lengths[0] = bptr->lengths[1] = 0; - - dt = process_diff_control (&scan_diff, bptr); - if (dt == ERROR || *scan_diff != '\n') - { - fprintf (stderr, _("%s: diff failed: "), program_name); - do - { - putc (*scan_diff, stderr); - } - while (*scan_diff++ != '\n'); - exit (EXIT_TROUBLE); - } - scan_diff++; - - /* Force appropriate ranges to be null, if necessary */ - switch (dt) - { - case ADD: - bptr->ranges[0][0]++; - break; - case DELETE: - bptr->ranges[1][0]++; - break; - case CHANGE: - break; - default: - fatal ("internal error: invalid diff type in process_diff"); - break; - } - - /* Allocate space for the pointers for the lines from filea, and - parcel them out among these pointers */ - if (dt != ADD) - { - lin numlines = D_NUMLINES (bptr, 0); - if (too_many_lines <= numlines) - xalloc_die (); - bptr->lines[0] = xmalloc (numlines * sizeof *bptr->lines[0]); - bptr->lengths[0] = xmalloc (numlines * sizeof *bptr->lengths[0]); - for (i = 0; i < numlines; i++) - scan_diff = scan_diff_line (scan_diff, - &(bptr->lines[0][i]), - &(bptr->lengths[0][i]), - diff_limit, - '<'); - } - - /* Get past the separator for changes */ - if (dt == CHANGE) - { - if (strncmp (scan_diff, "---\n", 4)) - fatal ("invalid diff format; invalid change separator"); - scan_diff += 4; - } - - /* Allocate space for the pointers for the lines from fileb, and - parcel them out among these pointers */ - if (dt != DELETE) - { - lin numlines = D_NUMLINES (bptr, 1); - if (too_many_lines <= numlines) - xalloc_die (); - bptr->lines[1] = xmalloc (numlines * sizeof *bptr->lines[1]); - bptr->lengths[1] = xmalloc (numlines * sizeof *bptr->lengths[1]); - for (i = 0; i < numlines; i++) - scan_diff = scan_diff_line (scan_diff, - &(bptr->lines[1][i]), - &(bptr->lengths[1][i]), - diff_limit, - '>'); - } - - /* Place this block on the blocklist. */ - *block_list_end = bptr; - block_list_end = &bptr->next; - } - - *block_list_end = 0; - *last_block = bptr; - return block_list; -} - -/* - * This routine will parse a normal format diff control string. It - * returns the type of the diff (ERROR if the format is bad). All of - * the other important information is filled into to the structure - * pointed to by db, and the string pointer (whose location is passed - * to this routine) is updated to point beyond the end of the string - * parsed. Note that only the ranges in the diff_block will be set by - * this routine. - * - * If some specific pair of numbers has been reduced to a single - * number, then both corresponding numbers in the diff block are set - * to that number. In general these numbers are interpreted as ranges - * inclusive, unless being used by the ADD or DELETE commands. It is - * assumed that these will be special cased in a superior routine. - */ - -static enum diff_type -process_diff_control (char **string, struct diff_block *db) -{ - char *s = *string; - lin holdnum; - enum diff_type type; - -/* These macros are defined here because they can use variables - defined in this function. Don't try this at home kids, we're - trained professionals! - - Also note that SKIPWHITE only recognizes tabs and spaces, and - that READNUM can only read positive, integral numbers */ - -#define SKIPWHITE(s) { while (*s == ' ' || *s == '\t') s++; } -#define READNUM(s, num) \ - { unsigned char c = *s; if (!ISDIGIT (c)) return ERROR; holdnum = 0; \ - do { holdnum = (c - '0' + holdnum * 10); } \ - while (ISDIGIT (c = *++s)); (num) = holdnum; } - - /* Read first set of digits */ - SKIPWHITE (s); - READNUM (s, db->ranges[0][RANGE_START]); - - /* Was that the only digit? */ - SKIPWHITE (s); - if (*s == ',') - { - /* Get the next digit */ - s++; - READNUM (s, db->ranges[0][RANGE_END]); - } - else - db->ranges[0][RANGE_END] = db->ranges[0][RANGE_START]; - - /* Get the letter */ - SKIPWHITE (s); - switch (*s) - { - case 'a': - type = ADD; - break; - case 'c': - type = CHANGE; - break; - case 'd': - type = DELETE; - break; - default: - return ERROR; /* Bad format */ - } - s++; /* Past letter */ - - /* Read second set of digits */ - SKIPWHITE (s); - READNUM (s, db->ranges[1][RANGE_START]); - - /* Was that the only digit? */ - SKIPWHITE (s); - if (*s == ',') - { - /* Get the next digit */ - s++; - READNUM (s, db->ranges[1][RANGE_END]); - SKIPWHITE (s); /* To move to end */ - } - else - db->ranges[1][RANGE_END] = db->ranges[1][RANGE_START]; - - *string = s; - return type; -} - -static char * -read_diff (char const *filea, - char const *fileb, - char **output_placement) -{ - char *diff_result; - size_t current_chunk_size, total; - int fd, wstatus; - int werrno = 0; - struct stat pipestat; - -#if HAVE_WORKING_FORK || HAVE_WORKING_VFORK - - char const *argv[8]; - char const **ap; - int fds[2]; - pid_t pid; - - ap = argv; - *ap++ = diff_program; - if (text) - *ap++ = "-a"; - *ap++ = "--horizon-lines=100"; - *ap++ = "--"; - *ap++ = filea; - *ap++ = fileb; - *ap = 0; - - if (pipe (fds) != 0) - perror_with_exit ("pipe"); - - pid = vfork (); - if (pid == 0) - { - /* Child */ - close (fds[0]); - if (fds[1] != STDOUT_FILENO) - { - dup2 (fds[1], STDOUT_FILENO); - close (fds[1]); - } - - /* The cast to (char **) is needed for portability to older - hosts with a nonstandard prototype for execvp. */ - execvp (diff_program, (char **) argv); - - _exit (errno == ENOEXEC ? 126 : 127); - } - - if (pid == -1) - perror_with_exit ("fork"); - - close (fds[1]); /* Prevent erroneous lack of EOF */ - fd = fds[0]; - -#else - - FILE *fpipe; - char const args[] = " -a --horizon-lines=100 -- "; - char *command = xmalloc (quote_system_arg (0, diff_program) - + sizeof args - 1 - + quote_system_arg (0, filea) + 1 - + quote_system_arg (0, fileb) + 1); - char *p = command; - p += quote_system_arg (p, diff_program); - strcpy (p, args + (text ? 0 : 3)); - p += strlen (p); - p += quote_system_arg (p, filea); - *p++ = ' '; - p += quote_system_arg (p, fileb); - *p = 0; - errno = 0; - fpipe = popen (command, "r"); - if (!fpipe) - perror_with_exit (command); - free (command); - fd = fileno (fpipe); - -#endif - - if (fstat (fd, &pipestat) != 0) - perror_with_exit ("fstat"); - current_chunk_size = MAX (1, STAT_BLOCKSIZE (pipestat)); - diff_result = xmalloc (current_chunk_size); - total = 0; - - for (;;) - { - size_t bytes_to_read = current_chunk_size - total; - size_t bytes = block_read (fd, diff_result + total, bytes_to_read); - total += bytes; - if (bytes != bytes_to_read) - { - if (bytes == SIZE_MAX) - perror_with_exit (_("read failed")); - break; - } - if (PTRDIFF_MAX / 2 <= current_chunk_size) - xalloc_die (); - current_chunk_size *= 2; - diff_result = xrealloc (diff_result, current_chunk_size); - } - - if (total != 0 && diff_result[total-1] != '\n') - fatal ("invalid diff format; incomplete last line"); - - *output_placement = diff_result; - -#if ! (HAVE_WORKING_FORK || HAVE_WORKING_VFORK) - - wstatus = pclose (fpipe); - if (wstatus == -1) - werrno = errno; - -#else - - if (close (fd) != 0) - perror_with_exit ("close"); - if (waitpid (pid, &wstatus, 0) < 0) - perror_with_exit ("waitpid"); - -#endif - - if (! werrno && WIFEXITED (wstatus)) - switch (WEXITSTATUS (wstatus)) - { - case 126: - error (EXIT_TROUBLE, 0, _("subsidiary program `%s' not executable"), - diff_program); - case 127: - error (EXIT_TROUBLE, 0, _("subsidiary program `%s' not found"), - diff_program); - } - if (werrno || ! (WIFEXITED (wstatus) && WEXITSTATUS (wstatus) < 2)) - error (EXIT_TROUBLE, werrno, _("subsidiary program `%s' failed"), - diff_program); - - return diff_result + total; -} - - -/* - * Scan a regular diff line (consisting of > or <, followed by a - * space, followed by text (including nulls) up to a newline. - * - * This next routine began life as a macro and many parameters in it - * are used as call-by-reference values. - */ -static char * -scan_diff_line (char *scan_ptr, char **set_start, size_t *set_length, - char *limit, char leadingchar) -{ - char *line_ptr; - - if (!(scan_ptr[0] == leadingchar - && scan_ptr[1] == ' ')) - fatal ("invalid diff format; incorrect leading line chars"); - - *set_start = line_ptr = scan_ptr + 2; - while (*line_ptr++ != '\n') - continue; - - /* Include newline if the original line ended in a newline, - or if an edit script is being generated. - Copy any missing newline message to stderr if an edit script is being - generated, because edit scripts cannot handle missing newlines. - Return the beginning of the next line. */ - *set_length = line_ptr - *set_start; - if (line_ptr < limit && *line_ptr == '\\') - { - if (edscript) - fprintf (stderr, "%s:", program_name); - else - --*set_length; - line_ptr++; - do - { - if (edscript) - putc (*line_ptr, stderr); - } - while (*line_ptr++ != '\n'); - } - - return line_ptr; -} - -/* - * This routine outputs a three way diff passed as a list of - * diff3_block's. - * The argument MAPPING is indexed by external file number (in the - * argument list) and contains the internal file number (from the - * diff passed). This is important because the user expects his - * outputs in terms of the argument list number, and the diff passed - * may have been done slightly differently (if the last argument - * was "-", for example). - * REV_MAPPING is the inverse of MAPPING. - */ -static void -output_diff3 (FILE *outputfile, struct diff3_block *diff, - int const mapping[3], int const rev_mapping[3]) -{ - int i; - int oddoneout; - char *cp; - struct diff3_block *ptr; - lin line; - size_t length; - int dontprint; - static int skew_increment[3] = { 2, 3, 1 }; /* 0==>2==>1==>3 */ - char const *line_prefix = initial_tab ? "\t" : " "; - - for (ptr = diff; ptr; ptr = D_NEXT (ptr)) - { - char x[2]; - - switch (ptr->correspond) - { - case DIFF_ALL: - x[0] = 0; - dontprint = 3; /* Print them all */ - oddoneout = 3; /* Nobody's odder than anyone else */ - break; - case DIFF_1ST: - case DIFF_2ND: - case DIFF_3RD: - oddoneout = rev_mapping[ptr->correspond - DIFF_1ST]; - - x[0] = oddoneout + '1'; - x[1] = 0; - dontprint = oddoneout == 0; - break; - default: - fatal ("internal error: invalid diff type passed to output"); - } - fprintf (outputfile, "====%s\n", x); - - /* Go 0, 2, 1 if the first and third outputs are equivalent. */ - for (i = 0; i < 3; - i = (oddoneout == 1 ? skew_increment[i] : i + 1)) - { - int realfile = mapping[i]; - lin lowt = D_LOWLINE (ptr, realfile); - lin hight = D_HIGHLINE (ptr, realfile); - long llowt = lowt; - long lhight = hight; - - fprintf (outputfile, "%d:", i + 1); - switch (lowt - hight) - { - case 1: - fprintf (outputfile, "%lda\n", llowt - 1); - break; - case 0: - fprintf (outputfile, "%ldc\n", llowt); - break; - default: - fprintf (outputfile, "%ld,%ldc\n", llowt, lhight); - break; - } - - if (i == dontprint) continue; - - if (lowt <= hight) - { - line = 0; - do - { - fprintf (outputfile, line_prefix); - cp = D_RELNUM (ptr, realfile, line); - length = D_RELLEN (ptr, realfile, line); - fwrite (cp, sizeof (char), length, outputfile); - } - while (++line < hight - lowt + 1); - if (cp[length - 1] != '\n') - fprintf (outputfile, "\n\\ %s\n", - _("No newline at end of file")); - } - } - } -} - - -/* - * Output to OUTPUTFILE the lines of B taken from FILENUM. - * Double any initial '.'s; yield nonzero if any initial '.'s were doubled. - */ -static bool -dotlines (FILE *outputfile, struct diff3_block *b, int filenum) -{ - lin i; - bool leading_dot = 0; - - for (i = 0; - i < D_NUMLINES (b, filenum); - i++) - { - char *line = D_RELNUM (b, filenum, i); - if (line[0] == '.') - { - leading_dot = 1; - fprintf (outputfile, "."); - } - fwrite (line, sizeof (char), - D_RELLEN (b, filenum, i), outputfile); - } - - return leading_dot; -} - -/* - * Output to OUTPUTFILE a '.' line. If LEADING_DOT is nonzero, - * also output a command that removes initial '.'s - * starting with line START and continuing for NUM lines. - * (START is long, not lin, for convenience with printf %ld formats.) - */ -static void -undotlines (FILE *outputfile, bool leading_dot, long start, lin num) -{ - fprintf (outputfile, ".\n"); - if (leading_dot) - { - if (num == 1) - fprintf (outputfile, "%lds/^\\.//\n", start); - else - fprintf (outputfile, "%ld,%lds/^\\.//\n", start, start + num - 1); - } -} - -/* - * This routine outputs a diff3 set of blocks as an ed script. This - * script applies the changes between file's 2 & 3 to file 1. It - * takes the precise format of the ed script to be output from global - * variables set during options processing. Note that it does - * destructive things to the set of diff3 blocks it is passed; it - * reverses their order (this gets around the problems involved with - * changing line numbers in an ed script). - * - * Note that this routine has the same problem of mapping as the last - * one did; the variable MAPPING maps from file number according to - * the argument list to file number according to the diff passed. All - * files listed below are in terms of the argument list. - * REV_MAPPING is the inverse of MAPPING. - * - * The arguments FILE0, FILE1 and FILE2 are the strings to print - * as the names of the three files. These may be the actual names, - * or may be the arguments specified with -L. - * - * Returns 1 if conflicts were found. - */ - -static bool -output_diff3_edscript (FILE *outputfile, struct diff3_block *diff, - int const mapping[3], int const rev_mapping[3], - char const *file0, char const *file1, char const *file2) -{ - bool leading_dot; - bool conflicts_found = 0, conflict; - struct diff3_block *b; - - for (b = reverse_diff3_blocklist (diff); b; b = b->next) - { - /* Must do mapping correctly. */ - enum diff_type type - = (b->correspond == DIFF_ALL - ? DIFF_ALL - : DIFF_1ST + rev_mapping[b->correspond - DIFF_1ST]); - - long low0, high0; - - /* If we aren't supposed to do this output block, skip it. */ - switch (type) - { - default: continue; - case DIFF_2ND: if (!show_2nd) continue; conflict = 1; break; - case DIFF_3RD: if (overlap_only) continue; conflict = 0; break; - case DIFF_ALL: if (simple_only) continue; conflict = flagging; break; - } - - low0 = D_LOWLINE (b, mapping[FILE0]); - high0 = D_HIGHLINE (b, mapping[FILE0]); - - if (conflict) - { - conflicts_found = 1; - - - /* Mark end of conflict. */ - - fprintf (outputfile, "%lda\n", high0); - leading_dot = 0; - if (type == DIFF_ALL) - { - if (show_2nd) - { - /* Append lines from FILE1. */ - fprintf (outputfile, "||||||| %s\n", file1); - leading_dot = dotlines (outputfile, b, mapping[FILE1]); - } - /* Append lines from FILE2. */ - fprintf (outputfile, "=======\n"); - leading_dot |= dotlines (outputfile, b, mapping[FILE2]); - } - fprintf (outputfile, ">>>>>>> %s\n", file2); - undotlines (outputfile, leading_dot, high0 + 2, - (D_NUMLINES (b, mapping[FILE1]) - + D_NUMLINES (b, mapping[FILE2]) + 1)); - - - /* Mark start of conflict. */ - - fprintf (outputfile, "%lda\n<<<<<<< %s\n", low0 - 1, - type == DIFF_ALL ? file0 : file1); - leading_dot = 0; - if (type == DIFF_2ND) - { - /* Prepend lines from FILE1. */ - leading_dot = dotlines (outputfile, b, mapping[FILE1]); - fprintf (outputfile, "=======\n"); - } - undotlines (outputfile, leading_dot, low0 + 1, - D_NUMLINES (b, mapping[FILE1])); - } - else if (D_NUMLINES (b, mapping[FILE2]) == 0) - /* Write out a delete */ - { - if (low0 == high0) - fprintf (outputfile, "%ldd\n", low0); - else - fprintf (outputfile, "%ld,%ldd\n", low0, high0); - } - else - /* Write out an add or change */ - { - switch (high0 - low0) - { - case -1: - fprintf (outputfile, "%lda\n", high0); - break; - case 0: - fprintf (outputfile, "%ldc\n", high0); - break; - default: - fprintf (outputfile, "%ld,%ldc\n", low0, high0); - break; - } - - undotlines (outputfile, dotlines (outputfile, b, mapping[FILE2]), - low0, D_NUMLINES (b, mapping[FILE2])); - } - } - if (finalwrite) fprintf (outputfile, "w\nq\n"); - return conflicts_found; -} - -/* - * Read from INFILE and output to OUTPUTFILE a set of diff3_ blocks DIFF - * as a merged file. This acts like 'ed file0 <[output_diff3_edscript]', - * except that it works even for binary data or incomplete lines. - * - * As before, MAPPING maps from arg list file number to diff file number, - * REV_MAPPING is its inverse, - * and FILE0, FILE1, and FILE2 are the names of the files. - * - * Returns 1 if conflicts were found. - */ - -static bool -output_diff3_merge (FILE *infile, FILE *outputfile, struct diff3_block *diff, - int const mapping[3], int const rev_mapping[3], - char const *file0, char const *file1, char const *file2) -{ - int c; - lin i; - bool conflicts_found = 0, conflict; - struct diff3_block *b; - lin linesread = 0; - - for (b = diff; b; b = b->next) - { - /* Must do mapping correctly. */ - enum diff_type type - = ((b->correspond == DIFF_ALL) - ? DIFF_ALL - : DIFF_1ST + rev_mapping[b->correspond - DIFF_1ST]); - char const *format_2nd = "<<<<<<< %s\n"; - - /* If we aren't supposed to do this output block, skip it. */ - switch (type) - { - default: continue; - case DIFF_2ND: if (!show_2nd) continue; conflict = 1; break; - case DIFF_3RD: if (overlap_only) continue; conflict = 0; break; - case DIFF_ALL: if (simple_only) continue; conflict = flagging; - format_2nd = "||||||| %s\n"; - break; - } - - /* Copy I lines from file 0. */ - i = D_LOWLINE (b, FILE0) - linesread - 1; - linesread += i; - while (0 <= --i) - do - { - c = getc (infile); - if (c == EOF) - { - if (ferror (infile)) - perror_with_exit (_("read failed")); - else if (feof (infile)) - fatal ("input file shrank"); - } - putc (c, outputfile); - } - while (c != '\n'); - - if (conflict) - { - conflicts_found = 1; - - if (type == DIFF_ALL) - { - /* Put in lines from FILE0 with bracket. */ - fprintf (outputfile, "<<<<<<< %s\n", file0); - for (i = 0; - i < D_NUMLINES (b, mapping[FILE0]); - i++) - fwrite (D_RELNUM (b, mapping[FILE0], i), sizeof (char), - D_RELLEN (b, mapping[FILE0], i), outputfile); - } - - if (show_2nd) - { - /* Put in lines from FILE1 with bracket. */ - fprintf (outputfile, format_2nd, file1); - for (i = 0; - i < D_NUMLINES (b, mapping[FILE1]); - i++) - fwrite (D_RELNUM (b, mapping[FILE1], i), sizeof (char), - D_RELLEN (b, mapping[FILE1], i), outputfile); - } - - fprintf (outputfile, "=======\n"); - } - - /* Put in lines from FILE2. */ - for (i = 0; - i < D_NUMLINES (b, mapping[FILE2]); - i++) - fwrite (D_RELNUM (b, mapping[FILE2], i), sizeof (char), - D_RELLEN (b, mapping[FILE2], i), outputfile); - - if (conflict) - fprintf (outputfile, ">>>>>>> %s\n", file2); - - /* Skip I lines in file 0. */ - i = D_NUMLINES (b, FILE0); - linesread += i; - while (0 <= --i) - while ((c = getc (infile)) != '\n') - if (c == EOF) - { - if (ferror (infile)) - perror_with_exit (_("read failed")); - else if (feof (infile)) - { - if (i || b->next) - fatal ("input file shrank"); - return conflicts_found; - } - } - } - /* Copy rest of common file. */ - while ((c = getc (infile)) != EOF || !(ferror (infile) | feof (infile))) - putc (c, outputfile); - return conflicts_found; -} - -/* - * Reverse the order of the list of diff3 blocks. - */ -static struct diff3_block * -reverse_diff3_blocklist (struct diff3_block *diff) -{ - register struct diff3_block *tmp, *next, *prev; - - for (tmp = diff, prev = 0; tmp; tmp = next) - { - next = tmp->next; - tmp->next = prev; - prev = tmp; - } - - return prev; -} - -static void -fatal (char const *msgid) -{ - error (EXIT_TROUBLE, 0, "%s", _(msgid)); - abort (); -} - -static void -perror_with_exit (char const *string) -{ - error (EXIT_TROUBLE, errno, "%s", string); - abort (); -} diff --git a/src/bin/diffutils/src/diffutils.rdef b/src/bin/diffutils/src/diffutils.rdef deleted file mode 100644 index daf4605e94..0000000000 --- a/src/bin/diffutils/src/diffutils.rdef +++ /dev/null @@ -1,11 +0,0 @@ -resource app_version -{ - major = 2, - middle = 8, - minor = 1, - variety = 5, - internal = 0, - short_info = "2.8.1", - long_info = "2.8.1 ©2004 The Free Software Foundation" -}; - diff --git a/src/bin/diffutils/src/dir.c b/src/bin/diffutils/src/dir.c deleted file mode 100644 index 8cc82e6188..0000000000 --- a/src/bin/diffutils/src/dir.c +++ /dev/null @@ -1,289 +0,0 @@ -/* Read, sort and compare two directories. Used for GNU DIFF. - - Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1998, 2001, 2002 - Free Software Foundation, Inc. - - This file is part of GNU DIFF. - - GNU DIFF is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GNU DIFF is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include "diff.h" -#include -#include -#include -#include - -/* Read the directory named by DIR and store into DIRDATA a sorted vector - of filenames for its contents. DIR->desc == -1 means this directory is - known to be nonexistent, so set DIRDATA to an empty vector. - Return -1 (setting errno) if error, 0 otherwise. */ - -struct dirdata -{ - size_t nnames; /* Number of names. */ - char const **names; /* Sorted names of files in dir, followed by 0. */ - char *data; /* Allocated storage for file names. */ -}; - -/* Whether file names in directories should be compared with strcoll. */ -static bool locale_specific_sorting; - -/* Where to go if strcoll fails. */ -static jmp_buf failed_strcoll; - -static bool dir_loop (struct comparison const *, int); -static int compare_names_for_qsort (void const *, void const *); - - -/* Read a directory and get its vector of names. */ - -static bool -dir_read (struct file_data const *dir, struct dirdata *dirdata) -{ - register struct dirent *next; - register size_t i; - - /* Address of block containing the files that are described. */ - char const **names; - - /* Number of files in directory. */ - size_t nnames; - - /* Allocated and used storage for file name data. */ - char *data; - size_t data_alloc, data_used; - - dirdata->names = 0; - dirdata->data = 0; - nnames = 0; - data = 0; - - if (dir->desc != -1) - { - /* Open the directory and check for errors. */ - register DIR *reading = opendir (dir->name); - if (!reading) - return 0; - - /* Initialize the table of filenames. */ - - data_alloc = 512; - data_used = 0; - dirdata->data = data = xmalloc (data_alloc); - - /* Read the directory entries, and insert the subfiles - into the `data' table. */ - - while ((errno = 0, (next = readdir (reading)) != 0)) - { - char *d_name = next->d_name; - size_t d_size = NAMLEN (next) + 1; - - /* Ignore "." and "..". */ - if (d_name[0] == '.' - && (d_name[1] == 0 || (d_name[1] == '.' && d_name[2] == 0))) - continue; - - if (excluded_filename (excluded, d_name)) - continue; - - while (data_alloc < data_used + d_size) - { - if (PTRDIFF_MAX / 2 <= data_alloc) - xalloc_die (); - dirdata->data = data = xrealloc (data, data_alloc *= 2); - } - - memcpy (data + data_used, d_name, d_size); - data_used += d_size; - nnames++; - } - if (errno) - { - int e = errno; - closedir (reading); - errno = e; - return 0; - } -#if CLOSEDIR_VOID - closedir (reading); -#else - if (closedir (reading) != 0) - return 0; -#endif - } - - /* Create the `names' table from the `data' table. */ - if (PTRDIFF_MAX / sizeof *names - 1 <= nnames) - xalloc_die (); - dirdata->names = names = xmalloc ((nnames + 1) * sizeof *names); - dirdata->nnames = nnames; - for (i = 0; i < nnames; i++) - { - names[i] = data; - data += strlen (data) + 1; - } - names[nnames] = 0; - return 1; -} - -/* Compare file names, returning a value compatible with strcmp. */ - -static int -compare_names (char const *name1, char const *name2) -{ - if (ignore_file_name_case) - { - int r = strcasecmp (name1, name2); - if (r) - return r; - } - - if (locale_specific_sorting) - { - int r; - errno = 0; - r = strcoll (name1, name2); - if (errno) - { - error (0, errno, _("cannot compare file names `%s' and `%s'"), - name1, name2); - longjmp (failed_strcoll, 1); - } - if (r) - return r; - } - - return file_name_cmp (name1, name2); -} - -/* A wrapper for compare_names suitable as an argument for qsort. */ - -static int -compare_names_for_qsort (void const *file1, void const *file2) -{ - char const *const *f1 = file1; - char const *const *f2 = file2; - return compare_names (*f1, *f2); -} - -/* Compare the contents of two directories named in CMP. - This is a top-level routine; it does everything necessary for diff - on two directories. - - CMP->file[0].desc == -1 says directory CMP->file[0] doesn't exist, - but pretend it is empty. Likewise for CMP->file[1]. - - HANDLE_FILE is a caller-provided subroutine called to handle each file. - It gets three operands: CMP, name of file in dir 0, name of file in dir 1. - These names are relative to the original working directory. - - For a file that appears in only one of the dirs, one of the name-args - to HANDLE_FILE is zero. - - Returns the maximum of all the values returned by HANDLE_FILE, - or EXIT_TROUBLE if trouble is encountered in opening files. */ - -int -diff_dirs (struct comparison const *cmp, - int (*handle_file) (struct comparison const *, - char const *, char const *)) -{ - struct dirdata dirdata[2]; - int volatile val = EXIT_SUCCESS; - int i; - - if ((cmp->file[0].desc == -1 || dir_loop (cmp, 0)) - && (cmp->file[1].desc == -1 || dir_loop (cmp, 1))) - { - error (0, 0, "%s: recursive directory loop", - cmp->file[cmp->file[0].desc == -1].name); - return EXIT_TROUBLE; - } - - /* Get contents of both dirs. */ - for (i = 0; i < 2; i++) - if (! dir_read (&cmp->file[i], &dirdata[i])) - { - perror_with_name (cmp->file[i].name); - val = EXIT_TROUBLE; - } - - if (val == EXIT_SUCCESS) - { - char const **volatile names[2]; - names[0] = dirdata[0].names; - names[1] = dirdata[1].names; - - /* Use locale-specific sorting if possible, else native byte order. */ - locale_specific_sorting = 1; - if (setjmp (failed_strcoll)) - locale_specific_sorting = 0; - - /* Sort the directories. */ - for (i = 0; i < 2; i++) - qsort (names[i], dirdata[i].nnames, sizeof *dirdata[i].names, - compare_names_for_qsort); - - /* If `-S name' was given, and this is the topmost level of comparison, - ignore all file names less than the specified starting name. */ - - if (starting_file && ! cmp->parent) - { - while (*names[0] && compare_names (*names[0], starting_file) < 0) - names[0]++; - while (*names[1] && compare_names (*names[1], starting_file) < 0) - names[1]++; - } - - /* Loop while files remain in one or both dirs. */ - while (*names[0] || *names[1]) - { - /* Compare next name in dir 0 with next name in dir 1. - At the end of a dir, - pretend the "next name" in that dir is very large. */ - int nameorder = (!*names[0] ? 1 : !*names[1] ? -1 - : compare_names (*names[0], *names[1])); - int v1 = (*handle_file) (cmp, - 0 < nameorder ? 0 : *names[0]++, - nameorder < 0 ? 0 : *names[1]++); - if (val < v1) - val = v1; - } - } - - for (i = 0; i < 2; i++) - { - if (dirdata[i].names) - free (dirdata[i].names); - if (dirdata[i].data) - free (dirdata[i].data); - } - - return val; -} - -/* Return nonzero if CMP is looping recursively in argument I. */ - -static bool -dir_loop (struct comparison const *cmp, int i) -{ - struct comparison const *p = cmp; - while ((p = p->parent)) - if (0 < same_file (&p->file[i].stat, &cmp->file[i].stat)) - return 1; - return 0; -} diff --git a/src/bin/diffutils/src/ed.c b/src/bin/diffutils/src/ed.c deleted file mode 100644 index 5ac58a2163..0000000000 --- a/src/bin/diffutils/src/ed.c +++ /dev/null @@ -1,169 +0,0 @@ -/* Output routines for ed-script format. - - Copyright (C) 1988, 1989, 1991, 1992, 1993, 1995, 1998, 2001 Free - Software Foundation, Inc. - - This file is part of GNU DIFF. - - GNU DIFF is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GNU DIFF is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include "diff.h" - -static void print_ed_hunk (struct change *); -static void print_rcs_hunk (struct change *); -static void pr_forward_ed_hunk (struct change *); - -/* Print our script as ed commands. */ - -void -print_ed_script (struct change *script) -{ - print_script (script, find_reverse_change, print_ed_hunk); -} - -/* Print a hunk of an ed diff */ - -static void -print_ed_hunk (struct change *hunk) -{ - lin f0, l0, f1, l1; - enum changes changes; - -#ifdef DEBUG - debug_script (hunk); -#endif - - /* Determine range of line numbers involved in each file. */ - changes = analyze_hunk (hunk, &f0, &l0, &f1, &l1); - if (!changes) - return; - - begin_output (); - - /* Print out the line number header for this hunk */ - print_number_range (',', &files[0], f0, l0); - fprintf (outfile, "%c\n", change_letter[changes]); - - /* Print new/changed lines from second file, if needed */ - if (changes != OLD) - { - lin i; - for (i = f1; i <= l1; i++) - { - if (files[1].linbuf[i][0] == '.' && files[1].linbuf[i][1] == '\n') - { - /* The file's line is just a dot, and it would exit - insert mode. Precede the dot with another dot, exit - insert mode, remove the extra dot, and then resume - insert mode. */ - fprintf (outfile, "..\n.\ns/.//\na\n"); - } - else - print_1_line ("", &files[1].linbuf[i]); - } - - fprintf (outfile, ".\n"); - } -} - -/* Print change script in the style of ed commands, - but print the changes in the order they appear in the input files, - which means that the commands are not truly useful with ed. */ - -void -pr_forward_ed_script (struct change *script) -{ - print_script (script, find_change, pr_forward_ed_hunk); -} - -static void -pr_forward_ed_hunk (struct change *hunk) -{ - lin i, f0, l0, f1, l1; - - /* Determine range of line numbers involved in each file. */ - enum changes changes = analyze_hunk (hunk, &f0, &l0, &f1, &l1); - if (!changes) - return; - - begin_output (); - - fprintf (outfile, "%c", change_letter[changes]); - print_number_range (' ', files, f0, l0); - fprintf (outfile, "\n"); - - /* If deletion only, print just the number range. */ - - if (changes == OLD) - return; - - /* For insertion (with or without deletion), print the number range - and the lines from file 2. */ - - for (i = f1; i <= l1; i++) - print_1_line ("", &files[1].linbuf[i]); - - fprintf (outfile, ".\n"); -} - -/* Print in a format somewhat like ed commands - except that each insert command states the number of lines it inserts. - This format is used for RCS. */ - -void -print_rcs_script (struct change *script) -{ - print_script (script, find_change, print_rcs_hunk); -} - -/* Print a hunk of an RCS diff */ - -static void -print_rcs_hunk (struct change *hunk) -{ - lin i, f0, l0, f1, l1; - long tf0, tl0, tf1, tl1; - - /* Determine range of line numbers involved in each file. */ - enum changes changes = analyze_hunk (hunk, &f0, &l0, &f1, &l1); - if (!changes) - return; - - begin_output (); - - translate_range (&files[0], f0, l0, &tf0, &tl0); - - if (changes & OLD) - { - fprintf (outfile, "d"); - /* For deletion, print just the starting line number from file 0 - and the number of lines deleted. */ - fprintf (outfile, "%ld %ld\n", tf0, tf0 <= tl0 ? tl0 - tf0 + 1 : 1); - } - - if (changes & NEW) - { - fprintf (outfile, "a"); - - /* Take last-line-number from file 0 and # lines from file 1. */ - translate_range (&files[1], f1, l1, &tf1, &tl1); - fprintf (outfile, "%ld %ld\n", tl0, tf1 <= tl1 ? tl1 - tf1 + 1 : 1); - - /* Print the inserted lines. */ - for (i = f1; i <= l1; i++) - print_1_line ("", &files[1].linbuf[i]); - } -} diff --git a/src/bin/diffutils/src/ifdef.c b/src/bin/diffutils/src/ifdef.c deleted file mode 100644 index 69c2cf8e99..0000000000 --- a/src/bin/diffutils/src/ifdef.c +++ /dev/null @@ -1,424 +0,0 @@ -/* #ifdef-format output routines for GNU DIFF. - - Copyright (C) 1989, 1991, 1992, 1993, 1994, 2001, 2002 Free - Software Foundation, Inc. - - This file is part of GNU DIFF. - - GNU DIFF is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY. No author or distributor - accepts responsibility to anyone for the consequences of using it - or for whether it serves any particular purpose or works at all, - unless he says so in writing. Refer to the GNU DIFF General Public - License for full details. - - Everyone is granted permission to copy, modify and redistribute - GNU DIFF, but only under the conditions described in the - GNU DIFF General Public License. A copy of this license is - supposed to have been given to you along with GNU DIFF so you - can know your rights and responsibilities. It should be in a - file named COPYING. Among other things, the copyright notice - and this notice must be preserved on all copies. */ - -#include "diff.h" - -#include - -struct group -{ - struct file_data const *file; - lin from, upto; /* start and limit lines for this group of lines */ -}; - -static char const *format_group (FILE *, char const *, char, - struct group const *); -static char const *do_printf_spec (FILE *, char const *, - struct file_data const *, lin, - struct group const *); -static char const *scan_char_literal (char const *, char *); -static lin groups_letter_value (struct group const *, char); -static void format_ifdef (char const *, lin, lin, lin, lin); -static void print_ifdef_hunk (struct change *); -static void print_ifdef_lines (FILE *, char const *, struct group const *); - -static lin next_line; - -/* Print the edit-script SCRIPT as a merged #ifdef file. */ - -void -print_ifdef_script (struct change *script) -{ - next_line = - files[0].prefix_lines; - print_script (script, find_change, print_ifdef_hunk); - if (next_line < files[0].valid_lines) - { - begin_output (); - format_ifdef (group_format[UNCHANGED], next_line, files[0].valid_lines, - next_line - files[0].valid_lines + files[1].valid_lines, - files[1].valid_lines); - } -} - -/* Print a hunk of an ifdef diff. - This is a contiguous portion of a complete edit script, - describing changes in consecutive lines. */ - -static void -print_ifdef_hunk (struct change *hunk) -{ - lin first0, last0, first1, last1; - - /* Determine range of line numbers involved in each file. */ - enum changes changes = analyze_hunk (hunk, &first0, &last0, &first1, &last1); - if (!changes) - return; - - begin_output (); - - /* Print lines up to this change. */ - if (next_line < first0) - format_ifdef (group_format[UNCHANGED], next_line, first0, - next_line - first0 + first1, first1); - - /* Print this change. */ - next_line = last0 + 1; - format_ifdef (group_format[changes], first0, next_line, first1, last1 + 1); -} - -/* Print a set of lines according to FORMAT. - Lines BEG0 up to END0 are from the first file; - lines BEG1 up to END1 are from the second file. */ - -static void -format_ifdef (char const *format, lin beg0, lin end0, lin beg1, lin end1) -{ - struct group groups[2]; - - groups[0].file = &files[0]; - groups[0].from = beg0; - groups[0].upto = end0; - groups[1].file = &files[1]; - groups[1].from = beg1; - groups[1].upto = end1; - format_group (outfile, format, 0, groups); -} - -/* Print to file OUT a set of lines according to FORMAT. - The format ends at the first free instance of ENDCHAR. - Yield the address of the terminating character. - GROUPS specifies which lines to print. - If OUT is zero, do not actually print anything; just scan the format. */ - -static char const * -format_group (register FILE *out, char const *format, char endchar, - struct group const *groups) -{ - register char c; - register char const *f = format; - - while ((c = *f) != endchar && c != 0) - { - char const *f1 = ++f; - if (c == '%') - switch ((c = *f++)) - { - case '%': - break; - - case '(': - /* Print if-then-else format e.g. `%(n=1?thenpart:elsepart)'. */ - { - int i; - uintmax_t value[2]; - FILE *thenout, *elseout; - - for (i = 0; i < 2; i++) - { - if (ISDIGIT (*f)) - { - char *fend; - errno = 0; - value[i] = strtoumax (f, &fend, 10); - if (errno) - goto bad_format; - f = fend; - } - else - { - value[i] = groups_letter_value (groups, *f); - if (value[i] == -1) - goto bad_format; - f++; - } - if (*f++ != "=?"[i]) - goto bad_format; - } - if (value[0] == value[1]) - thenout = out, elseout = 0; - else - thenout = 0, elseout = out; - f = format_group (thenout, f, ':', groups); - if (*f) - { - f = format_group (elseout, f + 1, ')', groups); - if (*f) - f++; - } - } - continue; - - case '<': - /* Print lines deleted from first file. */ - print_ifdef_lines (out, line_format[OLD], &groups[0]); - continue; - - case '=': - /* Print common lines. */ - print_ifdef_lines (out, line_format[UNCHANGED], &groups[0]); - continue; - - case '>': - /* Print lines inserted from second file. */ - print_ifdef_lines (out, line_format[NEW], &groups[1]); - continue; - - default: - f = do_printf_spec (out, f - 2, 0, 0, groups); - if (f) - continue; - /* Fall through. */ - bad_format: - c = '%'; - f = f1; - break; - } - - if (out) - putc (c, out); - } - - return f; -} - -/* For the line group pair G, return the number corresponding to LETTER. - Return -1 if LETTER is not a group format letter. */ -static lin -groups_letter_value (struct group const *g, char letter) -{ - switch (letter) - { - case 'E': letter = 'e'; g++; break; - case 'F': letter = 'f'; g++; break; - case 'L': letter = 'l'; g++; break; - case 'M': letter = 'm'; g++; break; - case 'N': letter = 'n'; g++; break; - } - - switch (letter) - { - case 'e': return translate_line_number (g->file, g->from) - 1; - case 'f': return translate_line_number (g->file, g->from); - case 'l': return translate_line_number (g->file, g->upto) - 1; - case 'm': return translate_line_number (g->file, g->upto); - case 'n': return g->upto - g->from; - default: return -1; - } -} - -/* Print to file OUT, using FORMAT to print the line group GROUP. - But do nothing if OUT is zero. */ -static void -print_ifdef_lines (register FILE *out, char const *format, - struct group const *group) -{ - struct file_data const *file = group->file; - char const * const *linbuf = file->linbuf; - lin from = group->from, upto = group->upto; - - if (!out) - return; - - /* If possible, use a single fwrite; it's faster. */ - if (!expand_tabs && format[0] == '%') - { - if (format[1] == 'l' && format[2] == '\n' && !format[3] && from < upto) - { - fwrite (linbuf[from], sizeof (char), - linbuf[upto] + (linbuf[upto][-1] != '\n') - linbuf[from], - out); - return; - } - if (format[1] == 'L' && !format[2]) - { - fwrite (linbuf[from], sizeof (char), - linbuf[upto] - linbuf[from], out); - return; - } - } - - for (; from < upto; from++) - { - register char c; - register char const *f = format; - - while ((c = *f++) != 0) - { - char const *f1 = f; - if (c == '%') - switch ((c = *f++)) - { - case '%': - break; - - case 'l': - output_1_line (linbuf[from], - (linbuf[from + 1] - - (linbuf[from + 1][-1] == '\n')), - 0, 0); - continue; - - case 'L': - output_1_line (linbuf[from], linbuf[from + 1], 0, 0); - continue; - - default: - f = do_printf_spec (out, f - 2, file, from, 0); - if (f) - continue; - c = '%'; - f = f1; - break; - } - - putc (c, out); - } - } -} - -static char const * -do_printf_spec (FILE *out, char const *spec, - struct file_data const *file, lin n, - struct group const *groups) -{ - char const *f = spec; - char c; - char c1; - - /* Scan printf-style SPEC of the form %[-'0]*[0-9]*(.[0-9]*)?[cdoxX]. */ - /* assert (*f == '%'); */ - f++; - while ((c = *f++) == '-' || c == '\'' || c == '0') - continue; - while (ISDIGIT (c)) - c = *f++; - if (c == '.') - while (ISDIGIT (c = *f++)) - continue; - c1 = *f++; - - switch (c) - { - case 'c': - if (c1 != '\'') - return 0; - else - { - char value; - f = scan_char_literal (f, &value); - if (!f) - return 0; - if (out) - putc (value, out); - } - break; - - case 'd': case 'o': case 'x': case 'X': - { - lin value; - - if (file) - { - if (c1 != 'n') - return 0; - value = translate_line_number (file, n); - } - else - { - value = groups_letter_value (groups, c1); - if (value < 0) - return 0; - } - - if (out) - { - /* For example, if the spec is "%3xn", use the printf - format spec "%3lx". Here the spec prefix is "%3". */ - long long_value = value; - size_t spec_prefix_len = f - spec - 2; -#if HAVE_C_VARARRAYS - char format[spec_prefix_len + 3]; -#else - char *format = xmalloc (spec_prefix_len + 3); -#endif - char *p = format + spec_prefix_len; - memcpy (format, spec, spec_prefix_len); - *p++ = 'l'; - *p++ = c; - *p = '\0'; - fprintf (out, format, long_value); -#if ! HAVE_C_VARARRAYS - free (format); -#endif - } - } - break; - - default: - return 0; - } - - return f; -} - -/* Scan the character literal represented in the string LIT; LIT points just - after the initial apostrophe. Put the literal's value into *VALPTR. - Yield the address of the first character after the closing apostrophe, - or zero if the literal is ill-formed. */ -static char const * -scan_char_literal (char const *lit, char *valptr) -{ - register char const *p = lit; - char value; - ptrdiff_t digits; - char c = *p++; - - switch (c) - { - case 0: - case '\'': - return 0; - - case '\\': - value = 0; - while ((c = *p++) != '\'') - { - unsigned int digit = c - '0'; - if (8 <= digit) - return 0; - value = 8 * value + digit; - } - digits = p - lit - 2; - if (! (1 <= digits && digits <= 3)) - return 0; - break; - - default: - value = c; - if (*p++ != '\'') - return 0; - break; - } - - *valptr = value; - return p; -} diff --git a/src/bin/diffutils/src/io.c b/src/bin/diffutils/src/io.c deleted file mode 100644 index 3fee8836d6..0000000000 --- a/src/bin/diffutils/src/io.c +++ /dev/null @@ -1,855 +0,0 @@ -/* File I/O for GNU DIFF. - - Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1998, 2001, 2002 - Free Software Foundation, Inc. - - This file is part of GNU DIFF. - - GNU DIFF is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GNU DIFF is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include "diff.h" -#include -#include -#include -#include - -/* Rotate an unsigned value to the left. */ -#define ROL(v, n) ((v) << (n) | (v) >> (sizeof (v) * CHAR_BIT - (n))) - -/* Given a hash value and a new character, return a new hash value. */ -#define HASH(h, c) ((c) + ROL (h, 7)) - -/* The type of a hash value. */ -typedef size_t hash_value; -verify (hash_value_is_unsigned, ! TYPE_SIGNED (hash_value)); - -/* Lines are put into equivalence classes of lines that match in lines_differ. - Each equivalence class is represented by one of these structures, - but only while the classes are being computed. - Afterward, each class is represented by a number. */ -struct equivclass -{ - lin next; /* Next item in this bucket. */ - hash_value hash; /* Hash of lines in this class. */ - char const *line; /* A line that fits this class. */ - size_t length; /* That line's length, not counting its newline. */ -}; - -/* Hash-table: array of buckets, each being a chain of equivalence classes. - buckets[-1] is reserved for incomplete lines. */ -static lin *buckets; - -/* Number of buckets in the hash table array, not counting buckets[-1]. */ -static size_t nbuckets; - -/* Array in which the equivalence classes are allocated. - The bucket-chains go through the elements in this array. - The number of an equivalence class is its index in this array. */ -static struct equivclass *equivs; - -/* Index of first free element in the array `equivs'. */ -static lin equivs_index; - -/* Number of elements allocated in the array `equivs'. */ -static lin equivs_alloc; - -/* Read a block of data into a file buffer, checking for EOF and error. */ - -void -file_block_read (struct file_data *current, size_t size) -{ - if (size && ! current->eof) - { - size_t s = block_read (current->desc, - FILE_BUFFER (current) + current->buffered, size); - if (s == SIZE_MAX) - pfatal_with_name (current->name); - current->buffered += s; - current->eof = s < size; - } -} - -/* Check for binary files and compare them for exact identity. */ - -/* Return 1 if BUF contains a non text character. - SIZE is the number of characters in BUF. */ - -#define binary_file_p(buf, size) (memchr (buf, 0, size) != 0) - -/* Get ready to read the current file. - Return nonzero if SKIP_TEST is zero, - and if it appears to be a binary file. */ - -static bool -sip (struct file_data *current, bool skip_test) -{ - /* If we have a nonexistent file at this stage, treat it as empty. */ - if (current->desc < 0) - { - /* Leave room for a sentinel. */ - current->bufsize = sizeof (word); - current->buffer = xmalloc (current->bufsize); - } - else - { - current->bufsize = buffer_lcm (sizeof (word), - STAT_BLOCKSIZE (current->stat), - PTRDIFF_MAX - 2 * sizeof (word)); - current->buffer = xmalloc (current->bufsize); - - if (! skip_test) - { - /* Check first part of file to see if it's a binary file. */ - - bool was_binary = set_binary_mode (current->desc, 1); - off_t buffered; - file_block_read (current, current->bufsize); - buffered = current->buffered; - - if (! was_binary) - { - /* Revert to text mode and seek back to the beginning to - reread the file. Use relative seek, since file - descriptors like stdin might not start at offset - zero. */ - - if (lseek (current->desc, - buffered, SEEK_CUR) == -1) - pfatal_with_name (current->name); - set_binary_mode (current->desc, 0); - current->buffered = 0; - current->eof = 0; - } - - return binary_file_p (current->buffer, buffered); - } - } - - current->buffered = 0; - current->eof = 0; - return 0; -} - -/* Slurp the rest of the current file completely into memory. */ - -static void -slurp (struct file_data *current) -{ - size_t cc; - - if (current->desc < 0) - { - /* The file is nonexistent. */ - return; - } - - if (S_ISREG (current->stat.st_mode)) - { - /* It's a regular file; slurp in the rest all at once. */ - - /* Get the size out of the stat block. - Allocate just enough room for appended newline plus word sentinel, - plus word-alignment since we want the buffer word-aligned. */ - size_t file_size = current->stat.st_size; - cc = file_size + 2 * sizeof (word) - file_size % sizeof (word); - if (file_size != current->stat.st_size || cc < file_size - || PTRDIFF_MAX <= cc) - xalloc_die (); - - if (current->bufsize < cc) - { - current->bufsize = cc; - current->buffer = xrealloc (current->buffer, cc); - } - - /* Try to read at least 1 more byte than the size indicates, to - detect whether the file is growing. This is a nicety for - users who run 'diff' on files while they are changing. */ - - if (current->buffered <= file_size) - { - file_block_read (current, file_size + 1 - current->buffered); - if (current->buffered <= file_size) - return; - } - } - - /* It's not a regular file, or it's a growing regular file; read it, - growing the buffer as needed. */ - - file_block_read (current, current->bufsize - current->buffered); - - if (current->buffered) - { - while (current->buffered == current->bufsize) - { - if (PTRDIFF_MAX / 2 - sizeof (word) < current->bufsize) - xalloc_die (); - current->bufsize *= 2; - current->buffer = xrealloc (current->buffer, current->bufsize); - file_block_read (current, current->bufsize - current->buffered); - } - - /* Allocate just enough room for appended newline plus word - sentinel, plus word-alignment. */ - cc = current->buffered + 2 * sizeof (word); - current->bufsize = cc - cc % sizeof (word); - current->buffer = xrealloc (current->buffer, current->bufsize); - } -} - -/* Split the file into lines, simultaneously computing the equivalence - class for each line. */ - -static void -find_and_hash_each_line (struct file_data *current) -{ - hash_value h; - unsigned char const *p = (unsigned char const *) current->prefix_end; - unsigned char c; - lin i, *bucket; - size_t length; - - /* Cache often-used quantities in local variables to help the compiler. */ - char const **linbuf = current->linbuf; - lin alloc_lines = current->alloc_lines; - lin line = 0; - lin linbuf_base = current->linbuf_base; - lin *cureqs = xmalloc (alloc_lines * sizeof *cureqs); - struct equivclass *eqs = equivs; - lin eqs_index = equivs_index; - lin eqs_alloc = equivs_alloc; - char const *suffix_begin = current->suffix_begin; - char const *bufend = FILE_BUFFER (current) + current->buffered; - bool diff_length_compare_anyway = - ignore_white_space != IGNORE_NO_WHITE_SPACE; - bool same_length_diff_contents_compare_anyway = - diff_length_compare_anyway | ignore_case; - - while ((char const *) p < suffix_begin) - { - char const *ip = (char const *) p; - - h = 0; - - /* Hash this line until we find a newline. */ - if (ignore_case) - switch (ignore_white_space) - { - case IGNORE_ALL_SPACE: - while ((c = *p++) != '\n') - if (! ISSPACE (c)) - h = HASH (h, TOLOWER (c)); - break; - - case IGNORE_SPACE_CHANGE: - while ((c = *p++) != '\n') - { - if (ISSPACE (c)) - { - do - if ((c = *p++) == '\n') - goto hashing_done; - while (ISSPACE (c)); - - h = HASH (h, ' '); - } - - /* C is now the first non-space. */ - h = HASH (h, TOLOWER (c)); - } - break; - - case IGNORE_TAB_EXPANSION: - { - size_t column = 0; - while ((c = *p++) != '\n') - { - int repetitions = 1; - - switch (c) - { - case '\b': - column -= 0 < column; - break; - - case '\t': - c = ' '; - repetitions = TAB_WIDTH - column % TAB_WIDTH; - column += repetitions; - break; - - case '\r': - column = 0; - break; - - default: - c = TOLOWER (c); - column++; - break; - } - - do - h = HASH (h, c); - while (--repetitions != 0); - } - } - break; - - default: - while ((c = *p++) != '\n') - h = HASH (h, TOLOWER (c)); - break; - } - else - switch (ignore_white_space) - { - case IGNORE_ALL_SPACE: - while ((c = *p++) != '\n') - if (! ISSPACE (c)) - h = HASH (h, c); - break; - - case IGNORE_SPACE_CHANGE: - while ((c = *p++) != '\n') - { - if (ISSPACE (c)) - { - do - if ((c = *p++) == '\n') - goto hashing_done; - while (ISSPACE (c)); - - h = HASH (h, ' '); - } - - /* C is now the first non-space. */ - h = HASH (h, c); - } - break; - - case IGNORE_TAB_EXPANSION: - { - size_t column = 0; - while ((c = *p++) != '\n') - { - int repetitions = 1; - - switch (c) - { - case '\b': - column -= 0 < column; - break; - - case '\t': - c = ' '; - repetitions = TAB_WIDTH - column % TAB_WIDTH; - column += repetitions; - break; - - case '\r': - column = 0; - break; - - default: - column++; - break; - } - - do - h = HASH (h, c); - while (--repetitions != 0); - } - } - break; - - default: - while ((c = *p++) != '\n') - h = HASH (h, c); - break; - } - - hashing_done:; - - bucket = &buckets[h % nbuckets]; - length = (char const *) p - ip - 1; - - if ((char const *) p == bufend - && current->missing_newline - && ROBUST_OUTPUT_STYLE (output_style)) - { - /* This line is incomplete. If this is significant, - put the line into buckets[-1]. */ - if (ignore_white_space < IGNORE_SPACE_CHANGE) - bucket = &buckets[-1]; - - /* Omit the inserted newline when computing linbuf later. */ - p--; - bufend = suffix_begin = (char const *) p; - } - - for (i = *bucket; ; i = eqs[i].next) - if (!i) - { - /* Create a new equivalence class in this bucket. */ - i = eqs_index++; - if (i == eqs_alloc) - { - if (PTRDIFF_MAX / (2 * sizeof *eqs) <= eqs_alloc) - xalloc_die (); - eqs_alloc *= 2; - eqs = xrealloc (eqs, eqs_alloc * sizeof *eqs); - } - eqs[i].next = *bucket; - eqs[i].hash = h; - eqs[i].line = ip; - eqs[i].length = length; - *bucket = i; - break; - } - else if (eqs[i].hash == h) - { - char const *eqline = eqs[i].line; - - /* Reuse existing class if lines_differ reports the lines - equal. */ - if (eqs[i].length == length) - { - /* Reuse existing equivalence class if the lines are identical. - This detects the common case of exact identity - faster than lines_differ would. */ - if (memcmp (eqline, ip, length) == 0) - break; - if (!same_length_diff_contents_compare_anyway) - continue; - } - else if (!diff_length_compare_anyway) - continue; - - if (! lines_differ (eqline, ip)) - break; - } - - /* Maybe increase the size of the line table. */ - if (line == alloc_lines) - { - /* Double (alloc_lines - linbuf_base) by adding to alloc_lines. */ - if (PTRDIFF_MAX / 3 <= alloc_lines - || PTRDIFF_MAX / sizeof *cureqs <= 2 * alloc_lines - linbuf_base - || PTRDIFF_MAX / sizeof *linbuf <= alloc_lines - linbuf_base) - xalloc_die (); - alloc_lines = 2 * alloc_lines - linbuf_base; - cureqs = xrealloc (cureqs, alloc_lines * sizeof *cureqs); - linbuf += linbuf_base; - linbuf = xrealloc (linbuf, - (alloc_lines - linbuf_base) * sizeof *linbuf); - linbuf -= linbuf_base; - } - linbuf[line] = ip; - cureqs[line] = i; - ++line; - } - - current->buffered_lines = line; - - for (i = 0; ; i++) - { - /* Record the line start for lines in the suffix that we care about. - Record one more line start than lines, - so that we can compute the length of any buffered line. */ - if (line == alloc_lines) - { - /* Double (alloc_lines - linbuf_base) by adding to alloc_lines. */ - if (PTRDIFF_MAX / 3 <= alloc_lines - || PTRDIFF_MAX / sizeof *cureqs <= 2 * alloc_lines - linbuf_base - || PTRDIFF_MAX / sizeof *linbuf <= alloc_lines - linbuf_base) - xalloc_die (); - alloc_lines = 2 * alloc_lines - linbuf_base; - linbuf += linbuf_base; - linbuf = xrealloc (linbuf, - (alloc_lines - linbuf_base) * sizeof *linbuf); - linbuf -= linbuf_base; - } - linbuf[line] = (char const *) p; - - if ((char const *) p == bufend) - break; - - if (context <= i && no_diff_means_no_output) - break; - - line++; - - while (*p++ != '\n') - continue; - } - - /* Done with cache in local variables. */ - current->linbuf = linbuf; - current->valid_lines = line; - current->alloc_lines = alloc_lines; - current->equivs = cureqs; - equivs = eqs; - equivs_alloc = eqs_alloc; - equivs_index = eqs_index; -} - -/* Prepare the text. Make sure the text end is initialized. - Make sure text ends in a newline, - but remember that we had to add one. - Strip trailing CRs, if that was requested. */ - -static void -prepare_text (struct file_data *current) -{ - size_t buffered = current->buffered; - char *p = FILE_BUFFER (current); - char *dst; - - if (buffered == 0 || p[buffered - 1] == '\n') - current->missing_newline = 0; - else - { - p[buffered++] = '\n'; - current->missing_newline = 1; - } - - if (!p) - return; - - /* Don't use uninitialized storage when planting or using sentinels. */ - memset (p + buffered, 0, sizeof (word)); - - if (strip_trailing_cr && (dst = memchr (p, '\r', buffered))) - { - char const *src = dst; - char const *srclim = p + buffered; - - do - dst += ! ((*dst = *src++) == '\r' && *src == '\n'); - while (src < srclim); - - buffered -= src - dst; - } - - current->buffered = buffered; -} - -/* We have found N lines in a buffer of size S; guess the - proportionate number of lines that will be found in a buffer of - size T. However, do not guess a number of lines so large that the - resulting line table might cause overflow in size calculations. */ -static lin -guess_lines (lin n, size_t s, size_t t) -{ - size_t guessed_bytes_per_line = n < 10 ? 32 : s / (n - 1); - lin guessed_lines = MAX (1, t / guessed_bytes_per_line); - return MIN (guessed_lines, PTRDIFF_MAX / (2 * sizeof (char *) + 1) - 5) + 5; -} - -/* Given a vector of two file_data objects, find the identical - prefixes and suffixes of each object. */ - -static void -find_identical_ends (struct file_data filevec[]) -{ - word *w0, *w1; - char *p0, *p1, *buffer0, *buffer1; - char const *end0, *beg0; - char const **linbuf0, **linbuf1; - lin i, lines; - size_t n0, n1; - lin alloc_lines0, alloc_lines1; - lin buffered_prefix, prefix_count, prefix_mask; - lin middle_guess, suffix_guess; - - slurp (&filevec[0]); - prepare_text (&filevec[0]); - if (filevec[0].desc != filevec[1].desc) - { - slurp (&filevec[1]); - prepare_text (&filevec[1]); - } - else - { - filevec[1].buffer = filevec[0].buffer; - filevec[1].bufsize = filevec[0].bufsize; - filevec[1].buffered = filevec[0].buffered; - filevec[1].missing_newline = filevec[0].missing_newline; - } - - /* Find identical prefix. */ - - w0 = filevec[0].buffer; - w1 = filevec[1].buffer; - p0 = buffer0 = (char *) w0; - p1 = buffer1 = (char *) w1; - n0 = filevec[0].buffered; - n1 = filevec[1].buffered; - - if (p0 == p1) - /* The buffers are the same; sentinels won't work. */ - p0 = p1 += n1; - else - { - /* Insert end sentinels, in this case characters that are guaranteed - to make the equality test false, and thus terminate the loop. */ - - if (n0 < n1) - p0[n0] = ~p1[n0]; - else - p1[n1] = ~p0[n1]; - - /* Loop until first mismatch, or to the sentinel characters. */ - - /* Compare a word at a time for speed. */ - while (*w0 == *w1) - w0++, w1++; - - /* Do the last few bytes of comparison a byte at a time. */ - p0 = (char *) w0; - p1 = (char *) w1; - while (*p0 == *p1) - p0++, p1++; - - /* Don't mistakenly count missing newline as part of prefix. */ - if (ROBUST_OUTPUT_STYLE (output_style) - && ((buffer0 + n0 - filevec[0].missing_newline < p0) - != - (buffer1 + n1 - filevec[1].missing_newline < p1))) - p0--, p1--; - } - - /* Now P0 and P1 point at the first nonmatching characters. */ - - /* Skip back to last line-beginning in the prefix, - and then discard up to HORIZON_LINES lines from the prefix. */ - i = horizon_lines; - while (p0 != buffer0 && (p0[-1] != '\n' || i--)) - p0--, p1--; - - /* Record the prefix. */ - filevec[0].prefix_end = p0; - filevec[1].prefix_end = p1; - - /* Find identical suffix. */ - - /* P0 and P1 point beyond the last chars not yet compared. */ - p0 = buffer0 + n0; - p1 = buffer1 + n1; - - if (! ROBUST_OUTPUT_STYLE (output_style) - || filevec[0].missing_newline == filevec[1].missing_newline) - { - end0 = p0; /* Addr of last char in file 0. */ - - /* Get value of P0 at which we should stop scanning backward: - this is when either P0 or P1 points just past the last char - of the identical prefix. */ - beg0 = filevec[0].prefix_end + (n0 < n1 ? 0 : n0 - n1); - - /* Scan back until chars don't match or we reach that point. */ - for (; p0 != beg0; p0--, p1--) - if (*p0 != *p1) - { - /* Point at the first char of the matching suffix. */ - beg0 = p0; - break; - } - - /* Are we at a line-beginning in both files? If not, add the rest of - this line to the main body. Discard up to HORIZON_LINES lines from - the identical suffix. Also, discard one extra line, - because shift_boundaries may need it. */ - i = horizon_lines + !((buffer0 == p0 || p0[-1] == '\n') - && - (buffer1 == p1 || p1[-1] == '\n')); - while (i-- && p0 != end0) - while (*p0++ != '\n') - continue; - - p1 += p0 - beg0; - } - - /* Record the suffix. */ - filevec[0].suffix_begin = p0; - filevec[1].suffix_begin = p1; - - /* Calculate number of lines of prefix to save. - - prefix_count == 0 means save the whole prefix; - we need this for options like -D that output the whole file, - or for enormous contexts (to avoid worrying about arithmetic overflow). - We also need it for options like -F that output some preceding line; - at least we will need to find the last few lines, - but since we don't know how many, it's easiest to find them all. - - Otherwise, prefix_count != 0. Save just prefix_count lines at start - of the line buffer; they'll be moved to the proper location later. - Handle 1 more line than the context says (because we count 1 too many), - rounded up to the next power of 2 to speed index computation. */ - - if (no_diff_means_no_output && ! function_regexp.fastmap - && context < LIN_MAX / 4 && context < n0) - { - middle_guess = guess_lines (0, 0, p0 - filevec[0].prefix_end); - suffix_guess = guess_lines (0, 0, buffer0 + n0 - p0); - for (prefix_count = 1; prefix_count <= context; prefix_count *= 2) - continue; - alloc_lines0 = (prefix_count + middle_guess - + MIN (context, suffix_guess)); - } - else - { - prefix_count = 0; - alloc_lines0 = guess_lines (0, 0, n0); - } - - prefix_mask = prefix_count - 1; - lines = 0; - linbuf0 = xmalloc (alloc_lines0 * sizeof *linbuf0); - p0 = buffer0; - - /* If the prefix is needed, find the prefix lines. */ - if (! (no_diff_means_no_output - && filevec[0].prefix_end == p0 - && filevec[1].prefix_end == p1)) - { - end0 = filevec[0].prefix_end; - while (p0 != end0) - { - lin l = lines++ & prefix_mask; - if (l == alloc_lines0) - { - if (PTRDIFF_MAX / (2 * sizeof *linbuf0) <= alloc_lines0) - xalloc_die (); - alloc_lines0 *= 2; - linbuf0 = xrealloc (linbuf0, alloc_lines0 * sizeof *linbuf0); - } - linbuf0[l] = p0; - while (*p0++ != '\n') - continue; - } - } - buffered_prefix = prefix_count && context < lines ? context : lines; - - /* Allocate line buffer 1. */ - - middle_guess = guess_lines (lines, p0 - buffer0, p1 - filevec[1].prefix_end); - suffix_guess = guess_lines (lines, p0 - buffer0, buffer1 + n1 - p1); - alloc_lines1 = buffered_prefix + middle_guess + MIN (context, suffix_guess); - if (alloc_lines1 < buffered_prefix - || PTRDIFF_MAX / sizeof *linbuf1 <= alloc_lines1) - xalloc_die (); - linbuf1 = xmalloc (alloc_lines1 * sizeof *linbuf1); - - if (buffered_prefix != lines) - { - /* Rotate prefix lines to proper location. */ - for (i = 0; i < buffered_prefix; i++) - linbuf1[i] = linbuf0[(lines - context + i) & prefix_mask]; - for (i = 0; i < buffered_prefix; i++) - linbuf0[i] = linbuf1[i]; - } - - /* Initialize line buffer 1 from line buffer 0. */ - for (i = 0; i < buffered_prefix; i++) - linbuf1[i] = linbuf0[i] - buffer0 + buffer1; - - /* Record the line buffer, adjusted so that - linbuf[0] points at the first differing line. */ - filevec[0].linbuf = linbuf0 + buffered_prefix; - filevec[1].linbuf = linbuf1 + buffered_prefix; - filevec[0].linbuf_base = filevec[1].linbuf_base = - buffered_prefix; - filevec[0].alloc_lines = alloc_lines0 - buffered_prefix; - filevec[1].alloc_lines = alloc_lines1 - buffered_prefix; - filevec[0].prefix_lines = filevec[1].prefix_lines = lines; -} - -/* If 1 < k, then (2**k - prime_offset[k]) is the largest prime less - than 2**k. This table is derived from Chris K. Caldwell's list - . */ - -static unsigned char const prime_offset[] = -{ - 0, 0, 1, 1, 3, 1, 3, 1, 5, 3, 3, 9, 3, 1, 3, 19, 15, 1, 5, 1, 3, 9, 3, - 15, 3, 39, 5, 39, 57, 3, 35, 1, 5, 9, 41, 31, 5, 25, 45, 7, 87, 21, - 11, 57, 17, 55, 21, 115, 59, 81, 27, 129, 47, 111, 33, 55, 5, 13, 27, - 55, 93, 1, 57, 25 -}; - -/* Verify that this host's size_t is not too wide for the above table. */ - -verify (enough_prime_offsets, - sizeof (size_t) * CHAR_BIT <= sizeof prime_offset); - -/* Given a vector of two file_data objects, read the file associated - with each one, and build the table of equivalence classes. - Return nonzero if either file appears to be a binary file. - If PRETEND_BINARY is nonzero, pretend they are binary regardless. */ - -bool -read_files (struct file_data filevec[], bool pretend_binary) -{ - int i; - bool skip_test = text | pretend_binary; - bool appears_binary = pretend_binary | sip (&filevec[0], skip_test); - - if (filevec[0].desc != filevec[1].desc) - appears_binary |= sip (&filevec[1], skip_test | appears_binary); - else - { - filevec[1].buffer = filevec[0].buffer; - filevec[1].bufsize = filevec[0].bufsize; - filevec[1].buffered = filevec[0].buffered; - } - if (appears_binary) - { - set_binary_mode (filevec[0].desc, 1); - set_binary_mode (filevec[1].desc, 1); - return 1; - } - - find_identical_ends (filevec); - - equivs_alloc = filevec[0].alloc_lines + filevec[1].alloc_lines + 1; - if (PTRDIFF_MAX / sizeof *equivs <= equivs_alloc) - xalloc_die (); - equivs = xmalloc (equivs_alloc * sizeof *equivs); - /* Equivalence class 0 is permanently safe for lines that were not - hashed. Real equivalence classes start at 1. */ - equivs_index = 1; - - /* Allocate (one plus) a prime number of hash buckets. Use a prime - number between 1/3 and 2/3 of the value of equiv_allocs, - approximately. */ - for (i = 9; (size_t) 1 << i < equivs_alloc / 3; i++) - continue; - nbuckets = ((size_t) 1 << i) - prime_offset[i]; - if (PTRDIFF_MAX / sizeof *buckets <= nbuckets) - xalloc_die (); - buckets = zalloc ((nbuckets + 1) * sizeof *buckets); - buckets++; - - for (i = 0; i < 2; i++) - find_and_hash_each_line (&filevec[i]); - - filevec[0].equiv_max = filevec[1].equiv_max = equivs_index; - - free (equivs); - free (buckets - 1); - - return 0; -} diff --git a/src/bin/diffutils/src/normal.c b/src/bin/diffutils/src/normal.c deleted file mode 100644 index 4a01596544..0000000000 --- a/src/bin/diffutils/src/normal.c +++ /dev/null @@ -1,71 +0,0 @@ -/* Normal-format output routines for GNU DIFF. - - Copyright (C) 1988, 1989, 1993, 1995, 1998, 2001 Free Software - Foundation, Inc. - - This file is part of GNU DIFF. - - GNU DIFF is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GNU DIFF is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include "diff.h" - -static void print_normal_hunk (struct change *); - -/* Print the edit-script SCRIPT as a normal diff. - INF points to an array of descriptions of the two files. */ - -void -print_normal_script (struct change *script) -{ - print_script (script, find_change, print_normal_hunk); -} - -/* Print a hunk of a normal diff. - This is a contiguous portion of a complete edit script, - describing changes in consecutive lines. */ - -static void -print_normal_hunk (struct change *hunk) -{ - lin first0, last0, first1, last1; - register lin i; - - /* Determine range of line numbers involved in each file. */ - enum changes changes = analyze_hunk (hunk, &first0, &last0, &first1, &last1); - if (!changes) - return; - - begin_output (); - - /* Print out the line number header for this hunk */ - print_number_range (',', &files[0], first0, last0); - fprintf (outfile, "%c", change_letter[changes]); - print_number_range (',', &files[1], first1, last1); - fprintf (outfile, "\n"); - - /* Print the lines that the first file has. */ - if (changes & OLD) - for (i = first0; i <= last0; i++) - print_1_line ("<", &files[0].linbuf[i]); - - if (changes == CHANGED) - fprintf (outfile, "---\n"); - - /* Print the lines that the second file has. */ - if (changes & NEW) - for (i = first1; i <= last1; i++) - print_1_line (">", &files[1].linbuf[i]); -} diff --git a/src/bin/diffutils/src/sdiff.c b/src/bin/diffutils/src/sdiff.c deleted file mode 100644 index 45fc52d474..0000000000 --- a/src/bin/diffutils/src/sdiff.c +++ /dev/null @@ -1,1220 +0,0 @@ -/* sdiff - side-by-side merge of file differences - - Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 2001, 2002 Free - Software Foundation, Inc. - - This file is part of GNU DIFF. - - GNU DIFF is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GNU DIFF is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include "system.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -static char const authorship_msgid[] = N_("Written by Thomas Lord."); - -static char const copyright_string[] = - "Copyright (C) 2002 Free Software Foundation, Inc."; - -extern char const version_string[]; - -/* Size of chunks read from files which must be parsed into lines. */ -#define SDIFF_BUFSIZE ((size_t) 65536) - -char *program_name; - -static char const *editor_program = DEFAULT_EDITOR_PROGRAM; -static char const **diffargv; - -static char * volatile tmpname; -static FILE *tmp; - -#if HAVE_WORKING_FORK || HAVE_WORKING_VFORK -static pid_t volatile diffpid; -#endif - -struct line_filter; - -static RETSIGTYPE catchsig (int); -static bool edit (struct line_filter *, char const *, lin, lin, struct line_filter *, char const *, lin, lin, FILE *); -static bool interact (struct line_filter *, struct line_filter *, char const *, struct line_filter *, char const *, FILE *); -static void checksigs (void); -static void diffarg (char const *); -static void fatal (char const *) __attribute__((noreturn)); -static void perror_fatal (char const *) __attribute__((noreturn)); -static void trapsigs (void); -static void untrapsig (int); - -#define NUM_SIGS (sizeof sigs / sizeof *sigs) -static int const sigs[] = { -#ifdef SIGHUP - SIGHUP, -#endif -#ifdef SIGQUIT - SIGQUIT, -#endif -#ifdef SIGTERM - SIGTERM, -#endif -#ifdef SIGXCPU - SIGXCPU, -#endif -#ifdef SIGXFSZ - SIGXFSZ, -#endif - SIGINT, - SIGPIPE -}; -#define handler_index_of_SIGINT (NUM_SIGS - 2) -#define handler_index_of_SIGPIPE (NUM_SIGS - 1) - -#if HAVE_SIGACTION - /* Prefer `sigaction' if available, since `signal' can lose signals. */ - static struct sigaction initial_action[NUM_SIGS]; -# define initial_handler(i) (initial_action[i].sa_handler) - static void signal_handler (int, RETSIGTYPE (*) (int)); -#else - static RETSIGTYPE (*initial_action[NUM_SIGS]) (); -# define initial_handler(i) (initial_action[i]) -# define signal_handler(sig, handler) signal (sig, handler) -#endif - -#if ! HAVE_SIGPROCMASK -# define sigset_t int -# define sigemptyset(s) (*(s) = 0) -# ifndef sigmask -# define sigmask(sig) (1 << ((sig) - 1)) -# endif -# define sigaddset(s, sig) (*(s) |= sigmask (sig)) -# ifndef SIG_BLOCK -# define SIG_BLOCK 0 -# endif -# ifndef SIG_SETMASK -# define SIG_SETMASK (! SIG_BLOCK) -# endif -# define sigprocmask(how, n, o) \ - ((how) == SIG_BLOCK ? *(o) = sigblock (*(n)) : sigsetmask (*(n))) -#endif - -static bool diraccess (char const *); -static int temporary_file (void); - -/* Options: */ - -/* Name of output file if -o specified. */ -static char const *output; - -/* Do not print common lines. */ -static bool suppress_common_lines; - -/* Value for the long option that does not have single-letter equivalents. */ -enum -{ - DIFF_PROGRAM_OPTION = CHAR_MAX + 1, - HELP_OPTION, - STRIP_TRAILING_CR_OPTION -}; - -static struct option const longopts[] = -{ - {"diff-program", 1, 0, DIFF_PROGRAM_OPTION}, - {"expand-tabs", 0, 0, 't'}, - {"help", 0, 0, HELP_OPTION}, - {"ignore-all-space", 0, 0, 'W'}, /* swap W and w for historical reasons */ - {"ignore-blank-lines", 0, 0, 'B'}, - {"ignore-case", 0, 0, 'i'}, - {"ignore-matching-lines", 1, 0, 'I'}, - {"ignore-space-change", 0, 0, 'b'}, - {"ignore-tab-expansion", 0, 0, 'E'}, - {"left-column", 0, 0, 'l'}, - {"minimal", 0, 0, 'd'}, - {"output", 1, 0, 'o'}, - {"speed-large-files", 0, 0, 'H'}, - {"strip-trailing-cr", 0, 0, STRIP_TRAILING_CR_OPTION}, - {"suppress-common-lines", 0, 0, 's'}, - {"text", 0, 0, 'a'}, - {"version", 0, 0, 'v'}, - {"width", 1, 0, 'w'}, - {0, 0, 0, 0} -}; - -static void try_help (char const *, char const *) __attribute__((noreturn)); -static void -try_help (char const *reason_msgid, char const *operand) -{ - if (reason_msgid) - error (0, 0, _(reason_msgid), operand); - error (EXIT_TROUBLE, 0, _("Try `%s --help' for more information."), - program_name); - abort (); -} - -static void -check_stdout (void) -{ - if (ferror (stdout)) - fatal ("write failed"); - else if (fclose (stdout) != 0) - perror_fatal (_("standard output")); -} - -static char const * const option_help_msgid[] = { - N_("-o FILE --output=FILE Operate interactively, sending output to FILE."), - "", - N_("-i --ignore-case Consider upper- and lower-case to be the same."), - N_("-E --ignore-tab-expansion Ignore changes due to tab expansion."), - N_("-b --ignore-space-change Ignore changes in the amount of white space."), - N_("-W --ignore-all-space Ignore all white space."), - N_("-B --ignore-blank-lines Ignore changes whose lines are all blank."), - N_("-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE."), - N_("--strip-trailing-cr Strip trailing carriage return on input."), - N_("-a --text Treat all files as text."), - "", - N_("-w NUM --width=NUM Output at most NUM (default 130) columns per line."), - N_("-l --left-column Output only the left column of common lines."), - N_("-s --suppress-common-lines Do not output common lines."), - "", - N_("-t --expand-tabs Expand tabs to spaces in output."), - "", - N_("-d --minimal Try hard to find a smaller set of changes."), - N_("-H --speed-large-files Assume large files and many scattered small changes."), - N_("--diff-program=PROGRAM Use PROGRAM to compare files."), - "", - N_("-v --version Output version info."), - N_("--help Output this help."), - 0 -}; - -static void -usage (void) -{ - char const * const *p; - - printf (_("Usage: %s [OPTION]... FILE1 FILE2\n"), program_name); - printf ("%s\n\n", _("Side-by-side merge of file differences.")); - for (p = option_help_msgid; *p; p++) - if (**p) - printf (" %s\n", _(*p)); - else - putchar ('\n'); - printf ("\n%s\n\n%s\n", - _("If a FILE is `-', read standard input."), - _("Report bugs to .")); -} - -static void -cleanup (void) -{ -#if HAVE_WORKING_FORK || HAVE_WORKING_VFORK - if (0 < diffpid) - kill (diffpid, SIGPIPE); -#endif - if (tmpname) - unlink (tmpname); -} - -static void exiterr (void) __attribute__((noreturn)); -static void -exiterr (void) -{ - cleanup (); - untrapsig (0); - checksigs (); - exit (EXIT_TROUBLE); -} - -static void -fatal (char const *msgid) -{ - error (0, 0, "%s", _(msgid)); - exiterr (); -} - -static void -perror_fatal (char const *msg) -{ - int e = errno; - checksigs (); - error (0, e, "%s", msg); - exiterr (); -} - -static void -ck_editor_status (int errnum, int status) -{ - if (errnum | status) - { - char const *failure_msgid = N_("subsidiary program `%s' failed"); - if (! errnum && WIFEXITED (status)) - switch (WEXITSTATUS (status)) - { - case 126: - failure_msgid = N_("subsidiary program `%s' not executable"); - break; - case 127: - failure_msgid = N_("subsidiary program `%s' not found"); - break; - } - error (0, errnum, _(failure_msgid), editor_program); - exiterr (); - } -} - -static FILE * -ck_fopen (char const *fname, char const *type) -{ - FILE *r = fopen (fname, type); - if (! r) - perror_fatal (fname); - return r; -} - -static void -ck_fclose (FILE *f) -{ - if (fclose (f)) - perror_fatal ("fclose"); -} - -static size_t -ck_fread (char *buf, size_t size, FILE *f) -{ - size_t r = fread (buf, sizeof (char), size, f); - if (r == 0 && ferror (f)) - perror_fatal (_("read failed")); - return r; -} - -static void -ck_fwrite (char const *buf, size_t size, FILE *f) -{ - if (fwrite (buf, sizeof (char), size, f) != size) - perror_fatal (_("write failed")); -} - -static void -ck_fflush (FILE *f) -{ - if (fflush (f) != 0) - perror_fatal (_("write failed")); -} - -static char const * -expand_name (char *name, bool is_dir, char const *other_name) -{ - if (strcmp (name, "-") == 0) - fatal ("cannot interactively merge standard input"); - if (! is_dir) - return name; - else - { - /* Yield NAME/BASE, where BASE is OTHER_NAME's basename. */ - char const *base = base_name (other_name); - size_t namelen = strlen (name), baselen = strlen (base); - bool insert_slash = *base_name (name) && name[namelen - 1] != '/'; - char *r = xmalloc (namelen + insert_slash + baselen + 1); - memcpy (r, name, namelen); - r[namelen] = '/'; - memcpy (r + namelen + insert_slash, base, baselen + 1); - return r; - } -} - - - -struct line_filter { - FILE *infile; - char *bufpos; - char *buffer; - char *buflim; -}; - -static void -lf_init (struct line_filter *lf, FILE *infile) -{ - lf->infile = infile; - lf->bufpos = lf->buffer = lf->buflim = xmalloc (SDIFF_BUFSIZE + 1); - lf->buflim[0] = '\n'; -} - -/* Fill an exhausted line_filter buffer from its INFILE */ -static size_t -lf_refill (struct line_filter *lf) -{ - size_t s = ck_fread (lf->buffer, SDIFF_BUFSIZE, lf->infile); - lf->bufpos = lf->buffer; - lf->buflim = lf->buffer + s; - lf->buflim[0] = '\n'; - checksigs (); - return s; -} - -/* Advance LINES on LF's infile, copying lines to OUTFILE */ -static void -lf_copy (struct line_filter *lf, lin lines, FILE *outfile) -{ - char *start = lf->bufpos; - - while (lines) - { - lf->bufpos = (char *) memchr (lf->bufpos, '\n', lf->buflim - lf->bufpos); - if (! lf->bufpos) - { - ck_fwrite (start, lf->buflim - start, outfile); - if (! lf_refill (lf)) - return; - start = lf->bufpos; - } - else - { - --lines; - ++lf->bufpos; - } - } - - ck_fwrite (start, lf->bufpos - start, outfile); -} - -/* Advance LINES on LF's infile without doing output */ -static void -lf_skip (struct line_filter *lf, lin lines) -{ - while (lines) - { - lf->bufpos = (char *) memchr (lf->bufpos, '\n', lf->buflim - lf->bufpos); - if (! lf->bufpos) - { - if (! lf_refill (lf)) - break; - } - else - { - --lines; - ++lf->bufpos; - } - } -} - -/* Snarf a line into a buffer. Return EOF if EOF, 0 if error, 1 if OK. */ -static int -lf_snarf (struct line_filter *lf, char *buffer, size_t bufsize) -{ - for (;;) - { - char *start = lf->bufpos; - char *next = (char *) memchr (start, '\n', lf->buflim + 1 - start); - size_t s = next - start; - if (bufsize <= s) - return 0; - memcpy (buffer, start, s); - if (next < lf->buflim) - { - buffer[s] = 0; - lf->bufpos = next + 1; - return 1; - } - if (! lf_refill (lf)) - return s ? 0 : EOF; - buffer += s; - bufsize -= s; - } -} - - - -int -main (int argc, char *argv[]) -{ - int opt; - char const *prog; - - exit_failure = EXIT_TROUBLE; - initialize_main (&argc, &argv); - program_name = argv[0]; - setlocale (LC_ALL, ""); - bindtextdomain (PACKAGE, LOCALEDIR); - textdomain (PACKAGE); - c_stack_action (c_stack_die); - - prog = getenv ("EDITOR"); - if (prog) - editor_program = prog; - - diffarg (DEFAULT_DIFF_PROGRAM); - - /* parse command line args */ - while ((opt = getopt_long (argc, argv, "abBdHiI:lo:stvw:W", longopts, 0)) - != -1) - { - switch (opt) - { - case 'a': - diffarg ("-a"); - break; - - case 'b': - diffarg ("-b"); - break; - - case 'B': - diffarg ("-B"); - break; - - case 'd': - diffarg ("-d"); - break; - - case 'E': - diffarg ("-E"); - break; - - case 'H': - diffarg ("-H"); - break; - - case 'i': - diffarg ("-i"); - break; - - case 'I': - diffarg ("-I"); - diffarg (optarg); - break; - - case 'l': - diffarg ("--left-column"); - break; - - case 'o': - output = optarg; - break; - - case 's': - suppress_common_lines = 1; - break; - - case 't': - diffarg ("-t"); - break; - - case 'v': - printf ("sdiff %s\n%s\n\n%s\n\n%s\n", - version_string, copyright_string, - _(free_software_msgid), _(authorship_msgid)); - check_stdout (); - return EXIT_SUCCESS; - - case 'w': - diffarg ("-W"); - diffarg (optarg); - break; - - case 'W': - diffarg ("-w"); - break; - - case DIFF_PROGRAM_OPTION: - diffargv[0] = optarg; - break; - - case HELP_OPTION: - usage (); - check_stdout (); - return EXIT_SUCCESS; - - case STRIP_TRAILING_CR_OPTION: - diffarg ("--strip-trailing-cr"); - break; - - default: - try_help (0, 0); - } - } - - if (argc - optind != 2) - { - if (argc - optind < 2) - try_help ("missing operand after `%s'", argv[argc - 1]); - else - try_help ("extra operand `%s'", argv[optind + 2]); - } - - if (! output) - { - /* easy case: diff does everything for us */ - if (suppress_common_lines) - diffarg ("--suppress-common-lines"); - diffarg ("-y"); - diffarg ("--"); - diffarg (argv[optind]); - diffarg (argv[optind + 1]); - diffarg (0); - execvp (diffargv[0], (char **) diffargv); - perror_fatal (diffargv[0]); - } - else - { - char const *lname, *rname; - FILE *left, *right, *out, *diffout; - bool interact_ok; - struct line_filter lfilt; - struct line_filter rfilt; - struct line_filter diff_filt; - bool leftdir = diraccess (argv[optind]); - bool rightdir = diraccess (argv[optind + 1]); - - if (leftdir & rightdir) - fatal ("both files to be compared are directories"); - - lname = expand_name (argv[optind], leftdir, argv[optind + 1]); - left = ck_fopen (lname, "r"); - rname = expand_name (argv[optind + 1], rightdir, argv[optind]); - right = ck_fopen (rname, "r"); - out = ck_fopen (output, "w"); - - diffarg ("--sdiff-merge-assist"); - diffarg ("--"); - diffarg (argv[optind]); - diffarg (argv[optind + 1]); - diffarg (0); - - trapsigs (); - -#if ! (HAVE_WORKING_FORK || HAVE_WORKING_VFORK) - { - size_t cmdsize = 1; - char *p, *command; - int i; - - for (i = 0; diffargv[i]; i++) - cmdsize += quote_system_arg (0, diffargv[i]) + 1; - command = p = xmalloc (cmdsize); - for (i = 0; diffargv[i]; i++) - { - p += quote_system_arg (p, diffargv[i]); - *p++ = ' '; - } - p[-1] = 0; - errno = 0; - diffout = popen (command, "r"); - if (! diffout) - perror_fatal (command); - free (command); - } -#else - { - int diff_fds[2]; -# if HAVE_WORKING_VFORK - sigset_t procmask; - sigset_t blocked; -# endif - - if (pipe (diff_fds) != 0) - perror_fatal ("pipe"); - -# if HAVE_WORKING_VFORK - /* Block SIGINT and SIGPIPE. */ - sigemptyset (&blocked); - sigaddset (&blocked, SIGINT); - sigaddset (&blocked, SIGPIPE); - sigprocmask (SIG_BLOCK, &blocked, &procmask); -# endif - diffpid = vfork (); - if (diffpid < 0) - perror_fatal ("fork"); - if (! diffpid) - { - /* Alter the child's SIGINT and SIGPIPE handlers; - this may munge the parent. - The child ignores SIGINT in case the user interrupts the editor. - The child does not ignore SIGPIPE, even if the parent does. */ - if (initial_handler (handler_index_of_SIGINT) != SIG_IGN) - signal_handler (SIGINT, SIG_IGN); - signal_handler (SIGPIPE, SIG_DFL); -# if HAVE_WORKING_VFORK - /* Stop blocking SIGINT and SIGPIPE in the child. */ - sigprocmask (SIG_SETMASK, &procmask, 0); -# endif - close (diff_fds[0]); - if (diff_fds[1] != STDOUT_FILENO) - { - dup2 (diff_fds[1], STDOUT_FILENO); - close (diff_fds[1]); - } - - execvp (diffargv[0], (char **) diffargv); - _exit (errno == ENOEXEC ? 126 : 127); - } - -# if HAVE_WORKING_VFORK - /* Restore the parent's SIGINT and SIGPIPE behavior. */ - if (initial_handler (handler_index_of_SIGINT) != SIG_IGN) - signal_handler (SIGINT, catchsig); - if (initial_handler (handler_index_of_SIGPIPE) != SIG_IGN) - signal_handler (SIGPIPE, catchsig); - else - signal_handler (SIGPIPE, SIG_IGN); - - /* Stop blocking SIGINT and SIGPIPE in the parent. */ - sigprocmask (SIG_SETMASK, &procmask, 0); -# endif - - close (diff_fds[1]); - diffout = fdopen (diff_fds[0], "r"); - if (! diffout) - perror_fatal ("fdopen"); - } -#endif - - lf_init (&diff_filt, diffout); - lf_init (&lfilt, left); - lf_init (&rfilt, right); - - interact_ok = interact (&diff_filt, &lfilt, lname, &rfilt, rname, out); - - ck_fclose (left); - ck_fclose (right); - ck_fclose (out); - - { - int wstatus; - int werrno = 0; - -#if ! (HAVE_WORKING_FORK || HAVE_WORKING_VFORK) - wstatus = pclose (diffout); - if (wstatus == -1) - werrno = errno; -#else - ck_fclose (diffout); - while (waitpid (diffpid, &wstatus, 0) < 0) - if (errno == EINTR) - checksigs (); - else - perror_fatal ("waitpid"); - diffpid = 0; -#endif - - if (tmpname) - { - unlink (tmpname); - tmpname = 0; - } - - if (! interact_ok) - exiterr (); - - ck_editor_status (werrno, wstatus); - untrapsig (0); - checksigs (); - exit (WEXITSTATUS (wstatus)); - } - } - return EXIT_SUCCESS; /* Fool `-Wall'. */ -} - -static void -diffarg (char const *a) -{ - static size_t diffargs, diffarglim; - - if (diffargs == diffarglim) - { - if (! diffarglim) - diffarglim = 16; - else if (PTRDIFF_MAX / (2 * sizeof *diffargv) <= diffarglim) - xalloc_die (); - else - diffarglim *= 2; - diffargv = xrealloc (diffargv, diffarglim * sizeof *diffargv); - } - diffargv[diffargs++] = a; -} - - - - -/* Signal handling */ - -static bool volatile ignore_SIGINT; -static int volatile signal_received; -static bool sigs_trapped; - -static RETSIGTYPE -catchsig (int s) -{ -#if ! HAVE_SIGACTION - signal (s, SIG_IGN); -#endif - if (! (s == SIGINT && ignore_SIGINT)) - signal_received = s; -} - -#if HAVE_SIGACTION -static struct sigaction catchaction; - -static void -signal_handler (int sig, RETSIGTYPE (*handler) (int)) -{ - catchaction.sa_handler = handler; - sigaction (sig, &catchaction, 0); -} -#endif - -static void -trapsigs (void) -{ - int i; - -#if HAVE_SIGACTION - catchaction.sa_flags = SA_RESTART; - sigemptyset (&catchaction.sa_mask); - for (i = 0; i < NUM_SIGS; i++) - sigaddset (&catchaction.sa_mask, sigs[i]); -#endif - - for (i = 0; i < NUM_SIGS; i++) - { -#if HAVE_SIGACTION - sigaction (sigs[i], 0, &initial_action[i]); -#else - initial_action[i] = signal (sigs[i], SIG_IGN); -#endif - if (initial_handler (i) != SIG_IGN) - signal_handler (sigs[i], catchsig); - } - -#ifdef SIGCHLD - /* System V fork+wait does not work if SIGCHLD is ignored. */ - signal (SIGCHLD, SIG_DFL); -#endif - - sigs_trapped = 1; -} - -/* Untrap signal S, or all trapped signals if S is zero. */ -static void -untrapsig (int s) -{ - int i; - - if (sigs_trapped) - for (i = 0; i < NUM_SIGS; i++) - if ((! s || sigs[i] == s) && initial_handler (i) != SIG_IGN) -#if HAVE_SIGACTION - sigaction (sigs[i], &initial_action[i], 0); -#else - signal (sigs[i], initial_action[i]); -#endif -} - -/* Exit if a signal has been received. */ -static void -checksigs (void) -{ - int s = signal_received; - if (s) - { - cleanup (); - - /* Yield an exit status indicating that a signal was received. */ - untrapsig (s); - kill (getpid (), s); - - /* That didn't work, so exit with error status. */ - exit (EXIT_TROUBLE); - } -} - - -static void -give_help (void) -{ - fprintf (stderr, "%s", _("\ -ed:\tEdit then use both versions, each decorated with a header.\n\ -eb:\tEdit then use both versions.\n\ -el:\tEdit then use the left version.\n\ -er:\tEdit then use the right version.\n\ -e:\tEdit a new version.\n\ -l:\tUse the left version.\n\ -r:\tUse the right version.\n\ -s:\tSilently include common lines.\n\ -v:\tVerbosely include common lines.\n\ -q:\tQuit.\n\ -")); -} - -static int -skip_white (void) -{ - int c; - for (;;) - { - c = getchar (); - if (! ISSPACE (c) || c == '\n') - break; - checksigs (); - } - if (ferror (stdin)) - perror_fatal (_("read failed")); - return c; -} - -static void -flush_line (void) -{ - int c; - while ((c = getchar ()) != '\n' && c != EOF) - continue; - if (ferror (stdin)) - perror_fatal (_("read failed")); -} - - -/* interpret an edit command */ -static bool -edit (struct line_filter *left, char const *lname, lin lline, lin llen, - struct line_filter *right, char const *rname, lin rline, lin rlen, - FILE *outfile) -{ - for (;;) - { - int cmd0, cmd1; - bool gotcmd = 0; - - cmd1 = 0; /* Pacify `gcc -W'. */ - - while (! gotcmd) - { - if (putchar ('%') != '%') - perror_fatal (_("write failed")); - ck_fflush (stdout); - - cmd0 = skip_white (); - switch (cmd0) - { - case 'l': case 'r': case 's': case 'v': case 'q': - if (skip_white () != '\n') - { - give_help (); - flush_line (); - continue; - } - gotcmd = 1; - break; - - case 'e': - cmd1 = skip_white (); - switch (cmd1) - { - case 'b': case 'd': case 'l': case 'r': - if (skip_white () != '\n') - { - give_help (); - flush_line (); - continue; - } - gotcmd = 1; - break; - case '\n': - gotcmd = 1; - break; - default: - give_help (); - flush_line (); - continue; - } - break; - - case EOF: - if (feof (stdin)) - { - gotcmd = 1; - cmd0 = 'q'; - break; - } - /* Fall through. */ - default: - flush_line (); - /* Fall through. */ - case '\n': - give_help (); - continue; - } - } - - switch (cmd0) - { - case 'l': - lf_copy (left, llen, outfile); - lf_skip (right, rlen); - return 1; - case 'r': - lf_copy (right, rlen, outfile); - lf_skip (left, llen); - return 1; - case 's': - suppress_common_lines = 1; - break; - case 'v': - suppress_common_lines = 0; - break; - case 'q': - return 0; - case 'e': - { - int fd; - - if (tmpname) - tmp = fopen (tmpname, "w"); - else - { - if ((fd = temporary_file ()) < 0) - perror_fatal ("mkstemp"); - tmp = fdopen (fd, "w"); - } - - if (! tmp) - perror_fatal (tmpname); - - switch (cmd1) - { - case 'd': - if (llen) - { - if (llen == 1) - fprintf (tmp, "--- %s %ld\n", lname, (long) lline); - else - fprintf (tmp, "--- %s %ld,%ld\n", lname, - (long) lline, (long) (lline + llen - 1)); - } - /* Fall through. */ - case 'b': case 'l': - lf_copy (left, llen, tmp); - break; - - default: - lf_skip (left, llen); - break; - } - - switch (cmd1) - { - case 'd': - if (rlen) - { - if (rlen == 1) - fprintf (tmp, "+++ %s %ld\n", rname, (long) rline); - else - fprintf (tmp, "+++ %s %ld,%ld\n", rname, - (long) rline, (long) (rline + rlen - 1)); - } - /* Fall through. */ - case 'b': case 'r': - lf_copy (right, rlen, tmp); - break; - - default: - lf_skip (right, rlen); - break; - } - - ck_fclose (tmp); - - { - int wstatus; - int werrno = 0; - ignore_SIGINT = 1; - checksigs (); - - { -#if ! (HAVE_WORKING_FORK || HAVE_WORKING_VFORK) - char *command = - xmalloc (quote_system_arg (0, editor_program) - + 1 + strlen (tmpname) + 1); - sprintf (command + quote_system_arg (command, editor_program), - " %s", tmpname); - wstatus = system (command); - if (wstatus == -1) - werrno = errno; - free (command); -#else - pid_t pid; - - pid = vfork (); - if (pid == 0) - { - char const *argv[3]; - int i = 0; - - argv[i++] = editor_program; - argv[i++] = tmpname; - argv[i] = 0; - - execvp (editor_program, (char **) argv); - _exit (errno == ENOEXEC ? 126 : 127); - } - - if (pid < 0) - perror_fatal ("fork"); - - while (waitpid (pid, &wstatus, 0) < 0) - if (errno == EINTR) - checksigs (); - else - perror_fatal ("waitpid"); -#endif - } - - ignore_SIGINT = 0; - ck_editor_status (werrno, wstatus); - } - - { - char buf[SDIFF_BUFSIZE]; - size_t size; - tmp = ck_fopen (tmpname, "r"); - while ((size = ck_fread (buf, SDIFF_BUFSIZE, tmp)) != 0) - { - checksigs (); - ck_fwrite (buf, size, outfile); - } - ck_fclose (tmp); - } - return 1; - } - default: - give_help (); - break; - } - } -} - - - -/* Alternately reveal bursts of diff output and handle user commands. */ -static bool -interact (struct line_filter *diff, - struct line_filter *left, char const *lname, - struct line_filter *right, char const *rname, - FILE *outfile) -{ - lin lline = 1, rline = 1; - - for (;;) - { - char diff_help[256]; - int snarfed = lf_snarf (diff, diff_help, sizeof diff_help); - - if (snarfed <= 0) - return snarfed != 0; - - checksigs (); - - if (diff_help[0] == ' ') - puts (diff_help + 1); - else - { - char *numend; - uintmax_t val; - lin llen, rlen, lenmax; - errno = 0; - llen = val = strtoumax (diff_help + 1, &numend, 10); - if (llen < 0 || llen != val || errno || *numend != ',') - fatal (diff_help); - rlen = val = strtoumax (numend + 1, &numend, 10); - if (rlen < 0 || rlen != val || errno || *numend) - fatal (diff_help); - - lenmax = MAX (llen, rlen); - - switch (diff_help[0]) - { - case 'i': - if (suppress_common_lines) - lf_skip (diff, lenmax); - else - lf_copy (diff, lenmax, stdout); - - lf_copy (left, llen, outfile); - lf_skip (right, rlen); - break; - - case 'c': - lf_copy (diff, lenmax, stdout); - if (! edit (left, lname, lline, llen, - right, rname, rline, rlen, - outfile)) - return 0; - break; - - default: - fatal (diff_help); - } - - lline += llen; - rline += rlen; - } - } -} - -/* Return nonzero if DIR is an existing directory. */ -static bool -diraccess (char const *dir) -{ - struct stat buf; - return stat (dir, &buf) == 0 && S_ISDIR (buf.st_mode); -} - -#ifndef P_tmpdir -# define P_tmpdir "/tmp" -#endif -#ifndef TMPDIR_ENV -# define TMPDIR_ENV "TMPDIR" -#endif - -/* Open a temporary file and return its file descriptor. Put into - tmpname the address of a newly allocated buffer that holds the - file's name. Use the prefix "sdiff". */ -static int -temporary_file (void) -{ - char const *tmpdir = getenv (TMPDIR_ENV); - char const *dir = tmpdir ? tmpdir : P_tmpdir; - char *buf = xmalloc (strlen (dir) + 1 + 5 + 6 + 1); - int fd; - int e; - sigset_t procmask; - sigset_t blocked; - sprintf (buf, "%s/sdiffXXXXXX", dir); - sigemptyset (&blocked); - sigaddset (&blocked, SIGINT); - sigprocmask (SIG_BLOCK, &blocked, &procmask); - fd = mkstemp (buf); - e = errno; - if (0 <= fd) - tmpname = buf; - sigprocmask (SIG_SETMASK, &procmask, 0); - errno = e; - return fd; -} diff --git a/src/bin/diffutils/src/side.c b/src/bin/diffutils/src/side.c deleted file mode 100644 index ad91d3bbdb..0000000000 --- a/src/bin/diffutils/src/side.c +++ /dev/null @@ -1,283 +0,0 @@ -/* sdiff-format output routines for GNU DIFF. - - Copyright (C) 1991, 1992, 1993, 1998, 2001, 2002 Free Software - Foundation, Inc. - - This file is part of GNU DIFF. - - GNU DIFF is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY. No author or distributor - accepts responsibility to anyone for the consequences of using it - or for whether it serves any particular purpose or works at all, - unless he says so in writing. Refer to the GNU DIFF General Public - License for full details. - - Everyone is granted permission to copy, modify and redistribute - GNU DIFF, but only under the conditions described in the - GNU DIFF General Public License. A copy of this license is - supposed to have been given to you along with GNU DIFF so you - can know your rights and responsibilities. It should be in a - file named COPYING. Among other things, the copyright notice - and this notice must be preserved on all copies. */ - -#include "diff.h" - -static void print_sdiff_common_lines (lin, lin); -static void print_sdiff_hunk (struct change *); - -/* Next line number to be printed in the two input files. */ -static lin next0, next1; - -/* Print the edit-script SCRIPT as a sdiff style output. */ - -void -print_sdiff_script (struct change *script) -{ - begin_output (); - - next0 = next1 = - files[0].prefix_lines; - print_script (script, find_change, print_sdiff_hunk); - - print_sdiff_common_lines (files[0].valid_lines, files[1].valid_lines); -} - -/* Tab from column FROM to column TO, where FROM <= TO. Yield TO. */ - -static unsigned int -tab_from_to (unsigned int from, unsigned int to) -{ - FILE *out = outfile; - unsigned int tab; - - if (!expand_tabs) - for (tab = from + TAB_WIDTH - from % TAB_WIDTH; tab <= to; tab += TAB_WIDTH) - { - putc ('\t', out); - from = tab; - } - while (from++ < to) - putc (' ', out); - return to; -} - -/* - * Print the text for half an sdiff line. This means truncate to width - * observing tabs, and trim a trailing newline. Returns the last column - * written (not the number of chars). - */ -static unsigned int -print_half_line (char const *const *line, unsigned int indent, - unsigned int out_bound) -{ - FILE *out = outfile; - register unsigned int in_position = 0; - register unsigned int out_position = 0; - register char const *text_pointer = line[0]; - register char const *text_limit = line[1]; - - while (text_pointer < text_limit) - { - register unsigned char c = *text_pointer++; - - switch (c) - { - case '\t': - { - unsigned int spaces = TAB_WIDTH - in_position % TAB_WIDTH; - if (in_position == out_position) - { - unsigned int tabstop = out_position + spaces; - if (expand_tabs) - { - if (out_bound < tabstop) - tabstop = out_bound; - for (; out_position < tabstop; out_position++) - putc (' ', out); - } - else - if (tabstop < out_bound) - { - out_position = tabstop; - putc (c, out); - } - } - in_position += spaces; - } - break; - - case '\r': - { - putc (c, out); - tab_from_to (0, indent); - in_position = out_position = 0; - } - break; - - case '\b': - if (in_position != 0 && --in_position < out_bound) - { - if (out_position <= in_position) - /* Add spaces to make up for suppressed tab past out_bound. */ - for (; out_position < in_position; out_position++) - putc (' ', out); - else - { - out_position = in_position; - putc (c, out); - } - } - break; - - case '\f': - case '\v': - control_char: - if (in_position < out_bound) - putc (c, out); - break; - - default: - if (! ISPRINT (c)) - goto control_char; - /* falls through */ - case ' ': - if (in_position++ < out_bound) - { - out_position = in_position; - putc (c, out); - } - break; - - case '\n': - return out_position; - } - } - - return out_position; -} - -/* - * Print side by side lines with a separator in the middle. - * 0 parameters are taken to indicate white space text. - * Blank lines that can easily be caught are reduced to a single newline. - */ - -static void -print_1sdiff_line (char const *const *left, char sep, - char const *const *right) -{ - FILE *out = outfile; - unsigned int hw = sdiff_half_width, c2o = sdiff_column2_offset; - unsigned int col = 0; - bool put_newline = 0; - - if (left) - { - put_newline |= left[1][-1] == '\n'; - col = print_half_line (left, 0, hw); - } - - if (sep != ' ') - { - col = tab_from_to (col, (hw + c2o - 1) / 2) + 1; - if (sep == '|' && put_newline != (right[1][-1] == '\n')) - sep = put_newline ? '/' : '\\'; - putc (sep, out); - } - - if (right) - { - put_newline |= right[1][-1] == '\n'; - if (**right != '\n') - { - col = tab_from_to (col, c2o); - print_half_line (right, col, hw); - } - } - - if (put_newline) - putc ('\n', out); -} - -/* Print lines common to both files in side-by-side format. */ -static void -print_sdiff_common_lines (lin limit0, lin limit1) -{ - lin i0 = next0, i1 = next1; - - if (!suppress_common_lines && (i0 != limit0 || i1 != limit1)) - { - if (sdiff_merge_assist) - { - long len0 = limit0 - i0; - long len1 = limit1 - i1; - fprintf (outfile, "i%ld,%ld\n", len0, len1); - } - - if (!left_column) - { - while (i0 != limit0 && i1 != limit1) - print_1sdiff_line (&files[0].linbuf[i0++], ' ', - &files[1].linbuf[i1++]); - while (i1 != limit1) - print_1sdiff_line (0, ')', &files[1].linbuf[i1++]); - } - while (i0 != limit0) - print_1sdiff_line (&files[0].linbuf[i0++], '(', 0); - } - - next0 = limit0; - next1 = limit1; -} - -/* Print a hunk of an sdiff diff. - This is a contiguous portion of a complete edit script, - describing changes in consecutive lines. */ - -static void -print_sdiff_hunk (struct change *hunk) -{ - lin first0, last0, first1, last1; - register lin i, j; - - /* Determine range of line numbers involved in each file. */ - enum changes changes = - analyze_hunk (hunk, &first0, &last0, &first1, &last1); - if (!changes) - return; - - /* Print out lines up to this change. */ - print_sdiff_common_lines (first0, first1); - - if (sdiff_merge_assist) - { - long len0 = last0 - first0 + 1; - long len1 = last1 - first1 + 1; - fprintf (outfile, "c%ld,%ld\n", len0, len1); - } - - /* Print ``xxx | xxx '' lines */ - if (changes == CHANGED) - { - for (i = first0, j = first1; i <= last0 && j <= last1; i++, j++) - print_1sdiff_line (&files[0].linbuf[i], '|', &files[1].linbuf[j]); - changes = (i <= last0 ? OLD : 0) + (j <= last1 ? NEW : 0); - next0 = first0 = i; - next1 = first1 = j; - } - - /* Print `` > xxx '' lines */ - if (changes & NEW) - { - for (j = first1; j <= last1; ++j) - print_1sdiff_line (0, '>', &files[1].linbuf[j]); - next1 = j; - } - - /* Print ``xxx < '' lines */ - if (changes & OLD) - { - for (i = first0; i <= last0; ++i) - print_1sdiff_line (&files[0].linbuf[i], '<', 0); - next0 = i; - } -} diff --git a/src/bin/diffutils/src/system.h b/src/bin/diffutils/src/system.h deleted file mode 100644 index 7594982c00..0000000000 --- a/src/bin/diffutils/src/system.h +++ /dev/null @@ -1,401 +0,0 @@ -/* System dependent declarations. - - Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1998, 2001, 2002 - Free Software Foundation, Inc. - - This file is part of GNU DIFF. - - GNU DIFF is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GNU DIFF is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include - -/* Don't bother to support K&R C compilers any more; it's not worth - the trouble. These macros prevent some library modules from being - compiled in K&R C mode. */ -#define PARAMS(Args) Args -#define PROTOTYPES 1 - -/* Define `__attribute__' and `volatile' first - so that they're used consistently in all system includes. */ -#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 6) || __STRICT_ANSI__ -# define __attribute__(x) -#endif -#if defined const && !defined volatile -# define volatile -#endif - -/* Verify a requirement at compile-time (unlike assert, which is runtime). */ -#define verify(name, assertion) struct name { char a[(assertion) ? 1 : -1]; } - - -/* Determine whether an integer type is signed, and its bounds. - This code assumes two's (or one's!) complement with no holes. */ - -/* The extra casts work around common compiler bugs, - e.g. Cray C 5.0.3.0 when t == time_t. */ -#ifndef TYPE_SIGNED -# define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) -#endif -#ifndef TYPE_MINIMUM -# define TYPE_MINIMUM(t) ((t) (TYPE_SIGNED (t) \ - ? ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1) \ - : (t) 0)) -#endif -#ifndef TYPE_MAXIMUM -# define TYPE_MAXIMUM(t) ((t) (~ (t) 0 - TYPE_MINIMUM (t))) -#endif - -#include -#include - -#if STAT_MACROS_BROKEN -# undef S_ISBLK -# undef S_ISCHR -# undef S_ISDIR -# undef S_ISFIFO -# undef S_ISREG -# undef S_ISSOCK -#endif -#ifndef S_ISDIR -# define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) -#endif -#ifndef S_ISREG -# define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG) -#endif -#if !defined S_ISBLK && defined S_IFBLK -# define S_ISBLK(mode) (((mode) & S_IFMT) == S_IFBLK) -#endif -#if !defined S_ISCHR && defined S_IFCHR -# define S_ISCHR(mode) (((mode) & S_IFMT) == S_IFCHR) -#endif -#if !defined S_ISFIFO && defined S_IFFIFO -# define S_ISFIFO(mode) (((mode) & S_IFMT) == S_IFFIFO) -#endif -#if !defined S_ISSOCK && defined S_IFSOCK -# define S_ISSOCK(mode) (((mode) & S_IFMT) == S_IFSOCK) -#endif -#ifndef S_IXUSR -# define S_IXUSR 0100 -#endif -#ifndef S_IXGRP -# define S_IXGRP 0010 -#endif -#ifndef S_IXOTH -# define S_IXOTH 0001 -#endif - -#if HAVE_UNISTD_H -# include -#endif - -#ifndef SEEK_SET -# define SEEK_SET 0 -#endif -#ifndef SEEK_CUR -# define SEEK_CUR 1 -#endif - -#ifndef STDIN_FILENO -# define STDIN_FILENO 0 -#endif -#ifndef STDOUT_FILENO -# define STDOUT_FILENO 1 -#endif -#ifndef STDERR_FILENO -# define STDERR_FILENO 2 -#endif - -#if HAVE_TIME_H -# include -#else -# include -#endif - -#if HAVE_FCNTL_H -# include -#else -# if HAVE_SYS_FILE_H -# include -# endif -#endif - -#if !HAVE_DUP2 -# define dup2(f, t) (close (t), fcntl (f, F_DUPFD, t)) -#endif - -#ifndef O_RDONLY -# define O_RDONLY 0 -#endif -#ifndef O_RDWR -# define O_RDWR 2 -#endif -#ifndef S_IRUSR -# define S_IRUSR 0400 -#endif -#ifndef S_IWUSR -# define S_IWUSR 0200 -#endif - -#if HAVE_SYS_WAIT_H -# include -#endif -#ifndef WEXITSTATUS -# define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8) -#endif -#ifndef WIFEXITED -# define WIFEXITED(stat_val) (((stat_val) & 255) == 0) -#endif - -#ifndef STAT_BLOCKSIZE -# if HAVE_STRUCT_STAT_ST_BLKSIZE -# define STAT_BLOCKSIZE(s) ((s).st_blksize) -# else -# define STAT_BLOCKSIZE(s) (8 * 1024) -# endif -#endif - -#if HAVE_DIRENT_H -# include -# define NAMLEN(dirent) strlen ((dirent)->d_name) -#else -# define dirent direct -# define NAMLEN(dirent) ((dirent)->d_namlen) -# if HAVE_SYS_NDIR_H -# include -# endif -# if HAVE_SYS_DIR_H -# include -# endif -# if HAVE_NDIR_H -# include -# endif -#endif - -#if HAVE_STDLIB_H -# include -#else -# ifndef getenv - char *getenv (); -# endif -#endif -#ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -#endif -#if !EXIT_FAILURE -# undef EXIT_FAILURE /* Sony NEWS-OS 4.0C defines EXIT_FAILURE to 0. */ -# define EXIT_FAILURE 1 -#endif -#define EXIT_TROUBLE 2 - -#include -#ifndef SSIZE_MAX -# define SSIZE_MAX TYPE_MAXIMUM (ssize_t) -#endif - -#if HAVE_INTTYPES_H -# include -#endif -#ifndef PTRDIFF_MAX -# define PTRDIFF_MAX TYPE_MAXIMUM (ptrdiff_t) -#endif -#ifndef SIZE_MAX -# define SIZE_MAX TYPE_MAXIMUM (size_t) -#endif -#ifndef UINTMAX_MAX -# define UINTMAX_MAX TYPE_MAXIMUM (uintmax_t) -#endif -#if ! HAVE_STRTOUMAX && ! defined strtoumax -uintmax_t strtoumax (char const *, char **, int); -#endif - -#include - -#if STDC_HEADERS || HAVE_STRING_H -# include -#else -# if !HAVE_STRCHR -# define strchr index -# define strrchr rindex -# endif -char *strchr (), *strrchr (); -# if !HAVE_MEMCHR -# define memcmp(s1, s2, n) bcmp (s1, s2, n) -# define memcpy(d, s, n) bcopy (s, d, n) -void *memchr (); -# endif -#endif - -#if HAVE_LOCALE_H -# include -#else -# define setlocale(category, locale) -#endif - -#include - -#define _(msgid) gettext (msgid) -#define N_(msgid) msgid - -#include - -/* CTYPE_DOMAIN (C) is nonzero if the unsigned char C can safely be given - as an argument to macros like `isspace'. */ -#if STDC_HEADERS -# define CTYPE_DOMAIN(c) 1 -#else -# define CTYPE_DOMAIN(c) ((unsigned int) (c) <= 0177) -#endif -#define ISPRINT(c) (CTYPE_DOMAIN (c) && isprint (c)) -#define ISSPACE(c) (CTYPE_DOMAIN (c) && isspace (c)) - -#if STDC_HEADERS -# define TOLOWER(c) tolower (c) -#else -# ifndef _tolower -# define _tolower(c) tolower (c) -# endif -# define TOLOWER(c) (CTYPE_DOMAIN (c) && isupper (c) ? _tolower (c) : (c)) -#endif - -/* ISDIGIT differs from isdigit, as follows: - - Its arg may be any int or unsigned int; it need not be an unsigned char. - - It's guaranteed to evaluate its argument exactly once. - - It's typically faster. - POSIX 1003.1-2001 says that only '0' through '9' are digits. - Prefer ISDIGIT to isdigit unless it's important to use the locale's - definition of `digit' even when the host does not conform to POSIX. */ -#define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9) - -#include -#if !STDC_HEADERS - extern int errno; -#endif - -#include -#ifndef SA_RESTART -# ifdef SA_INTERRUPT /* e.g. SunOS 4.1.x */ -# define SA_RESTART SA_INTERRUPT -# else -# define SA_RESTART 0 -# endif -#endif -#if !defined SIGCHLD && defined SIGCLD -# define SIGCHLD SIGCLD -#endif - -#undef MIN -#undef MAX -#define MIN(a, b) ((a) <= (b) ? (a) : (b)) -#define MAX(a, b) ((a) >= (b) ? (a) : (b)) - -#if HAVE_STDBOOL_H -# include -#else -# define bool unsigned char -#endif - -#if HAVE_VFORK_H -# include -#endif - -#if ! HAVE_WORKING_VFORK -# define vfork fork -#endif - -/* Type used for fast comparison of several bytes at a time. */ - -#ifndef word -# define word uintmax_t -#endif - -/* The integer type of a line number. Since files are read into main - memory, ptrdiff_t should be wide enough. */ - -typedef ptrdiff_t lin; -#define LIN_MAX PTRDIFF_MAX -verify (lin_is_signed, TYPE_SIGNED (lin)); -verify (lin_is_wide_enough, sizeof (ptrdiff_t) <= sizeof (lin)); -verify (lin_is_printable_as_long, sizeof (lin) <= sizeof (long)); - -/* This section contains POSIX-compliant defaults for macros - that are meant to be overridden by hand in config.h as needed. */ - -#ifndef file_name_cmp -# define file_name_cmp strcmp -#endif - -#ifndef initialize_main -# define initialize_main(argcp, argvp) -#endif - -#ifndef NULL_DEVICE -# define NULL_DEVICE "/dev/null" -#endif - -/* Do struct stat *S, *T describe the same special file? */ -#ifndef same_special_file -# if HAVE_ST_RDEV && defined S_ISBLK && defined S_ISCHR -# define same_special_file(s, t) \ - (((S_ISBLK ((s)->st_mode) && S_ISBLK ((t)->st_mode)) \ - || (S_ISCHR ((s)->st_mode) && S_ISCHR ((t)->st_mode))) \ - && (s)->st_rdev == (t)->st_rdev) -# else -# define same_special_file(s, t) 0 -# endif -#endif - -/* Do struct stat *S, *T describe the same file? Answer -1 if unknown. */ -#ifndef same_file -# define same_file(s, t) \ - ((((s)->st_ino == (t)->st_ino) && ((s)->st_dev == (t)->st_dev)) \ - || same_special_file (s, t)) -#endif - -/* Do struct stat *S, *T have the same file attributes? - - POSIX says that two files are identical if st_ino and st_dev are - the same, but many filesystems incorrectly assign the same (device, - inode) pair to two distinct files, including: - - - GNU/Linux NFS servers that export all local filesystems as a - single NFS filesystem, if a local device number (st_dev) exceeds - 255, or if a local inode number (st_ino) exceeds 16777215. - - - Network Appliance NFS servers in snapshot directories; see - Network Appliance bug #195. - - - ClearCase MVFS; see bug id ATRia04618. - - Check whether two files that purport to be the same have the same - attributes, to work around instances of this common bug. Do not - inspect all attributes, only attributes useful in checking for this - bug. - - It's possible for two distinct files on a buggy filesystem to have - the same attributes, but it's not worth slowing down all - implementations (or complicating the configuration) to cater to - these rare cases in buggy implementations. */ - -#ifndef same_file_attributes -# define same_file_attributes(s, t) \ - ((s)->st_mode == (t)->st_mode \ - && (s)->st_nlink == (t)->st_nlink \ - && (s)->st_uid == (t)->st_uid \ - && (s)->st_gid == (t)->st_gid \ - && (s)->st_size == (t)->st_size \ - && (s)->st_mtime == (t)->st_mtime \ - && (s)->st_ctime == (t)->st_ctime) -#endif diff --git a/src/bin/diffutils/src/util.c b/src/bin/diffutils/src/util.c deleted file mode 100644 index 70f841284f..0000000000 --- a/src/bin/diffutils/src/util.c +++ /dev/null @@ -1,756 +0,0 @@ -/* Support routines for GNU DIFF. - - Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1998, 2001, 2002 - Free Software Foundation, Inc. - - This file is part of GNU DIFF. - - GNU DIFF is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GNU DIFF is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include "diff.h" -#include -#include -#include -#include -#include - -char const pr_program[] = PR_PROGRAM; - -/* Queue up one-line messages to be printed at the end, - when -l is specified. Each message is recorded with a `struct msg'. */ - -struct msg -{ - struct msg *next; - char args[1]; /* Format + 4 args, each '\0' terminated, concatenated. */ -}; - -/* Head of the chain of queues messages. */ - -static struct msg *msg_chain; - -/* Tail of the chain of queues messages. */ - -static struct msg **msg_chain_end = &msg_chain; - -/* Use when a system call returns non-zero status. - NAME should normally be the file name. */ - -void -perror_with_name (char const *name) -{ - error (0, errno, "%s", name); -} - -/* Use when a system call returns non-zero status and that is fatal. */ - -void -pfatal_with_name (char const *name) -{ - int e = errno; - print_message_queue (); - error (EXIT_TROUBLE, e, "%s", name); - abort (); -} - -/* Print an error message containing MSGID, then exit. */ - -void -fatal (char const *msgid) -{ - print_message_queue (); - error (EXIT_TROUBLE, 0, "%s", _(msgid)); - abort (); -} - -/* Like printf, except if -l in effect then save the message and print later. - This is used for things like "Only in ...". */ - -void -message (char const *format_msgid, char const *arg1, char const *arg2) -{ - message5 (format_msgid, arg1, arg2, 0, 0); -} - -void -message5 (char const *format_msgid, char const *arg1, char const *arg2, - char const *arg3, char const *arg4) -{ - if (paginate) - { - char *p; - char const *arg[5]; - int i; - size_t size[5]; - size_t total_size = offsetof (struct msg, args); - struct msg *new; - - arg[0] = format_msgid; - arg[1] = arg1; - arg[2] = arg2; - arg[3] = arg3 ? arg3 : ""; - arg[4] = arg4 ? arg4 : ""; - - for (i = 0; i < 5; i++) - total_size += size[i] = strlen (arg[i]) + 1; - - new = xmalloc (total_size); - - for (i = 0, p = new->args; i < 5; p += size[i++]) - memcpy (p, arg[i], size[i]); - - *msg_chain_end = new; - new->next = 0; - msg_chain_end = &new->next; - } - else - { - if (sdiff_merge_assist) - putchar (' '); - printf (_(format_msgid), arg1, arg2, arg3, arg4); - } -} - -/* Output all the messages that were saved up by calls to `message'. */ - -void -print_message_queue (void) -{ - char const *arg[5]; - int i; - struct msg *m = msg_chain; - - while (m) - { - struct msg *next = m->next; - arg[0] = m->args; - for (i = 0; i < 4; i++) - arg[i + 1] = arg[i] + strlen (arg[i]) + 1; - printf (_(arg[0]), arg[1], arg[2], arg[3], arg[4]); - free (m); - m = next; - } -} - -/* Call before outputting the results of comparing files NAME0 and NAME1 - to set up OUTFILE, the stdio stream for the output to go to. - - Usually, OUTFILE is just stdout. But when -l was specified - we fork off a `pr' and make OUTFILE a pipe to it. - `pr' then outputs to our stdout. */ - -static char const *current_name0; -static char const *current_name1; -static bool currently_recursive; - -void -setup_output (char const *name0, char const *name1, bool recursive) -{ - current_name0 = name0; - current_name1 = name1; - currently_recursive = recursive; - outfile = 0; -} - -#if HAVE_WORKING_FORK || HAVE_WORKING_VFORK -static pid_t pr_pid; -#endif - -void -begin_output (void) -{ - char *name; - - if (outfile != 0) - return; - - /* Construct the header of this piece of diff. */ - name = xmalloc (strlen (current_name0) + strlen (current_name1) - + strlen (switch_string) + 7); - - /* POSIX 1003.1-2001 specifies this format. But there are some bugs in - the standard: it says that we must print only the last component - of the pathnames, and it requires two spaces after "diff" if - there are no options. These requirements are silly and do not - match historical practice. */ - sprintf (name, "diff%s %s %s", switch_string, current_name0, current_name1); - - if (paginate) - { - if (fflush (stdout) != 0) - pfatal_with_name (_("write failed")); - - /* Make OUTFILE a pipe to a subsidiary `pr'. */ - { -#if HAVE_WORKING_FORK || HAVE_WORKING_VFORK - int pipes[2]; - - if (pipe (pipes) != 0) - pfatal_with_name ("pipe"); - - pr_pid = vfork (); - if (pr_pid < 0) - pfatal_with_name ("fork"); - - if (pr_pid == 0) - { - close (pipes[1]); - if (pipes[0] != STDIN_FILENO) - { - if (dup2 (pipes[0], STDIN_FILENO) < 0) - pfatal_with_name ("dup2"); - close (pipes[0]); - } - - execl (pr_program, pr_program, "-h", name, 0); - _exit (errno == ENOEXEC ? 126 : 127); - } - else - { - close (pipes[0]); - outfile = fdopen (pipes[1], "w"); - if (!outfile) - pfatal_with_name ("fdopen"); - } -#else - char *command = xmalloc (sizeof pr_program - 1 + 7 - + quote_system_arg ((char *) 0, name) + 1); - char *p; - sprintf (command, "%s -f -h ", pr_program); - p = command + sizeof pr_program - 1 + 7; - p += quote_system_arg (p, name); - *p = 0; - errno = 0; - outfile = popen (command, "w"); - if (!outfile) - pfatal_with_name (command); - free (command); -#endif - } - } - else - { - - /* If -l was not specified, output the diff straight to `stdout'. */ - - outfile = stdout; - - /* If handling multiple files (because scanning a directory), - print which files the following output is about. */ - if (currently_recursive) - printf ("%s\n", name); - } - - free (name); - - /* A special header is needed at the beginning of context output. */ - switch (output_style) - { - case OUTPUT_CONTEXT: - print_context_header (files, 0); - break; - - case OUTPUT_UNIFIED: - print_context_header (files, 1); - break; - - default: - break; - } -} - -/* Call after the end of output of diffs for one file. - Close OUTFILE and get rid of the `pr' subfork. */ - -void -finish_output (void) -{ - if (outfile != 0 && outfile != stdout) - { - int wstatus; - int werrno = 0; - if (ferror (outfile)) - fatal ("write failed"); -#if ! (HAVE_WORKING_FORK || HAVE_WORKING_VFORK) - wstatus = pclose (outfile); - if (wstatus == -1) - werrno = errno; -#else - if (fclose (outfile) != 0) - pfatal_with_name (_("write failed")); - if (waitpid (pr_pid, &wstatus, 0) < 0) - pfatal_with_name ("waitpid"); -#endif - if (! werrno && WIFEXITED (wstatus) && WEXITSTATUS (wstatus) == 127) - error (EXIT_TROUBLE, 0, _("subsidiary program `%s' not found"), - pr_program); - if (wstatus != 0) - error (EXIT_TROUBLE, werrno, _("subsidiary program `%s' failed"), - pr_program); - } - - outfile = 0; -} - -/* Compare two lines (typically one from each input file) - according to the command line options. - For efficiency, this is invoked only when the lines do not match exactly - but an option like -i might cause us to ignore the difference. - Return nonzero if the lines differ. */ - -bool -lines_differ (char const *s1, char const *s2) -{ - register unsigned char const *t1 = (unsigned char const *) s1; - register unsigned char const *t2 = (unsigned char const *) s2; - size_t column = 0; - - while (1) - { - register unsigned char c1 = *t1++; - register unsigned char c2 = *t2++; - - /* Test for exact char equality first, since it's a common case. */ - if (c1 != c2) - { - switch (ignore_white_space) - { - case IGNORE_ALL_SPACE: - /* For -w, just skip past any white space. */ - while (ISSPACE (c1) && c1 != '\n') c1 = *t1++; - while (ISSPACE (c2) && c2 != '\n') c2 = *t2++; - break; - - case IGNORE_SPACE_CHANGE: - /* For -b, advance past any sequence of white space in - line 1 and consider it just one space, or nothing at - all if it is at the end of the line. */ - if (ISSPACE (c1)) - { - while (c1 != '\n') - { - c1 = *t1++; - if (! ISSPACE (c1)) - { - --t1; - c1 = ' '; - break; - } - } - } - - /* Likewise for line 2. */ - if (ISSPACE (c2)) - { - while (c2 != '\n') - { - c2 = *t2++; - if (! ISSPACE (c2)) - { - --t2; - c2 = ' '; - break; - } - } - } - - if (c1 != c2) - { - /* If we went too far when doing the simple test - for equality, go back to the first non-white-space - character in both sides and try again. */ - if (c2 == ' ' && c1 != '\n' - && (unsigned char const *) s1 + 1 < t1 - && ISSPACE (t1[-2])) - { - --t1; - continue; - } - if (c1 == ' ' && c2 != '\n' - && (unsigned char const *) s2 + 1 < t2 - && ISSPACE (t2[-2])) - { - --t2; - continue; - } - } - - break; - - case IGNORE_TAB_EXPANSION: - if ((c1 == ' ' && c2 == '\t') - || (c1 == '\t' && c2 == ' ')) - { - size_t column2 = column; - for (;; c1 = *t1++) - { - if (c1 == ' ') - column++; - else if (c1 == '\t') - column += TAB_WIDTH - column % TAB_WIDTH; - else - break; - } - for (;; c2 = *t2++) - { - if (c2 == ' ') - column2++; - else if (c2 == '\t') - column2 += TAB_WIDTH - column2 % TAB_WIDTH; - else - break; - } - if (column != column2) - return 1; - } - break; - - case IGNORE_NO_WHITE_SPACE: - break; - } - - /* Lowercase all letters if -i is specified. */ - - if (ignore_case) - { - c1 = TOLOWER (c1); - c2 = TOLOWER (c2); - } - - if (c1 != c2) - break; - } - if (c1 == '\n') - return 0; - - column += c1 == '\t' ? TAB_WIDTH - column % TAB_WIDTH : 1; - } - - return 1; -} - -/* Find the consecutive changes at the start of the script START. - Return the last link before the first gap. */ - -struct change * -find_change (struct change *start) -{ - return start; -} - -struct change * -find_reverse_change (struct change *start) -{ - return start; -} - -/* Divide SCRIPT into pieces by calling HUNKFUN and - print each piece with PRINTFUN. - Both functions take one arg, an edit script. - - HUNKFUN is called with the tail of the script - and returns the last link that belongs together with the start - of the tail. - - PRINTFUN takes a subscript which belongs together (with a null - link at the end) and prints it. */ - -void -print_script (struct change *script, - struct change * (*hunkfun) (struct change *), - void (*printfun) (struct change *)) -{ - struct change *next = script; - - while (next) - { - struct change *this, *end; - - /* Find a set of changes that belong together. */ - this = next; - end = (*hunkfun) (next); - - /* Disconnect them from the rest of the changes, - making them a hunk, and remember the rest for next iteration. */ - next = end->link; - end->link = 0; -#ifdef DEBUG - debug_script (this); -#endif - - /* Print this hunk. */ - (*printfun) (this); - - /* Reconnect the script so it will all be freed properly. */ - end->link = next; - } -} - -/* Print the text of a single line LINE, - flagging it with the characters in LINE_FLAG (which say whether - the line is inserted, deleted, changed, etc.). */ - -void -print_1_line (char const *line_flag, char const *const *line) -{ - char const *base = line[0], *limit = line[1]; /* Help the compiler. */ - FILE *out = outfile; /* Help the compiler some more. */ - char const *flag_format = 0; - - /* If -T was specified, use a Tab between the line-flag and the text. - Otherwise use a Space (as Unix diff does). - Print neither space nor tab if line-flags are empty. */ - - if (line_flag && *line_flag) - { - flag_format = initial_tab ? "%s\t" : "%s "; - fprintf (out, flag_format, line_flag); - } - - output_1_line (base, limit, flag_format, line_flag); - - if ((!line_flag || line_flag[0]) && limit[-1] != '\n') - fprintf (out, "\n\\ %s\n", _("No newline at end of file")); -} - -/* Output a line from BASE up to LIMIT. - With -t, expand white space characters to spaces, and if FLAG_FORMAT - is nonzero, output it with argument LINE_FLAG after every - internal carriage return, so that tab stops continue to line up. */ - -void -output_1_line (char const *base, char const *limit, char const *flag_format, - char const *line_flag) -{ - if (!expand_tabs) - fwrite (base, limit - base, 1, outfile); - else - { - register FILE *out = outfile; - register unsigned char c; - register char const *t = base; - register unsigned int column = 0; - - while (t < limit) - switch ((c = *t++)) - { - case '\t': - { - unsigned int spaces = TAB_WIDTH - column % TAB_WIDTH; - column += spaces; - do - putc (' ', out); - while (--spaces); - } - break; - - case '\r': - putc (c, out); - if (flag_format && t < limit && *t != '\n') - fprintf (out, flag_format, line_flag); - column = 0; - break; - - case '\b': - if (column == 0) - continue; - column--; - putc (c, out); - break; - - default: - if (ISPRINT (c)) - column++; - putc (c, out); - break; - } - } -} - -char const change_letter[] = { 0, 'd', 'a', 'c' }; - -/* Translate an internal line number (an index into diff's table of lines) - into an actual line number in the input file. - The internal line number is I. FILE points to the data on the file. - - Internal line numbers count from 0 starting after the prefix. - Actual line numbers count from 1 within the entire file. */ - -lin -translate_line_number (struct file_data const *file, lin i) -{ - return i + file->prefix_lines + 1; -} - -/* Translate a line number range. This is always done for printing, - so for convenience translate to long rather than lin, so that the - caller can use printf with "%ld" without casting. */ - -void -translate_range (struct file_data const *file, - lin a, lin b, - long *aptr, long *bptr) -{ - *aptr = translate_line_number (file, a - 1) + 1; - *bptr = translate_line_number (file, b + 1) - 1; -} - -/* Print a pair of line numbers with SEPCHAR, translated for file FILE. - If the two numbers are identical, print just one number. - - Args A and B are internal line numbers. - We print the translated (real) line numbers. */ - -void -print_number_range (char sepchar, struct file_data *file, lin a, lin b) -{ - long trans_a, trans_b; - translate_range (file, a, b, &trans_a, &trans_b); - - /* Note: we can have B < A in the case of a range of no lines. - In this case, we should print the line number before the range, - which is B. */ - if (trans_b > trans_a) - fprintf (outfile, "%ld%c%ld", trans_a, sepchar, trans_b); - else - fprintf (outfile, "%ld", trans_b); -} - -/* Look at a hunk of edit script and report the range of lines in each file - that it applies to. HUNK is the start of the hunk, which is a chain - of `struct change'. The first and last line numbers of file 0 are stored in - *FIRST0 and *LAST0, and likewise for file 1 in *FIRST1 and *LAST1. - Note that these are internal line numbers that count from 0. - - If no lines from file 0 are deleted, then FIRST0 is LAST0+1. - - Return UNCHANGED if only ignorable lines are inserted or deleted, - OLD if lines of file 0 are deleted, - NEW if lines of file 1 are inserted, - and CHANGED if both kinds of changes are found. */ - -enum changes -analyze_hunk (struct change *hunk, - lin *first0, lin *last0, - lin *first1, lin *last1) -{ - struct change *next; - lin l0, l1; - lin show_from, show_to; - lin i; - bool trivial = ignore_blank_lines || ignore_regexp.fastmap; - size_t trivial_length = (int) ignore_blank_lines - 1; - /* If 0, ignore zero-length lines; - if SIZE_MAX, do not ignore lines just because of their length. */ - - char const * const *linbuf0 = files[0].linbuf; /* Help the compiler. */ - char const * const *linbuf1 = files[1].linbuf; - - show_from = show_to = 0; - - *first0 = hunk->line0; - *first1 = hunk->line1; - - next = hunk; - do - { - l0 = next->line0 + next->deleted - 1; - l1 = next->line1 + next->inserted - 1; - show_from += next->deleted; - show_to += next->inserted; - - for (i = next->line0; i <= l0 && trivial; i++) - { - char const *line = linbuf0[i]; - size_t len = linbuf0[i + 1] - line - 1; - if (len != trivial_length - && (! ignore_regexp.fastmap - || re_search (&ignore_regexp, line, len, 0, len, 0) < 0)) - trivial = 0; - } - - for (i = next->line1; i <= l1 && trivial; i++) - { - char const *line = linbuf1[i]; - size_t len = linbuf1[i + 1] - line - 1; - if (len != trivial_length - && (! ignore_regexp.fastmap - || re_search (&ignore_regexp, line, len, 0, len, 0) < 0)) - trivial = 0; - } - } - while ((next = next->link) != 0); - - *last0 = l0; - *last1 = l1; - - /* If all inserted or deleted lines are ignorable, - tell the caller to ignore this hunk. */ - - if (trivial) - return UNCHANGED; - - return (show_from ? OLD : UNCHANGED) | (show_to ? NEW : UNCHANGED); -} - -/* Concatenate three strings, returning a newly malloc'd string. */ - -char * -concat (char const *s1, char const *s2, char const *s3) -{ - char *new = xmalloc (strlen (s1) + strlen (s2) + strlen (s3) + 1); - sprintf (new, "%s%s%s", s1, s2, s3); - return new; -} - -/* Yield a new block of SIZE bytes, initialized to zero. */ - -void * -zalloc (size_t size) -{ - void *p = xmalloc (size); - memset (p, 0, size); - return p; -} - -/* Yield the newly malloc'd pathname - of the file in DIR whose filename is FILE. */ - -char * -dir_file_pathname (char const *dir, char const *file) -{ - char const *base = base_name (dir); - bool omit_slash = !*base || base[strlen (base) - 1] == '/'; - return concat (dir, "/" + omit_slash, file); -} - -void -debug_script (struct change *sp) -{ - fflush (stdout); - - for (; sp; sp = sp->link) - { - long line0 = sp->line0; - long line1 = sp->line1; - long deleted = sp->deleted; - long inserted = sp->inserted; - fprintf (stderr, "%3ld %3ld delete %ld insert %ld\n", - line0, line1, deleted, inserted); - } - - fflush (stderr); -} diff --git a/src/bin/diffutils/src/version.c b/src/bin/diffutils/src/version.c deleted file mode 100644 index 229621f0d4..0000000000 --- a/src/bin/diffutils/src/version.c +++ /dev/null @@ -1,2 +0,0 @@ -#include -char const version_string[] = "(GNU diffutils) 2.8.1"; diff --git a/src/bin/diffutils/stamp-h b/src/bin/diffutils/stamp-h deleted file mode 100644 index efb5edd92f..0000000000 --- a/src/bin/diffutils/stamp-h +++ /dev/null @@ -1 +0,0 @@ -Mon Feb 16 12:15:36 EST 2004 diff --git a/src/bin/diffutils/stamp-h1 b/src/bin/diffutils/stamp-h1 deleted file mode 100644 index 3bd2b7e53e..0000000000 --- a/src/bin/diffutils/stamp-h1 +++ /dev/null @@ -1 +0,0 @@ -timestamp for config.h:config.hin diff --git a/src/data/package_infos/arm/haiku b/src/data/package_infos/arm/haiku index 545c336467..8173eda7d5 100644 --- a/src/data/package_infos/arm/haiku +++ b/src/data/package_infos/arm/haiku @@ -18,17 +18,13 @@ flags system_package provides { haiku=%HAIKU_VERSION% compat>=R1~alpha1 - diffutils = 2.8.1 compat >= 0 cmd:arp cmd:bc cmd:chop cmd:clear - cmd:cmp cmd:compress cmd:dc cmd:df - cmd:diff = 2.8.1 - cmd:diff3 cmd:ftp cmd:ftpd cmd:hd @@ -42,7 +38,6 @@ provides { cmd:ps cmd:renice cmd:resattr - cmd:sdiff cmd:su cmd:tcpdump cmd:telnet diff --git a/src/data/package_infos/m68k/haiku b/src/data/package_infos/m68k/haiku index 18f58755c9..4e840a628f 100644 --- a/src/data/package_infos/m68k/haiku +++ b/src/data/package_infos/m68k/haiku @@ -18,17 +18,13 @@ flags system_package provides { haiku=%HAIKU_VERSION% compat>=R1~alpha1 - diffutils = 2.8.1 compat >= 0 cmd:arp cmd:bc cmd:chop cmd:clear - cmd:cmp cmd:compress cmd:dc cmd:df - cmd:diff = 2.8.1 - cmd:diff3 cmd:ftp cmd:ftpd cmd:hd @@ -42,7 +38,6 @@ provides { cmd:ps cmd:renice cmd:resattr - cmd:sdiff cmd:su cmd:tcpdump cmd:telnet diff --git a/src/data/package_infos/ppc/haiku b/src/data/package_infos/ppc/haiku index bd0baa0314..aa7efcaddf 100644 --- a/src/data/package_infos/ppc/haiku +++ b/src/data/package_infos/ppc/haiku @@ -18,17 +18,13 @@ flags system_package provides { haiku=%HAIKU_VERSION% compat>=R1~alpha1 - diffutils = 2.8.1 compat >= 0 cmd:arp cmd:bc cmd:chop cmd:clear - cmd:cmp cmd:compress cmd:dc cmd:df - cmd:diff = 2.8.1 - cmd:diff3 cmd:ftp cmd:ftpd cmd:hd @@ -42,7 +38,6 @@ provides { cmd:ps cmd:renice cmd:resattr - cmd:sdiff cmd:su cmd:tcpdump cmd:telnet diff --git a/src/data/package_infos/x86/haiku b/src/data/package_infos/x86/haiku index 26166de0f3..423e89384e 100644 --- a/src/data/package_infos/x86/haiku +++ b/src/data/package_infos/x86/haiku @@ -18,17 +18,13 @@ flags system_package provides { haiku=%HAIKU_VERSION% compat>=R1~alpha1 - diffutils = 2.8.1 compat >= 0 cmd:arp cmd:bc cmd:chop cmd:clear - cmd:cmp cmd:compress cmd:dc cmd:df - cmd:diff = 2.8.1 - cmd:diff3 cmd:ftp cmd:ftpd cmd:hd @@ -42,7 +38,6 @@ provides { cmd:ps cmd:renice cmd:resattr - cmd:sdiff cmd:su cmd:tcpdump cmd:telnet diff --git a/src/data/package_infos/x86_64/haiku b/src/data/package_infos/x86_64/haiku index b0493e1733..c4ff4fb822 100644 --- a/src/data/package_infos/x86_64/haiku +++ b/src/data/package_infos/x86_64/haiku @@ -17,17 +17,13 @@ licenses { provides { haiku=%HAIKU_VERSION% compat>=R1~alpha1 - diffutils = 2.8.1 compat >= 0 cmd:arp cmd:bc cmd:chop cmd:clear - cmd:cmp cmd:compress cmd:dc cmd:df - cmd:diff = 2.8.1 - cmd:diff3 cmd:ftp cmd:ftpd cmd:hd @@ -41,7 +37,6 @@ provides { cmd:ps cmd:renice cmd:resattr - cmd:sdiff cmd:su cmd:tcpdump cmd:telnet diff --git a/src/data/package_infos/x86_gcc2/haiku b/src/data/package_infos/x86_gcc2/haiku index 58a7b7113b..856385929a 100644 --- a/src/data/package_infos/x86_gcc2/haiku +++ b/src/data/package_infos/x86_gcc2/haiku @@ -18,17 +18,13 @@ flags system_package provides { haiku=%HAIKU_VERSION% compat>=R1~alpha1 - diffutils = 2.8.1 compat >= 0 cmd:arp cmd:bc cmd:chop cmd:clear - cmd:cmp cmd:compress cmd:dc cmd:df - cmd:diff = 2.8.1 - cmd:diff3 cmd:ftp cmd:ftpd cmd:hd @@ -42,7 +38,6 @@ provides { cmd:ps cmd:renice cmd:resattr - cmd:sdiff cmd:su cmd:tcpdump cmd:telnet From a361dc5a171f8e31177d586a1c94ad1752c56ead Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Sat, 1 Aug 2015 14:46:15 +0200 Subject: [PATCH 074/126] Update ChannelSliderTest to add limit labels for individual channels --- .../kits/interface/ChannelSliderTest.cpp | 28 +++++++++++++++++++ src/tests/kits/interface/Jamfile | 2 +- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/tests/kits/interface/ChannelSliderTest.cpp b/src/tests/kits/interface/ChannelSliderTest.cpp index a6870e22ff..d3fe7f5901 100644 --- a/src/tests/kits/interface/ChannelSliderTest.cpp +++ b/src/tests/kits/interface/ChannelSliderTest.cpp @@ -2,6 +2,22 @@ #include #include +#include + + +struct limit_label { + std::string min_label; + std::string max_label; +}; + + +const struct limit_label kLabels[] = { + { "min_label_1", "max_label_1" }, + { "min_label_2", "max_label_2" }, + { "min_label_3", "max_label_3" }, +}; + + class MainWindow : public BWindow { public: MainWindow() @@ -34,6 +50,18 @@ public: horizontal->MoveBy(0.0, horizontal->Bounds().Height() + 10.0); ResizeTo(horizontal->Frame().right + 10, slider->Frame().bottom + 10); + + for (int32 i = 0; i < horizontal->CountChannels(); i++) { + horizontal->SetLimitLabelsFor(i, kLabels[i].min_label.c_str(), + kLabels[i].max_label.c_str()); + } + + for (int32 i = 0; i < horizontal->CountChannels(); i++) { + if (strcmp(horizontal->MinLimitLabelFor(i), kLabels[i].min_label.c_str()) != 0) + printf("wrong min label for channel %ld\n", i); + if (strcmp(horizontal->MaxLimitLabelFor(i), kLabels[i].max_label.c_str()) != 0) + printf("wrong max label for channel %ld\n", i); + } } virtual bool QuitRequested() { be_app->PostMessage(B_QUIT_REQUESTED); return BWindow::QuitRequested() ; } diff --git a/src/tests/kits/interface/Jamfile b/src/tests/kits/interface/Jamfile index 6ba39ae22b..72c0e270cc 100644 --- a/src/tests/kits/interface/Jamfile +++ b/src/tests/kits/interface/Jamfile @@ -82,7 +82,7 @@ SimpleTest ChannelSliderTest : ChannelSliderTest.cpp ChannelSlider.cpp ChannelControl.cpp - : be [ TargetLibsupc++ ] + : be [ TargetLibstdc++ TargetLibsupc++ ] ; SimpleTest CheckBoxTest : From 0b421b8025a1da938c3689ae67c58d5a58c8542f Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Sat, 1 Aug 2015 14:47:21 +0200 Subject: [PATCH 075/126] ChannelControl: Implemented SetLimitLabelsFor(). Implemented without testing how it's done on BeOS. Moreover, I have no idea if, when and where these labels should be drawn. --- src/kits/interface/ChannelControl.cpp | 35 +++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/src/kits/interface/ChannelControl.cpp b/src/kits/interface/ChannelControl.cpp index 1d1ccfa067..4e8f51ea1a 100644 --- a/src/kits/interface/ChannelControl.cpp +++ b/src/kits/interface/ChannelControl.cpp @@ -7,6 +7,15 @@ #include #include +#include +#include + +struct limit_label { + std::string min_label; + std::string max_label; +}; + +typedef std::map label_map; static property_info sPropertyInfo[] = { @@ -56,6 +65,8 @@ BChannelControl::BChannelControl(BRect frame, const char* name, fChannelValues = new int32[channel_count]; memset(fChannelValues, 0, sizeof(int32) * channel_count); + + fMultiLabels = (void*)new label_map; } @@ -80,6 +91,8 @@ BChannelControl::BChannelControl(const char* name, const char* label, fChannelValues = new int32[channelCount]; memset(fChannelValues, 0, sizeof(int32) * channelCount); + + fMultiLabels = (void*)new label_map; } @@ -127,6 +140,8 @@ BChannelControl::BChannelControl(BMessage* archive) fModificationMsg = modificationMessage; else delete modificationMessage; + + fMultiLabels = (void*)new label_map; } @@ -136,6 +151,7 @@ BChannelControl::~BChannelControl() delete[] fChannelMax; delete[] fChannelValues; delete fModificationMsg; + delete reinterpret_cast(fMultiLabels); } @@ -589,7 +605,9 @@ status_t BChannelControl::SetLimitLabelsFor(int32 channel, const char* minLabel, const char* maxLabel) { - return B_ERROR; + (*(label_map*)fMultiLabels)[channel].max_label = maxLabel; + (*(label_map*)fMultiLabels)[channel].min_label = minLabel; + return B_OK; } @@ -597,13 +615,21 @@ status_t BChannelControl::SetLimitLabelsFor(int32 fromChannel, int32 channelCount, const char* minLabel, const char* maxLabel) { - return B_ERROR; + for (int32 i = fromChannel; i < fromChannel + channelCount; i++) { + SetLimitLabelsFor(i, minLabel, maxLabel); + } + return B_OK; } const char* BChannelControl::MinLimitLabelFor(int32 channel) const { + if (fMultiLabels != NULL) { + label_map::const_iterator iter = ((label_map*)fMultiLabels)->find(channel); + if (iter != ((label_map*)fMultiLabels)->end()) + return (*iter).second.min_label.c_str(); + } return NULL; } @@ -611,6 +637,11 @@ BChannelControl::MinLimitLabelFor(int32 channel) const const char* BChannelControl::MaxLimitLabelFor(int32 channel) const { + if (fMultiLabels != NULL) { + label_map::const_iterator iter = ((label_map*)fMultiLabels)->find(channel); + if (iter != ((label_map*)fMultiLabels)->end()) + return (*iter).second.max_label.c_str(); + } return NULL; } From 7019117402dff458e6297b09b235c4cb7811cdcf Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Sat, 1 Aug 2015 15:04:13 +0200 Subject: [PATCH 076/126] ChannelSlider: Remove original look. The Thumb returned by BChannelSlider::ThumbFor() is currently ignored. --- src/kits/interface/ChannelSlider.cpp | 32 ---------------------------- 1 file changed, 32 deletions(-) diff --git a/src/kits/interface/ChannelSlider.cpp b/src/kits/interface/ChannelSlider.cpp index 46c3f1d2da..8f8d41a0d9 100644 --- a/src/kits/interface/ChannelSlider.cpp +++ b/src/kits/interface/ChannelSlider.cpp @@ -573,14 +573,6 @@ BChannelSlider::DrawGroove(BView* into, int32 channel, BPoint leftTop, uint32 flags = 0; be_control_look->DrawSliderBar(into, rect, rect, base, barColor, flags, Orientation()); - -#if 0 - // Disabled original look - _DrawGrooveFrame(fBackingView, rect.InsetByCopy(-2.5, -2.5)); - - rect.InsetBy(-0.5, -0.5); - into->FillRect(rect, B_SOLID_HIGH); -#endif } @@ -608,30 +600,6 @@ BChannelSlider::DrawThumb(BView* into, int32 channel, BPoint where, uint32 flags = 0; be_control_look->DrawSliderThumb(into, rect, rect, base, flags, Orientation()); - -#if 0 - // Disabled original look which takes into account the pressed state - into->PushState(); - - into->SetDrawingMode(B_OP_OVER); - into->DrawBitmapAsync(thumb, where); - - if (pressed) { - into->SetDrawingMode(B_OP_ALPHA); - - rgb_color color = tint_color(into->ViewColor(), B_DARKEN_4_TINT); - color.alpha = 128; - into->SetHighColor(color); - - BRect destRect(where, where); - destRect.right += bitmapBounds.right; - destRect.bottom += bitmapBounds.bottom; - - into->FillRect(destRect); - } - - into->PopState(); -#endif } From 5dc23a0514ff4c581cdf87aba00b7259240a3be9 Mon Sep 17 00:00:00 2001 From: Humdinger Date: Sat, 1 Aug 2015 19:16:37 +0200 Subject: [PATCH 077/126] Update Clipdinger package to v0.4. Fewer bugs. More favorites. See http://humdingerb.github.io/clipdinger/ --- build/jam/repositories/HaikuPorts/x86_gcc2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index 598e46e762..3bfcba867b 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -71,7 +71,7 @@ RemotePackageRepository HaikuPorts cdrtools-3.01~a30-1 cdrtools_devel-3.01~a30-1 chat-20100903-2 - clipdinger-0.3-1 + clipdinger-0.4-1 clockwerk-git-3 cpctools-0.3.0-2 criticalmass-2.2-1 From 1102b7e184116aa8d63b1f693a15fe3e0fe69907 Mon Sep 17 00:00:00 2001 From: Humdinger Date: Sun, 2 Aug 2015 13:23:17 +0200 Subject: [PATCH 078/126] Added packages for Clipdinger for x86 and x86_64 platforms. --- build/jam/repositories/HaikuPorts/x86 | 2 ++ build/jam/repositories/HaikuPorts/x86_64 | 2 ++ 2 files changed, 4 insertions(+) diff --git a/build/jam/repositories/HaikuPorts/x86 b/build/jam/repositories/HaikuPorts/x86 index 14e1527932..0853ba45cd 100644 --- a/build/jam/repositories/HaikuPorts/x86 +++ b/build/jam/repositories/HaikuPorts/x86 @@ -36,6 +36,7 @@ RemotePackageRepository HaikuPorts cdrtools_devel-3.01~a27-1 clang-3.4-3 clang_analysis-3.4-3 + clipdinger-0.4-1 cmake-3.0.0_rc3-1 coreutils-8.23-1 cpio-2.10-1 @@ -334,6 +335,7 @@ RemotePackageRepository HaikuPorts cdrtools clang cmake + clipdinger coreutils cpio ctags diff --git a/build/jam/repositories/HaikuPorts/x86_64 b/build/jam/repositories/HaikuPorts/x86_64 index 9cfe3b5909..951a59a779 100644 --- a/build/jam/repositories/HaikuPorts/x86_64 +++ b/build/jam/repositories/HaikuPorts/x86_64 @@ -58,6 +58,7 @@ RemotePackageRepository HaikuPorts cdrtools_devel-3.01~a29-1 clang-3.5.1-1 clang_analysis-3.5.1-1 + clipdinger-0.4-1 cmake-3.2.3-1 coreutils-8.23-1 cppunit-1.12.1-2 @@ -336,6 +337,7 @@ RemotePackageRepository HaikuPorts bzip2 cdrtools clang + clipdinger cmake coreutils cppunit From 0a0b817fd5326132bf25cfe0e3ce1d5c5cb90124 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Sun, 2 Aug 2015 14:05:22 +0200 Subject: [PATCH 079/126] Update coreutils and xz_utils packages. --- build/jam/repositories/HaikuPorts/x86 | 6 +++--- build/jam/repositories/HaikuPorts/x86_64 | 6 +++--- build/jam/repositories/HaikuPorts/x86_gcc2 | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/build/jam/repositories/HaikuPorts/x86 b/build/jam/repositories/HaikuPorts/x86 index 0853ba45cd..d1f2c04c5f 100644 --- a/build/jam/repositories/HaikuPorts/x86 +++ b/build/jam/repositories/HaikuPorts/x86 @@ -38,7 +38,7 @@ RemotePackageRepository HaikuPorts clang_analysis-3.4-3 clipdinger-0.4-1 cmake-3.0.0_rc3-1 - coreutils-8.23-1 + coreutils-8.24-1 cpio-2.10-1 ctags-5.8-3 curl-7.42.1-1 @@ -234,8 +234,8 @@ RemotePackageRepository HaikuPorts which-2.21-1 wpa_supplicant-2.0-3 xml_parser-2.36-1 - xz_utils-5.0.8-1 - xz_utils_devel-5.0.8-1 + xz_utils-5.0.8-2 + xz_utils_devel-5.0.8-2 yasm-1.2.0-3 zip-3.0-2 zlib-1.2.8-4 diff --git a/build/jam/repositories/HaikuPorts/x86_64 b/build/jam/repositories/HaikuPorts/x86_64 index 951a59a779..6171a9be13 100644 --- a/build/jam/repositories/HaikuPorts/x86_64 +++ b/build/jam/repositories/HaikuPorts/x86_64 @@ -60,7 +60,7 @@ RemotePackageRepository HaikuPorts clang_analysis-3.5.1-1 clipdinger-0.4-1 cmake-3.2.3-1 - coreutils-8.23-1 + coreutils-8.24-1 cppunit-1.12.1-2 cppunit_devel-1.12.1-2 ctags-5.8-3 @@ -316,8 +316,8 @@ RemotePackageRepository HaikuPorts xml_parser-2.36-1 x264-20140308-1 x264_devel-20140308-1 - xz_utils-5.0.6-1 - xz_utils_devel-5.0.6-1 + xz_utils-5.0.8-2 + xz_utils_devel-5.0.8-2 yasm-1.2.0-3 zip-3.0-2 zlib-1.2.8-4 diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index 3bfcba867b..ac4fb1c326 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -77,7 +77,7 @@ RemotePackageRepository HaikuPorts criticalmass-2.2-1 ctags-5.8-3 colors-2.3-1 - coreutils-8.23-1 + coreutils-8.24-1 curl-7.42.1-1 curl_devel-7.42.1-1 cvs-1.12.13.1-6 @@ -842,8 +842,8 @@ RemotePackageRepository HaikuPorts vacuum_x86-1.2.5-1 vcmi_x86-0.94-1 wizznic_x86-0.9.9-2 - xz_utils_x86-5.0.5-3 - xz_utils_x86_devel-5.0.5-3 + xz_utils_x86-5.0.8-2 + xz_utils_x86_devel-5.0.8-2 zlib_x86-1.2.8-4 zlib_x86_devel-1.2.8-4 : From 31afee27730f7d80a2b92ae80505b5264fe0f59e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Sun, 2 Aug 2015 14:48:01 +0200 Subject: [PATCH 080/126] Update binutils packages. * only the version format string differs. --- build/jam/repositories/HaikuPorts/x86 | 2 +- build/jam/repositories/HaikuPorts/x86_64 | 2 +- build/jam/repositories/HaikuPorts/x86_gcc2 | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build/jam/repositories/HaikuPorts/x86 b/build/jam/repositories/HaikuPorts/x86 index d1f2c04c5f..80ad6bf193 100644 --- a/build/jam/repositories/HaikuPorts/x86 +++ b/build/jam/repositories/HaikuPorts/x86 @@ -26,7 +26,7 @@ RemotePackageRepository HaikuPorts beam-1.2-1 bepdf-1.2.0-1 bescreencapture-1.9.4-1 - binutils-2.25.1_2015_07_31-1 + binutils-2.25_12015_07_31-1 bison-2.4.3-6 buildbot_slave-0.8.8-2 burnitnow-0.1.0-1 diff --git a/build/jam/repositories/HaikuPorts/x86_64 b/build/jam/repositories/HaikuPorts/x86_64 index 6171a9be13..83d49c7c48 100644 --- a/build/jam/repositories/HaikuPorts/x86_64 +++ b/build/jam/repositories/HaikuPorts/x86_64 @@ -25,7 +25,7 @@ RemotePackageRepository HaikuPorts automake-1.13.1-4 bash-4.3.39-1 # bepdf-1.1.1~beta5_2013_04_28-1 - binutils-2.25.1_2015_07_31-1 + binutils-2.25_12015_07_31-1 bison-2.6.5-1 boost-1.55.0-6 boost_atomic-1.55.0-6 diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index ac4fb1c326..ed13949d03 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -514,7 +514,7 @@ RemotePackageRepository HaikuPorts avr_gcc_x86-4.8.2_2014_03_20-1 avrdude_x86-6.0.1-2 beshare_x86-2.31-1 - binutils_x86-2.25.1_2015_07_31-1 + binutils_x86-2.25_12015_07_31-1 bison_x86-2.5-1 boost_x86-1.55.0-6 boost_x86_atomic-1.55.0-6 From f9a8f3e72773095d5d7b2f2e1ff3eb3e58122f14 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Sun, 5 Jul 2015 11:41:32 +0200 Subject: [PATCH 081/126] Clean up various whitespace and fix one header guard. --- headers/private/kernel/file_cache.h | 2 +- headers/private/kernel/util/BitUtils.h | 2 +- headers/private/kernel/util/Constructor.h | 12 +++++----- .../private/kernel/util/MallocFreeAllocator.h | 4 ++-- headers/private/kernel/util/OpenHashTable.h | 2 +- headers/private/kernel/util/SplayTree.h | 24 +++++++++---------- src/system/kernel/lib/Jamfile | 12 +++++----- 7 files changed, 29 insertions(+), 29 deletions(-) diff --git a/headers/private/kernel/file_cache.h b/headers/private/kernel/file_cache.h index 3454aeb065..3e8fee2af6 100644 --- a/headers/private/kernel/file_cache.h +++ b/headers/private/kernel/file_cache.h @@ -20,7 +20,7 @@ #define CACHE_MODULES_NAME "file_cache" #define FILE_CACHE_SEQUENTIAL_ACCESS 0x01 -#define FILE_CACHE_LOADED_COMPLETELY 0x02 +#define FILE_CACHE_LOADED_COMPLETELY 0x02 #define FILE_CACHE_NO_IO 0x04 struct cache_module_info { diff --git a/headers/private/kernel/util/BitUtils.h b/headers/private/kernel/util/BitUtils.h index 55191d0079..43dab013fc 100644 --- a/headers/private/kernel/util/BitUtils.h +++ b/headers/private/kernel/util/BitUtils.h @@ -56,5 +56,5 @@ log2(uint32 v) } -#endif // KERNEL_UTIL_RANDOM_H +#endif // KERNEL_UTIL_BITUTIL_H diff --git a/headers/private/kernel/util/Constructor.h b/headers/private/kernel/util/Constructor.h index 796b66b289..4c46cbe3b3 100644 --- a/headers/private/kernel/util/Constructor.h +++ b/headers/private/kernel/util/Constructor.h @@ -10,7 +10,7 @@ public: typedef const DataType* ConstPointer; typedef DataType& Reference; typedef const DataType& ConstReference; - + /*! Constructs the object pointed to by \a object via a zero-parameter constructor. */ @@ -19,7 +19,7 @@ public: if (object) new(reinterpret_cast(object)) DataType(); } - + /*! Constructs the object pointed to by \a object via a one-parameter constructor using the given argument. */ @@ -29,7 +29,7 @@ public: if (object) new(reinterpret_cast(object)) DataType(arg1); } - + /*! Constructs the object pointed to by \a object via a two-parameter constructor using the given arguments. */ @@ -39,7 +39,7 @@ public: if (object) new(reinterpret_cast(object)) DataType(arg1, arg2); } - + /*! Constructs the object pointed to by \a object via a three-parameter constructor using the given arguments. */ @@ -49,7 +49,7 @@ public: if (object) new(reinterpret_cast(object)) DataType(arg1, arg2, arg3); } - + /*! Constructs the object pointed to by \a object via a four-parameter constructor using the given arguments. */ @@ -60,7 +60,7 @@ public: ArgType4 arg4) { if (object) new(reinterpret_cast(object)) DataType(arg1, arg2, arg3, arg4); - } + } /*! Calls the destructor for the object pointed to be \a object. */ diff --git a/headers/private/kernel/util/MallocFreeAllocator.h b/headers/private/kernel/util/MallocFreeAllocator.h index 5947f4b6fc..12eb665c0c 100644 --- a/headers/private/kernel/util/MallocFreeAllocator.h +++ b/headers/private/kernel/util/MallocFreeAllocator.h @@ -12,14 +12,14 @@ public: typedef const DataType* ConstPointer; typedef DataType& Reference; typedef const DataType& ConstReference; - + /*! malloc()'s an object of type \c DataType and returns a pointer to it. */ Pointer Allocate() { return reinterpret_cast(malloc(sizeof(DataType))); } - + /*! free()'s the given object. */ void Deallocate(Pointer object) { diff --git a/headers/private/kernel/util/OpenHashTable.h b/headers/private/kernel/util/OpenHashTable.h index 9f54849aa4..bb1479cd7b 100644 --- a/headers/private/kernel/util/OpenHashTable.h +++ b/headers/private/kernel/util/OpenHashTable.h @@ -74,7 +74,7 @@ struct MallocAllocator { * stored in a linked list. The table may be made to adjust its number of slots * depending on the load factor (this should be enabled unless the object is to * be used at times where memory allocations aren't possible, such as code - * called byt he memory allocator). + * called by the memory allocator). * * The link between entries is part of the ValueType stored items, which makes * sure the table can always accept new items and will never fail because it is diff --git a/headers/private/kernel/util/SplayTree.h b/headers/private/kernel/util/SplayTree.h index 551a7a4ce6..4a2c8c7efb 100644 --- a/headers/private/kernel/util/SplayTree.h +++ b/headers/private/kernel/util/SplayTree.h @@ -117,7 +117,7 @@ public: } return node; - } + } /*! Remove from the tree. @@ -143,7 +143,7 @@ public: } return true; - } + } /*! Find the smallest item in the tree. @@ -163,9 +163,9 @@ public: return node; } - /*! + /*! Find the largest item in the tree. - */ + */ Node* FindMax() { if (fRoot == NULL) @@ -179,9 +179,9 @@ public: _Splay(Definition::GetKey(node)); return node; - } + } - /*! + /*! Find an item in the tree. */ Node* Lookup(const Key& key) @@ -192,14 +192,14 @@ public: _Splay(key); return Definition::Compare(key, fRoot) == 0 ? fRoot : NULL; - } + } Node* Root() const { return fRoot; } - /*! + /*! Test if the tree is logically empty. \return true if empty, false otherwise. */ @@ -267,16 +267,16 @@ private: _Splay(key) does the splay operation on the given key. If key is in the tree, then the node containing - that key becomes the root. If key is not in the tree, + that key becomes the root. If key is not in the tree, then after the splay, key.root is either the greatest key < key in the tree, or the least key > key in the tree. This means, among other things, that if you splay with a key that's larger than any in the tree, the rightmost - node of the tree becomes the root. This property is used + node of the tree becomes the root. This property is used in the Remove() method. */ - void _Splay(const Key& key) { + void _Splay(const Key& key) { Link headerLink; headerLink.left = headerLink.right = NULL; @@ -554,7 +554,7 @@ public: return fTree.Root(); } - /*! + /*! Test if the tree is logically empty. \return true if empty, false otherwise. */ diff --git a/src/system/kernel/lib/Jamfile b/src/system/kernel/lib/Jamfile index cfb7b2a4f6..e890322ca9 100644 --- a/src/system/kernel/lib/Jamfile +++ b/src/system/kernel/lib/Jamfile @@ -46,12 +46,12 @@ SEARCH_SOURCE += [ FDirName $(posixSources) unistd ] ; KernelMergeObject kernel_lib_posix.o : # main - kernel_errno.cpp - dirent.c + kernel_errno.cpp + dirent.c fcntl.cpp - poll.c - utime.c - # locale + poll.c + utime.c + # locale ctype.cpp localeconv.cpp LocaleData.cpp @@ -76,7 +76,7 @@ KernelMergeObject kernel_lib_posix.o : mkdir.c select.c gettimeofday.c - uio.c + uio.c # time time.c # unistd From 86b58866404aa1dbc70b88d388f5fc13b4cc9656 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Sun, 26 Jul 2015 21:05:54 +0200 Subject: [PATCH 082/126] BReferenceable docs: Fix a typo and one obvious mixup. --- docs/user/support/Referenceable.dox | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/user/support/Referenceable.dox b/docs/user/support/Referenceable.dox index d581576517..2504a1d5f0 100644 --- a/docs/user/support/Referenceable.dox +++ b/docs/user/support/Referenceable.dox @@ -28,7 +28,7 @@ The C++ language provides two main ways of allocating objects: on the stack, and on the heap. Objects created on the heap must be managed by the - application and deleted when they are not needed. Objects allocatede on the + application and deleted when they are not needed. Objects allocated on the stack have a lifetime limited to the execution of the block they are declared in. @@ -197,7 +197,7 @@ The reference to the previously targetted object is released. A reference to the new object is acquired only if \p alreadyHasReference - is true. + is false. */ From 2fdea65c3a0b5f8680eee251c794c231ee507ce3 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Sat, 1 Aug 2015 09:57:22 +0200 Subject: [PATCH 083/126] tcp: Fix 64 bit build with debugging features enabled. --- .../network/protocols/tcp/TCPEndpoint.cpp | 110 ++++++++++-------- 1 file changed, 60 insertions(+), 50 deletions(-) diff --git a/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp b/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp index 5072e30902..a6d8e648f6 100644 --- a/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp +++ b/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp @@ -60,16 +60,19 @@ #ifdef TRACE_TCP // the space before ', ##args' is important in order for this to work with cpp 2.95 -# define TRACE(format, args...) dprintf("%ld: TCP [%llu] %p (%12s) " \ - format "\n", find_thread(NULL), system_time(), this, \ - name_for_state(fState) , ##args) +# define TRACE(format, args...) dprintf("%" B_PRId32 ": TCP [%" \ + B_PRIdBIGTIME "] %p (%12s) " format "\n", find_thread(NULL), \ + system_time(), this, name_for_state(fState) , ##args) #else # define TRACE(args...) do { } while (0) #endif #ifdef PROBE_TCP # define PROBE(buffer, window) \ - dprintf("TCP PROBE %llu %s %s %ld snxt %lu suna %lu cw %lu sst %lu win %lu swin %lu smax-suna %lu savail %lu sqused %lu rto %llu\n", \ + dprintf("TCP PROBE %" B_PRIdBIGTIME " %s %s %" B_PRIu32 " snxt %" B_PRIu32 \ + " suna %" B_PRIu32 " cw %" B_PRIu32 " sst %" B_PRIu32 " win %" \ + B_PRIu32 " swin %" B_PRIu32 " smax-suna %" B_PRIu32 " savail %" \ + B_PRIuSIZE " sqused %" B_PRIuSIZE " rto %" B_PRIdBIGTIME "\n", \ system_time(), PrintAddress(buffer->source), \ PrintAddress(buffer->destination), buffer->size, fSendNext.Number(), \ fSendUnacknowledged.Number(), fCongestionWindow, fSlowStartThreshold, \ @@ -101,9 +104,10 @@ public: virtual void AddDump(TraceOutput& out) { - out.Print("tcp:%p (%12s) receive buffer %p (%lu bytes), flags %x, " - "seq %lu, ack %lu, wnd %lu", fEndpoint, name_for_state(fState), - fBuffer, fBufferSize, fFlags, fSequence, fAcknowledge, fWindow); + out.Print("tcp:%p (%12s) receive buffer %p (%" B_PRIu32 " bytes), " + "flags %#" B_PRIx8 ", seq %" B_PRIu32 ", ack %" B_PRIu32 + ", wnd %" B_PRIu32, fEndpoint, name_for_state(fState), fBuffer, + fBufferSize, fFlags, fSequence, fAcknowledge, fWindow); } protected: @@ -137,10 +141,11 @@ public: virtual void AddDump(TraceOutput& out) { - out.Print("tcp:%p (%12s) send buffer %p (%lu bytes), flags %x, " - "seq %lu, ack %lu, first %lu, last %lu", - fEndpoint, name_for_state(fState), fBuffer, fBufferSize, fFlags, - fSequence, fAcknowledge, fFirstSequence, fLastSequence); + out.Print("tcp:%p (%12s) send buffer %p (%" B_PRIu32 " bytes), " + "flags %#" B_PRIx8 ", seq %" B_PRIu32 ", ack %" B_PRIu32 + ", first %" B_PRIu32 ", last %" B_PRIu32, fEndpoint, + name_for_state(fState), fBuffer, fBufferSize, fFlags, fSequence, + fAcknowledge, fFirstSequence, fLastSequence); } protected: @@ -210,7 +215,7 @@ public: virtual void AddDump(TraceOutput& out) { - out.Print("tcp:%p (%12s) error at line %ld: %s", fEndpoint, + out.Print("tcp:%p (%12s) error at line %" B_PRId32 ": %s", fEndpoint, name_for_state(fState), fLine, fError); } @@ -553,8 +558,8 @@ TCPEndpoint::Close() return status; } - TRACE("Close(): after waiting, the SendQ was left with %lu bytes.", - fSendQueue.Used()); + TRACE("Close(): after waiting, the SendQ was left with %" B_PRIuSIZE + " bytes.", fSendQueue.Used()); } return B_OK; } @@ -597,8 +602,8 @@ TCPEndpoint::Connect(const sockaddr* address) if (gStackModule->is_restarted_syscall()) { bigtime_t timeout = gStackModule->restore_syscall_restart_timeout(); status_t status = _WaitForEstablished(locker, timeout); - TRACE(" Connect(): Connection complete: %s (timeout was %llu)", - strerror(status), timeout); + TRACE(" Connect(): Connection complete: %s (timeout was %" + B_PRIdBIGTIME ")", strerror(status), timeout); return posix_error(status); } @@ -656,8 +661,8 @@ TCPEndpoint::Connect(const sockaddr* address) gStackModule->store_syscall_restart_timeout(absoluteTimeout); status = _WaitForEstablished(locker, absoluteTimeout); - TRACE(" Connect(): Connection complete: %s (timeout was %llu)", - strerror(status), timeout); + TRACE(" Connect(): Connection complete: %s (timeout was %" B_PRIdBIGTIME + ")", strerror(status), timeout); return posix_error(status); } @@ -784,9 +789,9 @@ TCPEndpoint::SendData(net_buffer *buffer) { MutexLocker lock(fLock); - TRACE("SendData(buffer %p, size %lu, flags %lx) [total %lu bytes, has %lu]", - buffer, buffer->size, buffer->flags, fSendQueue.Size(), - fSendQueue.Free()); + TRACE("SendData(buffer %p, size %" B_PRIu32 ", flags %#" B_PRIx32 + ") [total %" B_PRIuSIZE " bytes, has %" B_PRIuSIZE "]", buffer, + buffer->size, buffer->flags, fSendQueue.Size(), fSendQueue.Free()); uint32 flags = buffer->flags; @@ -851,7 +856,7 @@ TCPEndpoint::SendData(net_buffer *buffer) } } - TRACE(" SendData(): %lu bytes used.", fSendQueue.Used()); + TRACE(" SendData(): %" B_PRIuSIZE " bytes used.", fSendQueue.Used()); bool force = false; if ((flags & MSG_OOB) != 0) { @@ -885,7 +890,7 @@ TCPEndpoint::SendAvailable() else available = EPIPE; - TRACE("SendAvailable(): %li", available); + TRACE("SendAvailable(): %" B_PRIdSSIZE, available); return available; } @@ -906,7 +911,8 @@ TCPEndpoint::FillStat(net_stat *stat) status_t TCPEndpoint::ReadData(size_t numBytes, uint32 flags, net_buffer** _buffer) { - TRACE("ReadData(%lu bytes, flags 0x%x)", numBytes, (unsigned int)flags); + TRACE("ReadData(%" B_PRIuSIZE " bytes, flags %#" B_PRIx32 ")", numBytes, + flags); MutexLocker locker(fLock); @@ -977,7 +983,8 @@ TCPEndpoint::ReadData(size_t numBytes, uint32 flags, net_buffer** _buffer) } } - TRACE(" ReadData(): %lu are available.", fReceiveQueue.Available()); + TRACE(" ReadData(): %" B_PRIuSIZE " are available.", + fReceiveQueue.Available()); if (numBytes < fReceiveQueue.Available()) fReceiveList.Signal(); @@ -986,7 +993,8 @@ TCPEndpoint::ReadData(size_t numBytes, uint32 flags, net_buffer** _buffer) ssize_t receivedBytes = fReceiveQueue.Get(numBytes, !clone, _buffer); - TRACE(" ReadData(): %lu bytes kept.", fReceiveQueue.Available()); + TRACE(" ReadData(): %" B_PRIuSIZE " bytes kept.", + fReceiveQueue.Available()); // if we are opening the window, check if we should send an ACK if (!clone) @@ -1001,7 +1009,7 @@ TCPEndpoint::ReadAvailable() { MutexLocker locker(fLock); - TRACE("ReadAvailable(): %li", _AvailableData()); + TRACE("ReadAvailable(): %" B_PRIdSSIZE, _AvailableData()); return _AvailableData(); } @@ -1328,8 +1336,8 @@ TCPEndpoint::_AddData(tcp_segment_header& segment, net_buffer* buffer) segment.flags |= TCP_FLAG_FINISH; } - TRACE(" _AddData(): adding data, receive next = %lu. Now have %lu bytes.", - fReceiveNext.Number(), fReceiveQueue.Available()); + TRACE(" _AddData(): adding data, receive next = %" B_PRIu32 ". Now have %" + B_PRIuSIZE " bytes.", fReceiveNext.Number(), fReceiveQueue.Available()); if ((segment.flags & TCP_FLAG_PUSH) != 0) fReceiveQueue.SetPushPointer(); @@ -1543,8 +1551,8 @@ TCPEndpoint::_Receive(tcp_segment_header& segment, net_buffer* buffer) // Check sequence number if (!segment_in_sequence(segment, segmentLength, fReceiveNext, fReceiveWindow)) { - TRACE(" Receive(): segment out of window, next: %lu wnd: %lu", - fReceiveNext.Number(), fReceiveWindow); + TRACE(" Receive(): segment out of window, next: %" B_PRIu32 + " wnd: %" B_PRIu32, fReceiveNext.Number(), fReceiveWindow); if ((segment.flags & TCP_FLAG_RESET) != 0) { // TODO: this doesn't look right - review! return DROP; @@ -1602,7 +1610,7 @@ TCPEndpoint::_Receive(tcp_segment_header& segment, net_buffer* buffer) } // remove duplicate data at the start - TRACE("* remove %ld bytes from the start", drop); + TRACE("* remove %" B_PRId32 " bytes from the start", drop); gBufferModule->remove_header(buffer, drop); segment.sequence += drop; } @@ -1628,14 +1636,14 @@ TCPEndpoint::_Receive(tcp_segment_header& segment, net_buffer* buffer) } segment.flags &= ~(TCP_FLAG_FINISH | TCP_FLAG_PUSH); - TRACE("* remove %ld bytes from the end", drop); + TRACE("* remove %" B_PRId32 " bytes from the end", drop); gBufferModule->remove_trailer(buffer, drop); } #ifdef TRACE_TCP if (advertisedWindow > fSendWindow) { - TRACE(" Receive(): Window update %lu -> %lu", fSendWindow, - advertisedWindow); + TRACE(" Receive(): Window update %" B_PRIu32 " -> %" B_PRIu32, + fSendWindow, advertisedWindow); } #endif @@ -1777,7 +1785,7 @@ TCPEndpoint::_Receive(tcp_segment_header& segment, net_buffer* buffer) _UpdateTimestamps(segment, segmentLength); - TRACE("Receive() Action %ld", action); + TRACE("Receive() Action %" B_PRId32, action); return action; } @@ -1788,9 +1796,9 @@ TCPEndpoint::SegmentReceived(tcp_segment_header& segment, net_buffer* buffer) { MutexLocker locker(fLock); - TRACE("SegmentReceived(): buffer %p (%lu bytes) address %s to %s\n" - "\tflags 0x%x, seq %lu, ack %lu, wnd %lu", - buffer, buffer->size, PrintAddress(buffer->source), + TRACE("SegmentReceived(): buffer %p (%" B_PRIu32 " bytes) address %s " + "to %s flags %#" B_PRIx8 ", seq %" B_PRIu32 ", ack %" B_PRIu32 + ", wnd %" B_PRIu32, buffer, buffer->size, PrintAddress(buffer->source), PrintAddress(buffer->destination), segment.flags, segment.sequence, segment.acknowledge, (uint32)segment.advertised_window << fSendWindowShift); @@ -2048,9 +2056,10 @@ TCPEndpoint::_SendQueued(bool force, uint32 sendWindow) uint32 size = buffer->size; segment.sequence = fSendNext.Number(); - TRACE("SendQueued(): buffer %p (%lu bytes) address %s to %s\n" - "\tflags 0x%x, seq %lu, ack %lu, rwnd %hu, cwnd %lu, ssthresh %lu\n" - "\tlen %lu first %lu last %lu", + TRACE("SendQueued(): buffer %p (%" B_PRIu32 " bytes) address %s to " + "%s flags %#" B_PRIx8 ", seq %" B_PRIu32 ", ack %" B_PRIu32 + ", rwnd %" B_PRIu16 ", cwnd %" B_PRIu32 ", ssthresh %" B_PRIu32 + ", len %" B_PRIu32 ", first %" B_PRIu32 ", last %" B_PRIu32, buffer, buffer->size, PrintAddress(buffer->source), PrintAddress(buffer->destination), segment.flags, segment.sequence, segment.acknowledge, segment.advertised_window, @@ -2111,7 +2120,7 @@ TCPEndpoint::_SendQueued(bool force, uint32 sendWindow) // start the retransmition timer if (previousSendNext == fSendUnacknowledged && fSendNext > previousSendNext) { - TRACE(" SendQueue(): set retransmit timer with rto %llu", + TRACE(" SendQueue(): set retransmit timer with rto %" B_PRIdBIGTIME, fRetransmitTimeout); gStackModule->set_timer(&fRetransmitTimer, fRetransmitTimeout); @@ -2245,8 +2254,8 @@ TCPEndpoint::_UpdateRoundTripTime(int32 roundTripTime) fRetransmitTimeout = ((fRoundTripTime / 4 + fRoundTripDeviation) / 2) * kTimestampFactor; - TRACE(" RTO is now %llu (after rtt %ldms)", fRetransmitTimeout, - roundTripTime); + TRACE(" RTO is now %" B_PRIdBIGTIME " (after rtt %" B_PRId32 "ms)", + fRetransmitTimeout, roundTripTime); } @@ -2348,7 +2357,7 @@ TCPEndpoint::Dump() const kprintf(" accept sem: %" B_PRId32 "\n", fAcceptSemaphore); kprintf(" options: 0x%" B_PRIx32 "\n", (uint32)fOptions); kprintf(" send\n"); - kprintf(" window shift: %u\n", fSendWindowShift); + kprintf(" window shift: %" B_PRIu8 "\n", fSendWindowShift); kprintf(" unacknowledged: %" B_PRIu32 "\n", fSendUnacknowledged.Number()); kprintf(" next: %" B_PRIu32 "\n", fSendNext.Number()); @@ -2357,7 +2366,8 @@ TCPEndpoint::Dump() const kprintf(" window: %" B_PRIu32 "\n", fSendWindow); kprintf(" max window: %" B_PRIu32 "\n", fSendMaxWindow); kprintf(" max segment size: %" B_PRIu32 "\n", fSendMaxSegmentSize); - kprintf(" queue: %lu / %lu\n", fSendQueue.Used(), fSendQueue.Size()); + kprintf(" queue: %" B_PRIuSIZE " / %" B_PRIuSIZE "\n", fSendQueue.Used(), + fSendQueue.Size()); #if DEBUG_BUFFER_QUEUE fSendQueue.Dump(); #endif @@ -2366,14 +2376,14 @@ TCPEndpoint::Dump() const kprintf(" initial sequence: %" B_PRIu32 "\n", fInitialSendSequence.Number()); kprintf(" receive\n"); - kprintf(" window shift: %u\n", fReceiveWindowShift); + kprintf(" window shift: %" B_PRIu8 "\n", fReceiveWindowShift); kprintf(" next: %" B_PRIu32 "\n", fReceiveNext.Number()); kprintf(" max advertised: %" B_PRIu32 "\n", fReceiveMaxAdvertised.Number()); kprintf(" window: %" B_PRIu32 "\n", fReceiveWindow); kprintf(" max segment size: %" B_PRIu32 "\n", fReceiveMaxSegmentSize); - kprintf(" queue: %lu / %lu\n", fReceiveQueue.Available(), - fReceiveQueue.Size()); + kprintf(" queue: %" B_PRIuSIZE " / %" B_PRIuSIZE "\n", + fReceiveQueue.Available(), fReceiveQueue.Size()); #if DEBUG_BUFFER_QUEUE fReceiveQueue.Dump(); #endif From da8fbe0e5974bef73324b4297e7cc471b942b679 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Sun, 2 Aug 2015 15:10:06 +0200 Subject: [PATCH 084/126] tcp: Replace custom WaitList with ConditionVariable. The WaitList implementation had a race condition between checking for the condition and acquiering the semaphore. If a thread was rescheduled at that point, the signal could be missed due to the use of release_sem_etc() with the B_RELEASE_ALL flag while the thread was not yet waiting for the semaphore. The transfer would subsequently stall. --- .../network/protocols/tcp/TCPEndpoint.cpp | 100 +++++------------- .../network/protocols/tcp/TCPEndpoint.h | 25 ++--- 2 files changed, 34 insertions(+), 91 deletions(-) diff --git a/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp b/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp index a6d8e648f6..8204458499 100644 --- a/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp +++ b/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp @@ -364,68 +364,10 @@ state_needs_finish(int32 state) // #pragma mark - -WaitList::WaitList(const char* name) -{ - fCondition = 0; - fSem = create_sem(0, name); -} - - -WaitList::~WaitList() -{ - delete_sem(fSem); -} - - -status_t -WaitList::InitCheck() const -{ - return fSem; -} - - -status_t -WaitList::Wait(MutexLocker& locker, bigtime_t timeout) -{ - locker.Unlock(); - - status_t status = B_OK; - - while (!atomic_test_and_set(&fCondition, 0, 1)) { - status = acquire_sem_etc(fSem, 1, B_ABSOLUTE_TIMEOUT | B_CAN_INTERRUPT, - timeout); - if (status != B_OK) - break; - } - - locker.Lock(); - return status; -} - - -void -WaitList::Signal() -{ - atomic_or(&fCondition, 1); -#ifdef __HAIKU__ - release_sem_etc(fSem, 1, B_DO_NOT_RESCHEDULE | B_RELEASE_ALL); -#else - int32 count; - if (get_sem_count(fSem, &count) == B_OK && count < 0) - release_sem_etc(fSem, -count, B_DO_NOT_RESCHEDULE); -#endif -} - - -// #pragma mark - - - TCPEndpoint::TCPEndpoint(net_socket* socket) : ProtocolSocket(socket), fManager(NULL), - fReceiveList("tcp receive"), - fSendList("tcp send"), fOptions(0), fSendWindowShift(0), fReceiveWindowShift(0), @@ -457,6 +399,9 @@ TCPEndpoint::TCPEndpoint(net_socket* socket) // TODO: to be replaced with a real read/write locking strategy! mutex_init(&fLock, "tcp lock"); + fReceiveCondition.Init(this, "tcp receive"); + fSendCondition.Init(this, "tcp send"); + gStackModule->init_timer(&fPersistTimer, TCPEndpoint::_PersistTimer, this); gStackModule->init_timer(&fRetransmitTimer, TCPEndpoint::_RetransmitTimer, this); @@ -494,12 +439,6 @@ TCPEndpoint::~TCPEndpoint() status_t TCPEndpoint::InitCheck() const { - if (fReceiveList.InitCheck() < B_OK) - return fReceiveList.InitCheck(); - - if (fSendList.InitCheck() < B_OK) - return fSendList.InitCheck(); - return B_OK; } @@ -551,7 +490,7 @@ TCPEndpoint::Close() bigtime_t maximum = absolute_timeout(socket->linger * 1000000LL); while (fSendQueue.Used() > 0) { - status = fSendList.Wait(locker, maximum); + status = _WaitForCondition(fSendCondition, locker, maximum); if (status == B_TIMED_OUT || status == B_WOULD_BLOCK) break; else if (status < B_OK) @@ -817,7 +756,7 @@ TCPEndpoint::SendData(net_buffer *buffer) while (left > 0) { while (fSendQueue.Free() < socket->send.low_water_mark) { // wait until enough space is available - status_t status = fSendList.Wait(lock, timeout); + status_t status = _WaitForCondition(fSendCondition, lock, timeout); if (status < B_OK) { TRACE(" SendData() returning %s (%d)", strerror(posix_error(status)), (int)posix_error(status)); @@ -969,7 +908,7 @@ TCPEndpoint::ReadData(size_t numBytes, uint32 flags, net_buffer** _buffer) if ((fFlags & FLAG_NO_RECEIVE) != 0) return B_OK; - status_t status = fReceiveList.Wait(locker, timeout); + status_t status = _WaitForCondition(fReceiveCondition, locker, timeout); if (status < B_OK) { // The Open Group base specification mentions that EINTR should be // returned if the recv() is interrupted before _any data_ is @@ -987,7 +926,7 @@ TCPEndpoint::ReadData(size_t numBytes, uint32 flags, net_buffer** _buffer) fReceiveQueue.Available()); if (numBytes < fReceiveQueue.Available()) - fReceiveList.Signal(); + fReceiveCondition.NotifyAll(); bool clone = (flags & MSG_PEEK) != 0; @@ -1198,7 +1137,7 @@ TCPEndpoint::_MarkEstablished() release_sem_etc(fAcceptSemaphore, 1, B_DO_NOT_RESCHEDULE); } - fSendList.Signal(); + fSendCondition.NotifyAll(); gSocketModule->notify(socket, B_SELECT_WRITE, fSendQueue.Free()); } @@ -1212,7 +1151,7 @@ TCPEndpoint::_WaitForEstablished(MutexLocker &locker, bigtime_t timeout) if (socket->error != B_OK) return socket->error; - status_t status = fSendList.Wait(locker, timeout); + status_t status = _WaitForCondition(fSendCondition, locker, timeout); if (status < B_OK) return status; } @@ -1233,7 +1172,7 @@ TCPEndpoint::_Close() fFlags |= FLAG_DELETE_ON_CLOSE; - fSendList.Signal(); + fSendCondition.NotifyAll(); _NotifyReader(); if (gSocketModule->has_parent(socket)) { @@ -1311,7 +1250,7 @@ TCPEndpoint::_AvailableData() const void TCPEndpoint::_NotifyReader() { - fReceiveList.Signal(); + fReceiveCondition.NotifyAll(); gSocketModule->notify(socket, B_SELECT_READ, _AvailableData()); } @@ -2203,7 +2142,7 @@ TCPEndpoint::_Acknowledged(tcp_segment_header& segment) if (is_writable(fState)) { // notify threads waiting on the socket to become writable again - fSendList.Signal(); + fSendCondition.NotifyAll(); gSocketModule->notify(socket, B_SELECT_WRITE, fSendQueue.Free()); } @@ -2342,6 +2281,21 @@ TCPEndpoint::_TimeWaitTimer(net_timer* timer, void* _endpoint) } +/*static*/ status_t +TCPEndpoint::_WaitForCondition(ConditionVariable& condition, + MutexLocker& locker, bigtime_t timeout) +{ + ConditionVariableEntry entry; + condition.Add(&entry); + + locker.Unlock(); + status_t result = entry.Wait(B_ABSOLUTE_TIMEOUT | B_CAN_INTERRUPT, timeout); + locker.Lock(); + + return result; +} + + // #pragma mark - diff --git a/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.h b/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.h index 085e173e8e..c49bf47533 100644 --- a/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.h +++ b/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.h @@ -25,22 +25,6 @@ #include -class WaitList { -public: - WaitList(const char* name); - ~WaitList(); - - status_t InitCheck() const; - - status_t Wait(MutexLocker& locker, bigtime_t timeout = B_INFINITE_TIMEOUT); - void Signal(); - -private: - int32 fCondition; - sem_id fSem; -}; - - class TCPEndpoint : public net_protocol, public ProtocolSocket { public: TCPEndpoint(net_socket* socket); @@ -132,6 +116,9 @@ private: static void _DelayedAcknowledgeTimer(net_timer* timer, void* _endpoint); + static status_t _WaitForCondition(ConditionVariable& condition, + MutexLocker& locker, bigtime_t timeout); + private: TCPEndpoint* fConnectionHashLink; TCPEndpoint* fEndpointHashLink; @@ -141,8 +128,10 @@ private: mutex fLock; EndpointManager* fManager; - WaitList fReceiveList; - WaitList fSendList; + ConditionVariable + fReceiveCondition; + ConditionVariable + fSendCondition; sem_id fAcceptSemaphore; uint8 fOptions; From 5f7749078e1cf1c7ea9fa091a1c1f1d94ec37ce2 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Sun, 2 Aug 2015 18:29:29 +0200 Subject: [PATCH 085/126] tcp: Fix retransmit logic to avoid lots of spurious retransmits. The retransmit timer was only stopped when all in flight data was acknowledged and never updated on individual acknowledgements. This caused a lot of erroneous retransmits whenever the buffer was filled fast enough so that the acknowledgements never caught up, i.e. whenever uploading or streaming data. Move setting of the initial retransmit timer inside the send loop so it is closer to the actual time the segment is sent out and simplify the logic a bit. Limit the minimal retransmit timeout to 200 msecs to avoid spurious retransmit in the face of delayed acknowledgements. This is lower than the 1 second minimum the RFCs suggest. Other stacks use various other sub-second timeouts, the 200 msecs follows what Linux does. Also add the exponential back off of the retransmit timeout when retransmits are triggered. This is bounded by a 60 seconds maximum according to RFC6298. --- .../network/protocols/tcp/TCPEndpoint.cpp | 69 ++++++++++++------- .../kernel/network/protocols/tcp/tcp.h | 5 ++ 2 files changed, 50 insertions(+), 24 deletions(-) diff --git a/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp b/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp index 8204458499..4fab61628e 100644 --- a/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp +++ b/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp @@ -1953,7 +1953,8 @@ TCPEndpoint::_SendQueued(bool force, uint32 sendWindow) } uint32 length = min_c(fSendQueue.Available(fSendNext), sendWindow); - tcp_sequence previousSendNext = fSendNext; + bool shouldStartRetransmitTimer = fSendNext == fSendUnacknowledged; + bool retransmit = fSendNext < fSendMax; do { uint32 segmentMaxSize = fSendMaxSegmentSize @@ -1968,7 +1969,7 @@ TCPEndpoint::_SendQueued(bool force, uint32 sendWindow) } // Determine if we should really send this segment - if (!force && !_ShouldSendSegment(segment, segmentLength, + if (!force && !retransmit && !_ShouldSendSegment(segment, segmentLength, segmentMaxSize, flightSize)) { if (fSendQueue.Available() && !gStackModule->is_timer_active(&fPersistTimer) @@ -2047,24 +2048,25 @@ TCPEndpoint::_SendQueued(bool force, uint32 sendWindow) return status; } + if (shouldStartRetransmitTimer && size > 0) { + TRACE("starting initial retransmit timer of: %" B_PRIdBIGTIME, + fRetransmitTimeout); + gStackModule->set_timer(&fRetransmitTimer, fRetransmitTimeout); + shouldStartRetransmitTimer = false; + } + if (segment.flags & TCP_FLAG_ACKNOWLEDGE) fLastAcknowledgeSent = segment.acknowledge; length -= segmentLength; segment.flags &= ~(TCP_FLAG_SYNCHRONIZE | TCP_FLAG_RESET | TCP_FLAG_FINISH); + + if (retransmit) + break; + } while (length > 0); - // if we sent data from the beggining of the send queue, - // start the retransmition timer - if (previousSendNext == fSendUnacknowledged - && fSendNext > previousSendNext) { - TRACE(" SendQueue(): set retransmit timer with rto %" B_PRIdBIGTIME, - fRetransmitTimeout); - - gStackModule->set_timer(&fRetransmitTimer, fRetransmitTimeout); - } - return B_OK; } @@ -2120,24 +2122,34 @@ TCPEndpoint::_PrepareSendPath(const sockaddr* peer) void TCPEndpoint::_Acknowledged(tcp_segment_header& segment) { - size_t previouslyUsed = fSendQueue.Used(); + TRACE("_Acknowledged(): ack %" B_PRIu32 "; uack %" B_PRIu32 "; next %" + B_PRIu32 "; max %" B_PRIu32, segment.acknowledge, + fSendUnacknowledged.Number(), fSendNext.Number(), fSendMax.Number()); - fSendQueue.RemoveUntil(segment.acknowledge); - fSendUnacknowledged = segment.acknowledge; + ASSERT(fSendUnacknowledged <= segment.acknowledge); - if (fSendNext < fSendUnacknowledged) - fSendNext = fSendUnacknowledged; - - if (fSendUnacknowledged == fSendMax) - gStackModule->cancel_timer(&fRetransmitTimer); - - if (fSendQueue.Used() < previouslyUsed) { - // this ACK acknowledged data + if (fSendUnacknowledged < segment.acknowledge) { + fSendQueue.RemoveUntil(segment.acknowledge); + fSendUnacknowledged = segment.acknowledge; + if (fSendNext < fSendUnacknowledged) + fSendNext = fSendUnacknowledged; if (segment.options & TCP_HAS_TIMESTAMPS) _UpdateRoundTripTime(tcp_diff_timestamp(segment.timestamp_reply)); else { - // TODO: Fallback to RFC 793 type estimation + // TODO: Fallback to RFC 793 type estimation; This just resets + // any potential exponential back off that happened due to + // retransmits. + fRetransmitTimeout = TCP_INITIAL_RTT; + } + + if (fSendUnacknowledged == fSendMax) { + TRACE("all acknowledged, cancelling retransmission timer"); + gStackModule->cancel_timer(&fRetransmitTimer); + } else { + TRACE("data acknowledged, resetting retransmission timer to: %" + B_PRIdBIGTIME, fRetransmitTimeout); + gStackModule->set_timer(&fRetransmitTimer, fRetransmitTimeout); } if (is_writable(fState)) { @@ -2171,8 +2183,15 @@ void TCPEndpoint::_Retransmit() { TRACE("Retransmit()"); + _ResetSlowStart(); fSendNext = fSendUnacknowledged; + + // Do exponential back off of the retransmit timeout + fRetransmitTimeout *= 2; + if (fRetransmitTimeout > TCP_MAX_RETRANSMIT_TIMEOUT) + fRetransmitTimeout = TCP_MAX_RETRANSMIT_TIMEOUT; + _SendQueued(); } @@ -2192,6 +2211,8 @@ TCPEndpoint::_UpdateRoundTripTime(int32 roundTripTime) fRetransmitTimeout = ((fRoundTripTime / 4 + fRoundTripDeviation) / 2) * kTimestampFactor; + if (fRetransmitTimeout < TCP_MIN_RETRANSMIT_TIMEOUT) + fRetransmitTimeout = TCP_MIN_RETRANSMIT_TIMEOUT; TRACE(" RTO is now %" B_PRIdBIGTIME " (after rtt %" B_PRId32 "ms)", fRetransmitTimeout, roundTripTime); diff --git a/src/add-ons/kernel/network/protocols/tcp/tcp.h b/src/add-ons/kernel/network/protocols/tcp/tcp.h index 64e13acca0..07d4423022 100644 --- a/src/add-ons/kernel/network/protocols/tcp/tcp.h +++ b/src/add-ons/kernel/network/protocols/tcp/tcp.h @@ -186,6 +186,11 @@ operator==(tcp_sequence a, tcp_sequence b) #define TCP_MAX_WINDOW 65535 #define TCP_MAX_SEGMENT_LIFETIME 60000000 // 60 secs +// Minimum retransmit timeout (consider delayed ack) +#define TCP_MIN_RETRANSMIT_TIMEOUT 200000 // 200 msecs +// Maximum retransmit timeout (per RFC6298) +#define TCP_MAX_RETRANSMIT_TIMEOUT 60000000 // 60 secs + struct tcp_sack { uint32 left_edge; uint32 right_edge; From 01b0f935ec6177b7f20eeaf0955df0600ced66c3 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Sun, 2 Aug 2015 19:05:24 +0200 Subject: [PATCH 086/126] tcp: Move persist timeout value to a define in the header. --- src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp | 2 +- src/add-ons/kernel/network/protocols/tcp/tcp.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp b/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp index 4fab61628e..74caa4e761 100644 --- a/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp +++ b/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp @@ -1061,7 +1061,7 @@ TCPEndpoint::SendAcknowledge(bool force) void TCPEndpoint::_StartPersistTimer() { - gStackModule->set_timer(&fPersistTimer, 1000000LL); + gStackModule->set_timer(&fPersistTimer, TCP_PERSIST_TIMEOUT); } diff --git a/src/add-ons/kernel/network/protocols/tcp/tcp.h b/src/add-ons/kernel/network/protocols/tcp/tcp.h index 07d4423022..47fe3f0560 100644 --- a/src/add-ons/kernel/network/protocols/tcp/tcp.h +++ b/src/add-ons/kernel/network/protocols/tcp/tcp.h @@ -185,6 +185,7 @@ operator==(tcp_sequence a, tcp_sequence b) #define TCP_DEFAULT_MAX_SEGMENT_SIZE 536 #define TCP_MAX_WINDOW 65535 #define TCP_MAX_SEGMENT_LIFETIME 60000000 // 60 secs +#define TCP_PERSIST_TIMEOUT 1000000 // 1 sec // Minimum retransmit timeout (consider delayed ack) #define TCP_MIN_RETRANSMIT_TIMEOUT 200000 // 200 msecs From 05220224ffc203b62a13169288c178553e98ccb8 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Sun, 2 Aug 2015 19:10:27 +0200 Subject: [PATCH 087/126] tcp: Split Timer trace entry into Timer{Set|Triggered}. Trace whenever a timer is (re-)set as well as when it triggers. A value of -1 denotes the cancellation of the timer. --- .../network/protocols/tcp/TCPEndpoint.cpp | 50 ++++++++++++++++--- 1 file changed, 43 insertions(+), 7 deletions(-) diff --git a/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp b/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp index 74caa4e761..cfbb271dc1 100644 --- a/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp +++ b/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp @@ -226,9 +226,34 @@ protected: tcp_state fState; }; -class Timer : public AbstractTraceEntry { +class TimerSet : public AbstractTraceEntry { public: - Timer(TCPEndpoint* endpoint, const char* which) + TimerSet(TCPEndpoint* endpoint, const char* which, bigtime_t timeout) + : + fEndpoint(endpoint), + fWhich(which), + fTimeout(timeout), + fState(endpoint->State()) + { + Initialized(); + } + + virtual void AddDump(TraceOutput& out) + { + out.Print("tcp:%p (%12s) %s timer set to %" B_PRIdBIGTIME, fEndpoint, + name_for_state(fState), fWhich, fTimeout); + } + +protected: + TCPEndpoint* fEndpoint; + const char* fWhich; + bigtime_t fTimeout; + tcp_state fState; +}; + +class TimerTriggered : public AbstractTraceEntry { +public: + TimerTriggered(TCPEndpoint* endpoint, const char* which) : fEndpoint(endpoint), fWhich(which), @@ -239,7 +264,7 @@ public: virtual void AddDump(TraceOutput& out) { - out.Print("tcp:%p (%12s) %s timer", fEndpoint, + out.Print("tcp:%p (%12s) %s timer triggered", fEndpoint, name_for_state(fState), fWhich); } @@ -418,6 +443,7 @@ TCPEndpoint::~TCPEndpoint() _CancelConnectionTimers(); gStackModule->cancel_timer(&fTimeWaitTimer); + T(TimerSet(this, "time-wait", -1)); if (fManager != NULL) { fManager->Unbind(this); @@ -1042,11 +1068,13 @@ TCPEndpoint::DelayedAcknowledge() if (gStackModule->cancel_timer(&fDelayedAcknowledgeTimer)) { // timer was active, send an ACK now (with the exception above, // we send every other ACK) + T(TimerSet(this, "delayed ack", -1)); return SendAcknowledge(true); } gStackModule->set_timer(&fDelayedAcknowledgeTimer, TCP_DELAYED_ACKNOWLEDGE_TIMEOUT); + T(TimerSet(this, "delayed ack", TCP_DELAYED_ACKNOWLEDGE_TIMEOUT)); return B_OK; } @@ -1062,6 +1090,7 @@ void TCPEndpoint::_StartPersistTimer() { gStackModule->set_timer(&fPersistTimer, TCP_PERSIST_TIMEOUT); + T(TimerSet(this, "persist", TCP_PERSIST_TIMEOUT)); } @@ -1086,6 +1115,7 @@ void TCPEndpoint::_UpdateTimeWait() { gStackModule->set_timer(&fTimeWaitTimer, TCP_MAX_SEGMENT_LIFETIME << 1); + T(TimerSet(this, "time-wait", TCP_MAX_SEGMENT_LIFETIME << 1)); } @@ -1093,8 +1123,11 @@ void TCPEndpoint::_CancelConnectionTimers() { gStackModule->cancel_timer(&fRetransmitTimer); + T(TimerSet(this, "retransmit", -1)); gStackModule->cancel_timer(&fPersistTimer); + T(TimerSet(this, "persist", -1)); gStackModule->cancel_timer(&fDelayedAcknowledgeTimer); + T(TimerSet(this, "delayed ack", -1)); } @@ -2052,6 +2085,7 @@ TCPEndpoint::_SendQueued(bool force, uint32 sendWindow) TRACE("starting initial retransmit timer of: %" B_PRIdBIGTIME, fRetransmitTimeout); gStackModule->set_timer(&fRetransmitTimer, fRetransmitTimeout); + T(TimerSet(this, "retransmit", fRetransmitTimeout)); shouldStartRetransmitTimer = false; } @@ -2146,10 +2180,12 @@ TCPEndpoint::_Acknowledged(tcp_segment_header& segment) if (fSendUnacknowledged == fSendMax) { TRACE("all acknowledged, cancelling retransmission timer"); gStackModule->cancel_timer(&fRetransmitTimer); + T(TimerSet(this, "retransmit", -1)); } else { TRACE("data acknowledged, resetting retransmission timer to: %" B_PRIdBIGTIME, fRetransmitTimeout); gStackModule->set_timer(&fRetransmitTimer, fRetransmitTimeout); + T(TimerSet(this, "retransmit", fRetransmitTimeout)); } if (is_writable(fState)) { @@ -2235,7 +2271,7 @@ TCPEndpoint::_ResetSlowStart() TCPEndpoint::_RetransmitTimer(net_timer* timer, void* _endpoint) { TCPEndpoint* endpoint = (TCPEndpoint*)_endpoint; - T(Timer(endpoint, "retransmit")); + T(TimerTriggered(endpoint, "retransmit")); MutexLocker locker(endpoint->fLock); if (!locker.IsLocked()) @@ -2249,7 +2285,7 @@ TCPEndpoint::_RetransmitTimer(net_timer* timer, void* _endpoint) TCPEndpoint::_PersistTimer(net_timer* timer, void* _endpoint) { TCPEndpoint* endpoint = (TCPEndpoint*)_endpoint; - T(Timer(endpoint, "persist")); + T(TimerTriggered(endpoint, "persist")); MutexLocker locker(endpoint->fLock); if (!locker.IsLocked()) @@ -2267,7 +2303,7 @@ TCPEndpoint::_PersistTimer(net_timer* timer, void* _endpoint) TCPEndpoint::_DelayedAcknowledgeTimer(net_timer* timer, void* _endpoint) { TCPEndpoint* endpoint = (TCPEndpoint*)_endpoint; - T(Timer(endpoint, "delayed ack")); + T(TimerTriggered(endpoint, "delayed ack")); MutexLocker locker(endpoint->fLock); if (!locker.IsLocked()) @@ -2285,7 +2321,7 @@ TCPEndpoint::_DelayedAcknowledgeTimer(net_timer* timer, void* _endpoint) TCPEndpoint::_TimeWaitTimer(net_timer* timer, void* _endpoint) { TCPEndpoint* endpoint = (TCPEndpoint*)_endpoint; - T(Timer(endpoint, "time-wait")); + T(TimerTriggered(endpoint, "time-wait")); MutexLocker locker(endpoint->fLock); if (!locker.IsLocked()) From bc49140bab90e562dfff8a30f99e647c11779b30 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Sun, 2 Aug 2015 20:31:50 +0200 Subject: [PATCH 088/126] tcp: Add APICall trace entry and move TRACEs into locked parts. The APICall trace entry just records the function name but this is enough to deduce where some of the state changes come from. Also move the TRACE macros past the MutexLockers to ensure that their output happens at the time when the methods actually run. --- .../network/protocols/tcp/TCPEndpoint.cpp | 73 +++++++++++++++---- 1 file changed, 57 insertions(+), 16 deletions(-) diff --git a/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp b/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp index cfbb271dc1..61f010adf8 100644 --- a/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp +++ b/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp @@ -274,6 +274,29 @@ protected: tcp_state fState; }; +class APICall : public AbstractTraceEntry { +public: + APICall(TCPEndpoint* endpoint, const char* which) + : + fEndpoint(endpoint), + fWhich(which), + fState(endpoint->State()) + { + Initialized(); + } + + virtual void AddDump(TraceOutput& out) + { + out.Print("tcp:%p (%12s) api call: %s", fEndpoint, + name_for_state(fState), fWhich); + } + +protected: + TCPEndpoint* fEndpoint; + const char* fWhich; + tcp_state fState; +}; + } // namespace TCPTracing # define T(x) new(std::nothrow) TCPTracing::x @@ -434,6 +457,8 @@ TCPEndpoint::TCPEndpoint(net_socket* socket) TCPEndpoint::_DelayedAcknowledgeTimer, this); gStackModule->init_timer(&fTimeWaitTimer, TCPEndpoint::_TimeWaitTimer, this); + + T(APICall(this, "constructor")); } @@ -441,6 +466,8 @@ TCPEndpoint::~TCPEndpoint() { mutex_lock(&fLock); + T(APICall(this, "destructor")); + _CancelConnectionTimers(); gStackModule->cancel_timer(&fTimeWaitTimer); T(TimerSet(this, "time-wait", -1)); @@ -476,6 +503,7 @@ status_t TCPEndpoint::Open() { TRACE("Open()"); + T(APICall(this, "open")); status_t status = ProtocolSocket::Open(); if (status < B_OK) @@ -492,10 +520,11 @@ TCPEndpoint::Open() status_t TCPEndpoint::Close() { - TRACE("Close()"); - MutexLocker locker(fLock); + TRACE("Close()"); + T(APICall(this, "close")); + if (fState == LISTEN) delete_sem(fAcceptSemaphore); @@ -533,10 +562,11 @@ TCPEndpoint::Close() void TCPEndpoint::Free() { - TRACE("Free()"); - MutexLocker _(fLock); + TRACE("Free()"); + T(APICall(this, "free")); + if (fState <= SYNCHRONIZE_SENT) return; @@ -557,13 +587,14 @@ TCPEndpoint::Free() status_t TCPEndpoint::Connect(const sockaddr* address) { - TRACE("Connect() on address %s", PrintAddress(address)); - if (!AddressModule()->is_same_family(address)) return EAFNOSUPPORT; MutexLocker locker(fLock); + TRACE("Connect() on address %s", PrintAddress(address)); + T(APICall(this, "connect")); + if (gStackModule->is_restarted_syscall()) { bigtime_t timeout = gStackModule->restore_syscall_restart_timeout(); status_t status = _WaitForEstablished(locker, timeout); @@ -635,10 +666,11 @@ TCPEndpoint::Connect(const sockaddr* address) status_t TCPEndpoint::Accept(struct net_socket** _acceptedSocket) { - TRACE("Accept()"); - MutexLocker locker(fLock); + TRACE("Accept()"); + T(APICall(this, "accept")); + status_t status; bigtime_t timeout = absolute_timeout(socket->receive.timeout); if (gStackModule->is_restarted_syscall()) @@ -679,6 +711,7 @@ TCPEndpoint::Bind(const sockaddr *address) MutexLocker lock(fLock); TRACE("Bind() on address %s", PrintAddress(address)); + T(APICall(this, "bind")); if (fState != CLOSED) return EISCONN; @@ -690,9 +723,11 @@ TCPEndpoint::Bind(const sockaddr *address) status_t TCPEndpoint::Unbind(struct sockaddr *address) { - TRACE("Unbind()"); - MutexLocker _(fLock); + + TRACE("Unbind()"); + T(APICall(this, "unbind")); + return fManager->Unbind(this); } @@ -700,10 +735,11 @@ TCPEndpoint::Unbind(struct sockaddr *address) status_t TCPEndpoint::Listen(int count) { - TRACE("Listen()"); - MutexLocker _(fLock); + TRACE("Listen()"); + T(APICall(this, "listen")); + if (fState != CLOSED && fState != LISTEN) return B_BAD_VALUE; @@ -731,10 +767,11 @@ TCPEndpoint::Listen(int count) status_t TCPEndpoint::Shutdown(int direction) { - TRACE("Shutdown(%i)", direction); - MutexLocker lock(fLock); + TRACE("Shutdown(%i)", direction); + T(APICall(this, "shutdown")); + if (direction == SHUT_RD || direction == SHUT_RDWR) fFlags |= FLAG_NO_RECEIVE; @@ -757,6 +794,7 @@ TCPEndpoint::SendData(net_buffer *buffer) TRACE("SendData(buffer %p, size %" B_PRIu32 ", flags %#" B_PRIx32 ") [total %" B_PRIuSIZE " bytes, has %" B_PRIuSIZE "]", buffer, buffer->size, buffer->flags, fSendQueue.Size(), fSendQueue.Free()); + T(APICall(this, "senddata")); uint32 flags = buffer->flags; @@ -856,6 +894,7 @@ TCPEndpoint::SendAvailable() available = EPIPE; TRACE("SendAvailable(): %" B_PRIdSSIZE, available); + T(APICall(this, "sendavailable")); return available; } @@ -876,10 +915,11 @@ TCPEndpoint::FillStat(net_stat *stat) status_t TCPEndpoint::ReadData(size_t numBytes, uint32 flags, net_buffer** _buffer) { + MutexLocker locker(fLock); + TRACE("ReadData(%" B_PRIuSIZE " bytes, flags %#" B_PRIx32 ")", numBytes, flags); - - MutexLocker locker(fLock); + T(APICall(this, "readdata")); *_buffer = NULL; @@ -975,6 +1015,7 @@ TCPEndpoint::ReadAvailable() MutexLocker locker(fLock); TRACE("ReadAvailable(): %" B_PRIdSSIZE, _AvailableData()); + T(APICall(this, "readavailable")); return _AvailableData(); } From 94fb06bfce1f654a262e988fe224be42ffa4f8f1 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Sun, 2 Aug 2015 20:42:53 +0200 Subject: [PATCH 089/126] tcp: Fix early cancellation of timers on socket free. TCPEndpoint::Free() uses _EnterTimeWait() to start the time-wait timer for later cleanup. The latter did call _CancelConnectionTimers() unconditionally however, also cancelling a retransmit timer that was possibly still needed for the retransmission of the FIN packet. If the FIN packet got lost, the connection would be left open on the other end. --- .../kernel/network/protocols/tcp/TCPEndpoint.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp b/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp index 61f010adf8..476200681c 100644 --- a/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp +++ b/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp @@ -1138,14 +1138,16 @@ TCPEndpoint::_StartPersistTimer() void TCPEndpoint::_EnterTimeWait() { - TRACE("_EnterTimeWait()\n"); + TRACE("_EnterTimeWait()"); - _CancelConnectionTimers(); + if (fState == TIME_WAIT) { + _CancelConnectionTimers(); - if (fState == TIME_WAIT && IsLocal()) { - // we do not use TIME_WAIT state for local connections - fFlags |= FLAG_DELETE_ON_CLOSE; - return; + if (IsLocal()) { + // we do not use TIME_WAIT state for local connections + fFlags |= FLAG_DELETE_ON_CLOSE; + return; + } } _UpdateTimeWait(); From bed94ebc49e2b99d39a4a1ef1880d4d7a47a0c6d Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Sun, 2 Aug 2015 21:20:39 +0200 Subject: [PATCH 090/126] tcp: Change timestamp factor from 1024 to 1000. It is the conversion factor between the milliseconds tcp time and the microseconds system time, so 1024 does not make much sense. --- src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp b/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp index 476200681c..b4f52dd686 100644 --- a/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp +++ b/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp @@ -321,7 +321,8 @@ enum { }; -static const int kTimestampFactor = 1024; +static const int kTimestampFactor = 1000; + // conversion factor between usec system time and msec tcp time static inline bigtime_t From 8982293017b132c73aff734fa8baa7afd261e125 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Sun, 2 Aug 2015 21:18:02 +0200 Subject: [PATCH 091/126] tcp: Whitespace cleanup, move a define to header and fix a typo. --- .../network/protocols/tcp/TCPEndpoint.cpp | 11 ++---- .../network/protocols/tcp/TCPEndpoint.h | 2 +- .../kernel/network/protocols/tcp/tcp.h | 38 ++++++++++--------- 3 files changed, 25 insertions(+), 26 deletions(-) diff --git a/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp b/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp index b4f52dd686..d941d6e973 100644 --- a/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp +++ b/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp @@ -37,8 +37,8 @@ // References: -// - RFC 793 - Transmission Control Protocol -// - RFC 813 - Window and Acknowledgement Strategy in TCP +// - RFC 793 - Transmission Control Protocol +// - RFC 813 - Window and Acknowledgement Strategy in TCP // - RFC 1337 - TIME_WAIT Assassination Hazards in TCP // // Things this implementation currently doesn't implement: @@ -304,8 +304,6 @@ protected: # define T(x) #endif // TCP_TRACING -// Initial estimate for packet round trip time (RTT) -#define TCP_INITIAL_RTT 2000000 // constants for the fFlags field enum { @@ -1280,8 +1278,7 @@ TCPEndpoint::_DuplicateAcknowledge(tcp_segment_header &segment) if (fDuplicateAcknowledgeCount == 3) { _ResetSlowStart(); - fCongestionWindow = fSlowStartThreshold + 3 - * fSendMaxSegmentSize; + fCongestionWindow = fSlowStartThreshold + 3 * fSendMaxSegmentSize; fSendNext = segment.acknowledge; } else if (fDuplicateAcknowledgeCount > 3) fCongestionWindow += fSendMaxSegmentSize; @@ -2253,7 +2250,7 @@ TCPEndpoint::_Acknowledged(tcp_segment_header& segment) fCongestionWindow += increment; } - // if there is data left to be send, send it now + // if there is data left to be sent, send it now if (fSendQueue.Used() > 0) _SendQueued(); } diff --git a/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.h b/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.h index c49bf47533..1ff167b5bb 100644 --- a/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.h +++ b/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.h @@ -150,7 +150,7 @@ private: tcp_sequence fInitialSendSequence; uint32 fDuplicateAcknowledgeCount; - net_route *fRoute; + net_route *fRoute; // TODO: don't use a net_route, but a net_route_info!!! // (the latter will automatically adapt to routing changes) diff --git a/src/add-ons/kernel/network/protocols/tcp/tcp.h b/src/add-ons/kernel/network/protocols/tcp/tcp.h index 47fe3f0560..6f30ec2943 100644 --- a/src/add-ons/kernel/network/protocols/tcp/tcp.h +++ b/src/add-ons/kernel/network/protocols/tcp/tcp.h @@ -43,30 +43,30 @@ enum tcp_state { }; struct tcp_header { - uint16 source_port; - uint16 destination_port; - uint32 sequence; - uint32 acknowledge; + uint16 source_port; + uint16 destination_port; + uint32 sequence; + uint32 acknowledge; struct { #if B_HOST_IS_LENDIAN == 1 - uint8 reserved : 4; - uint8 header_length : 4; + uint8 reserved : 4; + uint8 header_length : 4; #else - uint8 header_length : 4; - uint8 reserved : 4; + uint8 header_length : 4; + uint8 reserved : 4; #endif }; - uint8 flags; - uint16 advertised_window; - uint16 checksum; - uint16 urgent_offset; + uint8 flags; + uint16 advertised_window; + uint16 checksum; + uint16 urgent_offset; - uint32 HeaderLength() const { return (uint32)header_length << 2; } - uint32 Sequence() const { return ntohl(sequence); } - uint32 Acknowledge() const { return ntohl(acknowledge); } - uint16 AdvertisedWindow() const { return ntohs(advertised_window); } - uint16 Checksum() const { return ntohs(checksum); } - uint16 UrgentOffset() const { return ntohs(urgent_offset); } + uint32 HeaderLength() const { return (uint32)header_length << 2; } + uint32 Sequence() const { return ntohl(sequence); } + uint32 Acknowledge() const { return ntohl(acknowledge); } + uint16 AdvertisedWindow() const { return ntohs(advertised_window); } + uint16 Checksum() const { return ntohs(checksum); } + uint16 UrgentOffset() const { return ntohs(urgent_offset); } } _PACKED; class tcp_sequence { @@ -187,6 +187,8 @@ operator==(tcp_sequence a, tcp_sequence b) #define TCP_MAX_SEGMENT_LIFETIME 60000000 // 60 secs #define TCP_PERSIST_TIMEOUT 1000000 // 1 sec +// Initial estimate for packet round trip time (RTT) +#define TCP_INITIAL_RTT 2000000 // 2 secs // Minimum retransmit timeout (consider delayed ack) #define TCP_MIN_RETRANSMIT_TIMEOUT 200000 // 200 msecs // Maximum retransmit timeout (per RFC6298) From 75b9de169f3cd4aa9a35e12f92f347a534398476 Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Mon, 3 Aug 2015 01:05:12 +0200 Subject: [PATCH 092/126] MediaDefs: Fix percentage in when notifying the system * Use TRACE instead of PRINT. --- src/kits/media/MediaDefs.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/kits/media/MediaDefs.cpp b/src/kits/media/MediaDefs.cpp index cd6e95a698..614e89f1e2 100644 --- a/src/kits/media/MediaDefs.cpp +++ b/src/kits/media/MediaDefs.cpp @@ -1261,7 +1261,7 @@ progress_shutdown(int stage, // parameter "message" is no longer used. It is kept for compatibility with // BeOS as this is used as a shutdown_media_server callback. - PRINT(("stage : %i\n", stage)); + TRACE("stage : %i\n", stage); const char* string = "Unknown stage"; switch (stage) { case 10: @@ -1285,7 +1285,7 @@ progress_shutdown(int stage, } if (progress == NULL) - notify_system(stage, string); + notify_system(stage/100.0f, string); else progress(stage, string, cookie); } @@ -1365,14 +1365,14 @@ progress_startup(int stage, // parameter "message" is no longer used. It is kept for compatibility with // BeOS as this is used as a shutdown_media_server callback. - PRINT(("stage : %i\n", stage)); + TRACE("stage : %i\n", stage); const char* string = "Unknown stage"; switch (stage) { case 10: string = B_TRANSLATE("Stopping media server" B_UTF8_ELLIPSIS); break; case 20: - string = B_TRANSLATE("Telling media_addon_server to quit."); + string = B_TRANSLATE("Stopping media_addon_server."); break; case 50: string = B_TRANSLATE("Starting media_services."); @@ -1386,7 +1386,7 @@ progress_startup(int stage, } if (progress == NULL) - notify_system(stage, string); + notify_system(stage/100.0f, string); else progress(stage, string, cookie); } From 313ed73b5052aa56878487ee050095659542b1dd Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Sat, 1 Aug 2015 14:08:44 +0200 Subject: [PATCH 093/126] Revert "media_server: Fix deadlock when killing from ProcessController" This reverts commit 5934b30b95a239eee4a088a9b9cb425eef13f22d. * It got the way of an heisenbug and it seems this change fixed the problems, but after 2 days the media_server returned to block. Sorry about that! Will investigate further. --- src/servers/media/media_server.cpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/servers/media/media_server.cpp b/src/servers/media/media_server.cpp index 6fd937f276..241c1148e5 100644 --- a/src/servers/media/media_server.cpp +++ b/src/servers/media/media_server.cpp @@ -918,13 +918,6 @@ ServerApp::_ControlThread(void* _server) int32 code; while ((size = read_port_etc(server->_ControlPort(), &code, data, sizeof(data), 0, 0)) > 0) { - - // NOTE: This prevents locks in Deskbar and - // possibly in other situations. - if (size == B_WOULD_BLOCK) { - snooze(100); - continue; - } server->_HandleMessage(code, data, size); } From 7e74eb0f42d1c18b16dca999fbd4fd750a12cebb Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Sun, 2 Aug 2015 20:46:34 +0200 Subject: [PATCH 094/126] MediaPlayer VideoProducer: Flush event on stop --- .../mediaplayer/media_node_framework/video/VideoProducer.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/apps/mediaplayer/media_node_framework/video/VideoProducer.cpp b/src/apps/mediaplayer/media_node_framework/video/VideoProducer.cpp index 64238600cd..774dfc3ed2 100644 --- a/src/apps/mediaplayer/media_node_framework/video/VideoProducer.cpp +++ b/src/apps/mediaplayer/media_node_framework/video/VideoProducer.cpp @@ -170,8 +170,13 @@ VideoProducer::HandleEvent(const media_timed_event* event, _HandleStart(event->event_time); break; case BTimedEventQueue::B_STOP: + { + EventQueue()->FlushEvents(event->event_time, + BTimedEventQueue::B_ALWAYS, + true, BTimedEventQueue::B_HANDLE_BUFFER); _HandleStop(); break; + } case BTimedEventQueue::B_WARP: _HandleTimeWarp(event->bigdata); break; From 8ecc32df1138c4468af5abdfd07a5bcb528a312e Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Mon, 3 Aug 2015 00:56:18 +0200 Subject: [PATCH 095/126] BBufferProducer: Returning B_ERROR hang up things --- src/kits/media/BufferProducer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/kits/media/BufferProducer.cpp b/src/kits/media/BufferProducer.cpp index 2540a238af..3358a7bf75 100644 --- a/src/kits/media/BufferProducer.cpp +++ b/src/kits/media/BufferProducer.cpp @@ -275,7 +275,7 @@ BBufferProducer::HandleMessage(int32 message, const void* data, size_t size) ERROR("BBufferProducer::HandleMessage PRODUCER_SET_BUFFER_GROUP" " group InitCheck() failed.\n"); delete group; - return B_ERROR; + return B_OK; } status_t status = SetBufferGroup(command->source, group); if (command->destination == media_destination::null) From 7771139cdf652d3712c0b96b8e9e2dda6db6191e Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Mon, 3 Aug 2015 01:35:09 +0200 Subject: [PATCH 096/126] BMediaEventLooper: Rewrite ControlLoop() * The first problem was the O(n^2) complexity of the algorithm, it's now linear and try to act in a circular way by dispatching events and reading the port in a balanced way. This exclude a certain degree of possible deadlocks. * Add detection and escape when the system try to kill the thread. This solve some blocking issues on exit et similia that i had with libjackcompat. * The algorithm choose soon which event to focus on. * Lateness is calculated just before the event is dispatched as it is the more appropriate place, otherwise we would be calculating something imprecise/guessed. * Remove timed_event_queue::queued_time. It's more precise to just use the RealTime() before to Dispatch the event. * It should solve the BSoundPlayer lateness problems. * With those improvements the media_kit is not going to lock completely under stress conditions, instead it try to work in a best effort shape. * There's still room for improvements, for example i'm considering some strategies in lateness situations such as update scheduling latency, try to decrease waiting time and detect when we are too early on the other hand to recover when the load go down. * Thanks to Julian Harnath for sharing his WIP patch which helped with some controls such as avoiding negative lateness. * Comments are welcome! --- headers/os/media/TimedEventQueue.h | 3 +- src/kits/media/MediaEventLooper.cpp | 118 +++++++++++----------- src/kits/media/TimedEventQueuePrivate.cpp | 2 - 3 files changed, 62 insertions(+), 61 deletions(-) diff --git a/headers/os/media/TimedEventQueue.h b/headers/os/media/TimedEventQueue.h index 190a792b1b..732fd1727b 100644 --- a/headers/os/media/TimedEventQueue.h +++ b/headers/os/media/TimedEventQueue.h @@ -38,9 +38,8 @@ struct media_timed_event { int32 data; int64 bigdata; char user_data[64]; - bigtime_t queued_time; // Real time when put in queue - uint32 _reserved_media_timed_event_[6]; + uint32 _reserved_media_timed_event_[8]; }; diff --git a/src/kits/media/MediaEventLooper.cpp b/src/kits/media/MediaEventLooper.cpp index 0ce44f56f8..d072bc3efb 100644 --- a/src/kits/media/MediaEventLooper.cpp +++ b/src/kits/media/MediaEventLooper.cpp @@ -1,4 +1,5 @@ /* + * Copyright (c) 2015 Dario Casalinuovo * Copyright (c) 2002, 2003 Marcus Overhagen * * Permission is hereby granted, free of charge, to any person obtaining @@ -212,68 +213,71 @@ BMediaEventLooper::ControlLoop() { CALLED(); - bool is_realtime = false; status_t err; - bigtime_t latency; - bigtime_t waituntil; - bigtime_t lateness; - for (;;) { - // while there are no events or it is not time for the earliest event, - // process messages using WaitForMessages. Whenever this funtion times out, - // we need to handle the next event - for (;;) { - if (RunState() == B_QUITTING) - return; - // BMediaEventLooper compensates your performance time by adding the event latency - // (see SetEventLatency()) and the scheduling latency (or, for real-time events, - // only the scheduling latency). + bigtime_t waitUntil = 0; + bigtime_t lateness = 0; + bool hasRealtime = false; + bool hasEvent = false; - latency = fEventLatency + fSchedulingLatency; - waituntil = B_INFINITE_TIMEOUT; - if (fEventQueue.HasEvents()) { - const media_timed_event *firstEvent = fEventQueue.FirstEvent(); - waituntil = TimeSource()->RealTimeFor(firstEvent->event_time, latency); - is_realtime = false; - lateness = firstEvent->queued_time - waituntil; - if (lateness > 0) { -// if (lateness > 1000) -// printf("node %02ld handling %12Ld at %12Ld -- %Ld late, queued at %Ld now %12Ld \n", -// ID(), fEventQueue.FirstEventTime(), TimeSource()->Now(), lateness, -// firstEvent->queued_time, TimeSource()->RealTime()); - is_realtime = false; - break; - } -// printf("node %02ld waiting for %12Ld that will happen at %12Ld\n", ID(), fEventQueue.FirstEventTime(), waituntil); - } - if (fRealTimeQueue.HasEvents()) { - const media_timed_event *firstEvent = fRealTimeQueue.FirstEvent(); - bigtime_t temp; - temp = firstEvent->event_time - fSchedulingLatency; - lateness = firstEvent->queued_time - temp; - if (lateness > 0) { - is_realtime = true; - break; - } - if (temp < waituntil) { - waituntil = temp; - is_realtime = true; - } - } - lateness = 0; // remove any extraneous value if we get this far - err = WaitForMessage(waituntil); - if (err == B_TIMED_OUT) - break; + // While there are no events or it is not time for the earliest event, + // process messages using WaitForMessages. Whenever this funtion times out, + // we need to handle the next event + + fSchedulingLatency = estimate_max_scheduling_latency(fControlThread); + while (true) { + if (RunState() == B_QUITTING) + return; + + // BMediaEventLooper compensates your performance time by adding + // the event latency (see SetEventLatency()) and the scheduling + // latency (or, for real-time events, only the scheduling latency). + + waitUntil = B_INFINITE_TIMEOUT; + hasRealtime = fRealTimeQueue.HasEvents(); + hasEvent = fEventQueue.HasEvents(); + + if (hasEvent) { + waitUntil = TimeSource()->RealTimeFor( + fEventQueue.FirstEvent()->event_time, + fEventLatency + fSchedulingLatency); + lateness = waitUntil; + } else if (!hasEvent && !hasRealtime) + goto ahead; + + if (hasEvent && hasRealtime) { + if (fRealTimeQueue.FirstEventTime() + - fSchedulingLatency <= waitUntil) { + hasEvent = false; + } else + hasRealtime = false; } - /// we have timed out - so handle the next event - media_timed_event event; - if (is_realtime) - err = fRealTimeQueue.RemoveFirstEvent(&event); - else - err = fEventQueue.RemoveFirstEvent(&event); -// printf("node %02ld handling %12Ld at %12Ld\n", ID(), event.event_time, TimeSource()->Now()); + if (hasRealtime) { + waitUntil = fRealTimeQueue.FirstEventTime() + - fSchedulingLatency; + lateness = waitUntil; + } - if (err == B_OK) DispatchEvent(&event, lateness, is_realtime); + if (waitUntil <= TimeSource()->RealTime()) + waitUntil = 0; + +ahead: + err = WaitForMessage(waitUntil); + if (err == B_TIMED_OUT) { + media_timed_event event; + if (hasEvent) + err = fEventQueue.RemoveFirstEvent(&event); + else + err = fRealTimeQueue.RemoveFirstEvent(&event); + + if (err == B_OK) { + lateness -= TimeSource()->RealTime(); + if (lateness < 0) + lateness = 0; + DispatchEvent(&event, lateness, hasRealtime); + } + } else if (err != B_OK) + return; } } diff --git a/src/kits/media/TimedEventQueuePrivate.cpp b/src/kits/media/TimedEventQueuePrivate.cpp index 3cc337c50a..6b5be4d988 100644 --- a/src/kits/media/TimedEventQueuePrivate.cpp +++ b/src/kits/media/TimedEventQueuePrivate.cpp @@ -78,8 +78,6 @@ _event_queue_imp::AddEvent(const media_timed_event &event) return B_BAD_VALUE; } - *(bigtime_t *)&event.queued_time = BTimeSource::RealTime(); - //create a new queue if (fFirstEntry == NULL) { ASSERT(fEventCount == 0); From 52100b0c0e79c475267b510420f1f1da133005ca Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Mon, 3 Aug 2015 13:15:59 +0200 Subject: [PATCH 097/126] Terminal: Support paths starting with '~' in hyperlink mode Implements #12282. --- src/apps/terminal/TermViewStates.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/apps/terminal/TermViewStates.cpp b/src/apps/terminal/TermViewStates.cpp index ed366b287c..e24fa8dc91 100644 --- a/src/apps/terminal/TermViewStates.cpp +++ b/src/apps/terminal/TermViewStates.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2013, Haiku, Inc. + * Copyright 2001-2015, Haiku, Inc. * Copyright 2003-2004 Kian Duffy, myob@users.sourceforge.net * Parts Copyright 1998-1999 Kazuho Okui and Takashi Murai. * All rights reserved. Distributed under the terms of the MIT license. @@ -23,8 +23,10 @@ #include #include #include +#include #include #include +#include #include #include #include @@ -896,7 +898,8 @@ TermView::HyperLinkState::_GetHyperLinkAt(BPoint where, bool pathPrefixOnly, path.Truncate(colonIndex); if (_EntryExists(path, actualPath)) { BString address = path == actualPath - ? text : BString(fCurrentDirectory) << '/' << text; + ? text + : BString(actualPath) << (text.String() + colonIndex); _link = HyperLink(text, address, i == 0 ? HyperLink::TYPE_PATH_WITH_LINE @@ -920,6 +923,14 @@ TermView::HyperLinkState::_EntryExists(const BString& path, if (path[0] == '/' || fCurrentDirectory.IsEmpty()) { _actualPath = path; + } else if (path == "~" || path.StartsWith("~/")) { + // Replace '~' with the user's home directory. We don't handle "~user" + // here yet. + BPath homeDirectory; + if (find_directory(B_USER_DIRECTORY, &homeDirectory) != B_OK) + return false; + _actualPath = homeDirectory.Path(); + _actualPath << path.String() + 1; } else { _actualPath.Truncate(0); _actualPath << fCurrentDirectory << '/' << path; From eae0eccd2ec3546db86f887197e6d14d50a5522d Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Mon, 3 Aug 2015 10:21:52 -0400 Subject: [PATCH 098/126] services_daemon: Delete from tree. Superseded by launch_daemon. --- src/servers/Jamfile | 1 - src/servers/services_daemon/Jamfile | 9 - .../services_daemon/ServicesDaemon.cpp | 232 ------------------ src/servers/services_daemon/ServicesDaemon.h | 27 -- .../services_daemon/ServicesDaemon.rdef | 69 ------ 5 files changed, 338 deletions(-) delete mode 100644 src/servers/services_daemon/Jamfile delete mode 100644 src/servers/services_daemon/ServicesDaemon.cpp delete mode 100644 src/servers/services_daemon/ServicesDaemon.h delete mode 100644 src/servers/services_daemon/ServicesDaemon.rdef diff --git a/src/servers/Jamfile b/src/servers/Jamfile index 6719cb14db..5a89c6d340 100644 --- a/src/servers/Jamfile +++ b/src/servers/Jamfile @@ -20,5 +20,4 @@ SubInclude HAIKU_TOP src servers power ; SubInclude HAIKU_TOP src servers print ; SubInclude HAIKU_TOP src servers print_addon ; SubInclude HAIKU_TOP src servers registrar ; -SubInclude HAIKU_TOP src servers services_daemon ; SubInclude HAIKU_TOP src servers syslog_daemon ; diff --git a/src/servers/services_daemon/Jamfile b/src/servers/services_daemon/Jamfile deleted file mode 100644 index 74151ae2af..0000000000 --- a/src/servers/services_daemon/Jamfile +++ /dev/null @@ -1,9 +0,0 @@ -SubDir HAIKU_TOP src servers services_daemon ; - -SetSubDirSupportedPlatformsBeOSCompatible ; - -Application services_daemon : - ServicesDaemon.cpp - : be media [ TargetLibsupc++ ] - : ServicesDaemon.rdef - ; diff --git a/src/servers/services_daemon/ServicesDaemon.cpp b/src/servers/services_daemon/ServicesDaemon.cpp deleted file mode 100644 index ea3ecfcce5..0000000000 --- a/src/servers/services_daemon/ServicesDaemon.cpp +++ /dev/null @@ -1,232 +0,0 @@ -/* - * Copyright (c) 2005-2006, Haiku, Inc. - * Distributed under the terms of the MIT license. - * - * Author: - * DarkWyrm - */ -#include "ServicesDaemon.h" -#include -#include -#include -#include -#include - -enum { - M_RELAUNCH_DESKBAR = 'rtsk', - M_RELAUNCH_TRACKER, - M_RELAUNCH_MAIL, - M_RELAUNCH_PRINT, - M_RELAUNCH_AUDIO, - M_RELAUNCH_MEDIA_ADDONS, - M_RELAUNCH_MEDIA, - M_RELAUNCH_MIDI -}; - -// Time delay in microseconds - 1 second -const bigtime_t kRelaunchDelay = 1000000; - -const char *gSignatures[] = { - "application/x-vnd.Be-TSKB", - "application/x-vnd.Be-TRAK", - "application/x-vnd.Be-POST", - "application/x-vnd.Be-PSRV", - "application/x-vnd.Be-AUSV", - "application/x-vnd.Be.addon-host", - "application/x-vnd.Be.media-server", - "application/x-vnd.be-midi-roster", - NULL -}; - -static sem_id sRelaunchSem; -static sem_id sQuitSem; - - - -App::App(void) - : BApplication("application/x-vnd.Haiku-ServicesDaemon"), - fStatus(B_NO_INIT) -{ - sRelaunchSem = create_sem(1,"relaunch_sem"); - sQuitSem = create_sem(1,"quit_sem"); - - // We will release this when we want the relauncher thread to quit - acquire_sem(sQuitSem); - - // We will release this semaphore when we want to activate the relauncher - // thread - acquire_sem(sRelaunchSem); - - fRelauncherID = spawn_thread(App::RelauncherThread, "relauncher_thread", - B_NORMAL_PRIORITY,this); - resume_thread(fRelauncherID); - - fStatus = be_roster->StartWatching(be_app_messenger, B_REQUEST_QUIT); - if (fStatus != B_OK) - PostMessage(B_QUIT_REQUESTED); -} - - -App::~App(void) -{ - // Release in this order so that there isn't a race condition when quitting. - // The thread waits - release_sem(sQuitSem); - release_sem(sRelaunchSem); - - int32 dummyval; - wait_for_thread(fRelauncherID, &dummyval); - - for (int32 i = 0; i < fSignatureList.CountItems(); i++) { - BString *item = (BString*) fSignatureList.ItemAt(i); - delete item; - } -} - - -bool -App::QuitRequested(void) -{ - if (fStatus == B_OK) - be_roster->StopWatching(be_app_messenger); - - return true; -} - - -void -App::MessageReceived(BMessage *msg) -{ - switch (msg->what) { - case B_SOME_APP_QUIT: { - BString string; - if (msg->FindString("be:signature",&string) != B_OK) - return; - - // See if the signature belongs to an app that has requested - // a restart - for (int32 i = 0; i < fSignatureList.CountItems(); i++) { - BString *item = (BString*) fSignatureList.ItemAt(i); - if (string.Compare(*item) == 0) { - fSignatureList.RemoveItem(item); - delete item; - - be_roster->Launch(string.String()); - return; - } - } - - int i = 0; - while (gSignatures[i]) { - // Checking to see if it's one of the supported signatures - // and if it is, add a relaunch message to the queue which is - // to be posted here at the - if (string.Compare(gSignatures[i]) == 0) { - BMessage *launchmsg = new BMessage(M_RELAUNCH_DESKBAR + i); - fRelaunchQueue.AddMessage(launchmsg); - - release_sem(sRelaunchSem); - acquire_sem(sRelaunchSem); - } - i++; - } - break; - } - case B_SERVICES_DAEMON_RESTART: { - BString signature; - if (msg->FindString("signature",&signature) == B_OK) - fSignatureList.AddItem(new BString(signature)); - break; - } - case M_RELAUNCH_DESKBAR: { - be_roster->Launch(gSignatures[msg->what - M_RELAUNCH_DESKBAR]); - break; - } - case M_RELAUNCH_TRACKER: { - be_roster->Launch(gSignatures[msg->what - M_RELAUNCH_DESKBAR]); - break; - } - case M_RELAUNCH_MAIL: { - be_roster->Launch(gSignatures[msg->what - M_RELAUNCH_DESKBAR]); - break; - } - case M_RELAUNCH_PRINT: { - be_roster->Launch(gSignatures[msg->what - M_RELAUNCH_DESKBAR]); - break; - } - case M_RELAUNCH_AUDIO: { - be_roster->Launch(gSignatures[msg->what - M_RELAUNCH_DESKBAR]); - break; - } - case M_RELAUNCH_MEDIA_ADDONS: - case M_RELAUNCH_MEDIA: { - shutdown_media_server(); - launch_media_server(); - break; - } - case M_RELAUNCH_MIDI: { - be_roster->Launch(gSignatures[msg->what - M_RELAUNCH_DESKBAR]); - break; - } - - default: - BApplication::MessageReceived(msg); - } -} - - -int32 -App::RelauncherThread(void *data) -{ - App *app = (App*) data; - - sem_info quitSemInfo; - get_sem_info(sQuitSem, &quitSemInfo); - - while (quitSemInfo.count > -1) { - // wait until we need to check for a relaunch - acquire_sem(sRelaunchSem); - - // We can afford to do this because while we have the semaphore, the - // app itself is locked. - BMessage *msg = app->fRelaunchQueue.NextMessage(); - - release_sem(sRelaunchSem); - - get_sem_info(sQuitSem, &quitSemInfo); - if (quitSemInfo.count > 0) { - if (msg) - delete msg; - break; - } - - if (msg) { - // Attempt to work around R5 shutdown procedures by checking for - // debug_server running state. If it's shut down, then chances - // are that the system is shutting down or has already done so. - // We use the debug server in particular because it's one of - // the few services that is available in safe mode which is - // closed on system shutdown. - - if (be_roster->IsRunning("application/x-vnd.Be-DBSV")) { - snooze(kRelaunchDelay); - app->PostMessage(msg->what); - delete msg; - } - } - - get_sem_info(sQuitSem, &quitSemInfo); - } - - return 0; -} - - -int -main(void) -{ - App *app = new App(); - app->Run(); - delete app; - return 0; -} diff --git a/src/servers/services_daemon/ServicesDaemon.h b/src/servers/services_daemon/ServicesDaemon.h deleted file mode 100644 index b5b64fdc32..0000000000 --- a/src/servers/services_daemon/ServicesDaemon.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef SERVICES_DAEMON_H -#define SERVICES_DAEMON_H - -#include -#include -#include - -class App : public BApplication -{ -public: - App(void); - ~App(void); - bool QuitRequested(void); - void MessageReceived(BMessage *msg); - -private: - static int32 RelauncherThread(void *data); - - thread_id fRelauncherID; - status_t fStatus; - BMessageQueue fRelaunchQueue; - - BList fSignatureList; -}; - - -#endif diff --git a/src/servers/services_daemon/ServicesDaemon.rdef b/src/servers/services_daemon/ServicesDaemon.rdef deleted file mode 100644 index ae85f58c14..0000000000 --- a/src/servers/services_daemon/ServicesDaemon.rdef +++ /dev/null @@ -1,69 +0,0 @@ -resource app_signature "application/x-vnd.Haiku-ServicesDaemon"; - -resource app_version { - major = 0, - middle = 0, - minor = 1, - - variety = B_APPV_ALPHA, - internal = 0, - - short_info = "Services Daemon", - long_info = "Services Daemon © 2006 Haiku" -}; - -resource app_flags B_EXCLUSIVE_LAUNCH | B_BACKGROUND_APP; - -resource(101, "BEOS:L:STD_ICON") #'ICON' array { - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFF" - $"FFFFFFFFFF000000000000000000000000000000FFFF003FD9D9D90000FFFFFF" - $"FFFFFFFF003F3F3F3F3F3F3F3F3F3F3F3F3F3F3F00003FD9D9D9D9D9D90000FF" - $"FFFFFFFF003FD9D9D9D9D9D9D9D9D9D9D9D9D9D93F3FAAAAD9D9D9D9D9D98300" - $"FFFFFFFF003FD98383838383838383D9D9D9D9D9D9838383AAAAD9D9D983AA00" - $"FFFFFFFFFFFF00000000000000003FD9D9D9D9D9833F3FD93F3FAAAA83AAAA00" - $"FFFF85FFFFFFFFFFFFFF04FFFF3FD9D98383833F3FD9D9D9D9D93F3FAAAAAA00" - $"FFFFFF989898FFFFFFFF04FF3F98989898989883D9D9D9D93F3FD9D983AA0011" - $"FFFFFF98989898989898989898989898AA9898989898D9D93F3FD9D9D9AA0017" - $"FFFFFFFF989898AA9898989898989898AA98989898989898D9D9D9D9D9830011" - $"FFFFFFFF98989898AAAAAAAAAA98989898AA989898989898D9D9D9D983AA0111" - $"FFFFFFFFFFFF98989898989898AAAAAAAAAAAA98989898989898D983AA001111" - $"FFFFFFFFFFFF009898989898AA989898989898AAAAAA9898989898AA001111FF" - $"FFFFFFFFFF001ED9839898989898989898AAAA989898AAAA989898981111FFFF" - $"FFFFFFFF003FD9838300040498989898AA98989898989898AAAA989811FFFFFF" - $"FFFFFF003FD98383001ED9D904041A9898989898989898989898AA98FFFFFFFF" - $"FFFF003FD98383031ED9D983830004041A0F04AAAA98989898989898FFFFFFFF" - $"FF003FD98383003FD9D98383003FD9D90404AAAAAA83AA001111FF9898FFFFFF" - $"003FD98383003FD9D98383003FD9D9838300AAAA83AA001111FFFFFF9898FFFF" - $"00D98383003FD9D98383003FD9D98383003FD98383001111FFFFFFFFFFFFFFFF" - $"FF0000003FD9D98383003FD9D98383003FD98383001111FFFFFFFFFFFFFFFFFF" - $"FFFF003FD9D98383003FD9D98383003FD98383001111FFFFFFFFFFFFFFFFFFFF" - $"FFFF00D9838306003FD9D98383003FD98383001111FFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFF0000001000D9D98383003FD98383001111FFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFF000000003FD98300001111FFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFF000000111111FFFFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" -}; - -resource(101, "BEOS:M:STD_ICON") #'MICN' array { - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFFFFFF0000FFFFFF" - $"FFFFFFFFFFFFFFFFFF0000D9D90000FF" - $"FFFFFF000000000000D9D9AAAAD98300" - $"FFFF00D9D9D9D9D9D983833F3FAAAA00" - $"FF980000000000D9D9D9D9D9D9D9AA00" - $"FFFF98989800D998989898D93FD9AA01" - $"FFFFFF9898AA989898AA9898D9830011" - $"FFFFFF009898AAAAAAAAAA98980011FF" - $"FFFF00D983009898AA9898AA980011FF" - $"FF00D98300D98398989898830098FFFF" - $"00D98300D98300D904D9830011FF98FF" - $"008300D98300D900D9830011FFFFFFFF" - $"FF00D98300D900D9830011FFFFFFFFFF" - $"FFFF0000000000000011FFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" -}; From c2e9a9227ecadca3a4fdc7e7f7569fb9c7dc1391 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Mon, 3 Aug 2015 10:56:40 -0400 Subject: [PATCH 099/126] Revert "BTwoDimensionalLayout: Removed duplicated code." This reverts commit fd3e3e7bfb6e31cced1a98fc6a24c45f2feeba93. Apparently this code wasn't duplicated, as it caused all sorts of problems in applications (e.g. Debugger was blank). Fixes #12269. --- src/kits/interface/TwoDimensionalLayout.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/kits/interface/TwoDimensionalLayout.cpp b/src/kits/interface/TwoDimensionalLayout.cpp index ffb93b0441..a37f67a792 100644 --- a/src/kits/interface/TwoDimensionalLayout.cpp +++ b/src/kits/interface/TwoDimensionalLayout.cpp @@ -21,6 +21,8 @@ #include "CollapsingLayouter.h" + + // Some words of explanation: // // This class is the base class for BLayouts that organize their items @@ -921,6 +923,13 @@ BTwoDimensionalLayout::VerticalCompoundLayouter::InternalGetHeightForWidth( } updateCachedInfo = true; + + // get the height for width info + fCachedMinHeightForWidth = fHeightForWidthLayouter->MinSize(); + fCachedMaxHeightForWidth = fHeightForWidthLayouter->MaxSize(); + fCachedPreferredHeightForWidth + = fHeightForWidthLayouter->PreferredSize(); + } else if (localLayouter->HasHeightForWidth()) { // There is a height for width layouter and it has been initialized // in the current layout context. So we just add the height for width From a4db376caae2083d6867ba4c2f5fb6fe423242da Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Mon, 3 Aug 2015 11:32:15 -0400 Subject: [PATCH 100/126] Tracker: Fix crash when the VirtualDirectoryWindow can't create the PoseView. Fixes #11859. We may want to show an error message rather than failing silently, but at least that is better than crashing. --- src/kits/tracker/ContainerWindow.cpp | 2 +- src/kits/tracker/Tracker.cpp | 6 ++++++ src/kits/tracker/VirtualDirectoryWindow.cpp | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/kits/tracker/ContainerWindow.cpp b/src/kits/tracker/ContainerWindow.cpp index 808e95717c..4cb4308c0a 100644 --- a/src/kits/tracker/ContainerWindow.cpp +++ b/src/kits/tracker/ContainerWindow.cpp @@ -1200,7 +1200,7 @@ BContainerWindow::SaveState(BMessage& message) const bool BContainerWindow::StateNeedsSaving() const { - return fStateNeedsSaving || PoseView()->StateNeedsSaving(); + return fPoseView != NULL && (fStateNeedsSaving || fPoseView->StateNeedsSaving()); } diff --git a/src/kits/tracker/Tracker.cpp b/src/kits/tracker/Tracker.cpp index fd2e0f4996..e5426cef32 100644 --- a/src/kits/tracker/Tracker.cpp +++ b/src/kits/tracker/Tracker.cpp @@ -1113,6 +1113,12 @@ TTracker::OpenContainerWindow(Model* model, BMessage* originalRefsList, if (model != NULL && window->LockLooper()) { window->CreatePoseView(model); + if (window->PoseView() == NULL) { + // Failed initialization. + window->PostMessage(B_QUIT_REQUESTED); + window->UnlockLooper(); + return; + } window->UnlockLooper(); } diff --git a/src/kits/tracker/VirtualDirectoryWindow.cpp b/src/kits/tracker/VirtualDirectoryWindow.cpp index 985bcc3f2b..40e361bfd8 100644 --- a/src/kits/tracker/VirtualDirectoryWindow.cpp +++ b/src/kits/tracker/VirtualDirectoryWindow.cpp @@ -76,6 +76,8 @@ void VirtualDirectoryWindow::CreatePoseView(Model* model) { fPoseView = NewPoseView(model, kListMode); + if (fPoseView == NULL) + return; fBorderedView->GroupLayout()->AddView(fPoseView); fBorderedView->EnableBorderHighlight(false); From e9c7257afb1c888992580c9b8b386d7adcd368e8 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Mon, 3 Aug 2015 11:39:32 -0400 Subject: [PATCH 101/126] BAlert: Use half-item spacing for layouts. Restores the old "compact" look. Fixes #12273. --- src/kits/interface/Alert.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/kits/interface/Alert.cpp b/src/kits/interface/Alert.cpp index 8c373fd5b1..422692771d 100644 --- a/src/kits/interface/Alert.cpp +++ b/src/kits/interface/Alert.cpp @@ -501,7 +501,7 @@ BAlert::_Init(const char* text, const char* button0, const char* button1, fTextView->SetWordWrap(true); fTextView->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNLIMITED)); - fButtonLayout = new BGroupLayout(B_HORIZONTAL); + fButtonLayout = new BGroupLayout(B_HORIZONTAL, B_USE_HALF_ITEM_SPACING); SetType(type); SetButtonWidth(buttonWidth); @@ -510,8 +510,8 @@ BAlert::_Init(const char* text, const char* button0, const char* button1, BLayoutBuilder::Group<>(this, B_HORIZONTAL, 0) .Add(fIconView) - .AddGroup(B_VERTICAL) - .SetInsets(B_USE_DEFAULT_SPACING) + .AddGroup(B_VERTICAL, B_USE_HALF_ITEM_SPACING) + .SetInsets(B_USE_HALF_ITEM_INSETS) .Add(fTextView) .AddGroup(B_HORIZONTAL, 0) .AddGlue() From bd35a040a5979f10ed9908cd39746a1d784e2b38 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Mon, 3 Aug 2015 11:47:25 -0400 Subject: [PATCH 102/126] rman: Delete from tree. Unused, and recipe exists. --- src/tools/Jamfile | 1 - src/tools/rman/CHANGES | 118 - src/tools/rman/Jamfile | 6 - src/tools/rman/MANIFEST | 25 - src/tools/rman/Makefile | 160 -- src/tools/rman/README-rman.txt | 52 - src/tools/rman/rman.1 | 273 -- src/tools/rman/rman.c | 4853 -------------------------------- src/tools/rman/rman.html | 342 --- 9 files changed, 5830 deletions(-) delete mode 100644 src/tools/rman/CHANGES delete mode 100644 src/tools/rman/Jamfile delete mode 100644 src/tools/rman/MANIFEST delete mode 100644 src/tools/rman/Makefile delete mode 100644 src/tools/rman/README-rman.txt delete mode 100644 src/tools/rman/rman.1 delete mode 100644 src/tools/rman/rman.c delete mode 100644 src/tools/rman/rman.html diff --git a/src/tools/Jamfile b/src/tools/Jamfile index 22de36c46e..680646e837 100644 --- a/src/tools/Jamfile +++ b/src/tools/Jamfile @@ -107,7 +107,6 @@ SubInclude HAIKU_TOP src tools package_repo ; SubInclude HAIKU_TOP src tools rc ; SubInclude HAIKU_TOP src tools remote_disk_server ; SubInclude HAIKU_TOP src tools resattr ; -SubInclude HAIKU_TOP src tools rman ; SubInclude HAIKU_TOP src tools translation ; SubInclude HAIKU_TOP src tools unflatten ; SubInclude HAIKU_TOP src tools unzip ; diff --git a/src/tools/rman/CHANGES b/src/tools/rman/CHANGES deleted file mode 100644 index 9118abad78..0000000000 --- a/src/tools/rman/CHANGES +++ /dev/null @@ -1,118 +0,0 @@ -1993 - 1 Apr as bs2tk posted to comp.lang.tcl (126 lines) - 2 bullets, change bars, copyright symbol - 5 boldface, other SGI nicks - 7 skip unrecognized escape codes -10 small caps -13 underscores considered uppercase so show up in default small caps font - screen out Ultrix junk (code getting pretty tangled now) -14 until Tk text has better tab support, replace tabs by spaces until get to next tab stop (for Ultrix); -t gives tabstop spacing -20 Solaris support (Larry Tsui) - 3 Jun section subheading parsing (Per-Erik Martin) -28 hyphenated man pages in SEE ALSO show up correctly in Links (Mike Steele) -13 Jul under FILES, fully qualified path names are added to Links, but this taken out immediately because not useful -14 option to keep changebars on right (Warren Jessop) - 5 Aug search for header, footer dynamically--no need to edit or search large list of patterns -11 -m kicks in man page formatting beyond nroff backspace kludges -27 handle double digit numbers better by trying again relative to end of line -19 Sep -T gives Tk extras (otherwise ASCII only) - -H gives headers only (implies -T off) -10 Oct -r reverse compiles to [tn]roff source (as Geoff Collyer's nam and fontch, but leveraging existing analysis so only addition of ~60 lines) (The code is device-driver obscure now--obfuscated C contest next.) -13 header and footer optionally available at bottom in Tk view (Marty Leisner) -19 "reflected" odd and even page headers&footers zapped -20 keep count of sections and subsections, using smaller font for larger numbers - 1 Nov reverse compiles to Ensemble, except for character ranges - 4 started rman rewrite for cleaner support of multiple output targets, including: plain ascii, headers only, TkMan, [nt]roff, Ensemble, SGML, HTML - 5 line filtering separated from other logic despite greater sophistication, RosettaMan faster than bs2tk (!) -28 Dec man page reference recognition (Michael Harrison) - - -1994 - 1 Jan identify descriptive lists by comparing scnt2 with s_avg - 3 tail-end table of contents in HTML documents - 5 -f and LaTeX output mode -24 proof-of-concept RTF output mode -26 handle man pages that don't have a header on the first page -28 parse "handwritten" man pages -22 Feb alpha version released - 6 Mar various bug fixes -10 beta version released -13 Jun fixed surious generation on
's (the existence of which pointed out by David Sibley) -22 Jul table recognition experiment. works reasonably well, except for tables with centered headers - 3 Aug allow for off-by-one (and -two) in identification of header and footer - fixed problem with recurrent/leftover text with OSF/1 bold bullets (yeesh) -12 Sep 2.0gamma released -13 check for *third* header, possibly centered, possibly after blank lines (Charles Anderson) - fixed tag ranges for lines following blank lines (just \n) of pages with global indentation (Owen Rees) -19 fixed two small problems with LaTeX (^ => \^, \bullet => $\bullet$) (Neal Becker) -24 simple check for erroneously being fed roff source -26 deal with bold +- as in ksh (ugh) -30 2.0delta released - 9 Oct special check for OSF to guard against section head interpreted as footer - 8 Nov Perl pod output format (result still needs work, but not much) - 7 Dec 2.0epsilon released (last one before final 2.0) -22 Happy Winter Solstice! 2.0 released - deprecated gets() replaced (Robert Withrow) -25 TkMan module's $w.show => $t, saving about 9% in generated characters - - -1995 - 1 Jan experiment with TkMan output to take advantage of my hack to Tk text (i.e., $t insert end "text" => $t insert end "text1" tag1 "text2" tag2 ...); results => output size reduced about 25%, time reduced about 12-15% -25 Mar back to old mark command for Tk module -8 May hyphens in SEE ALSO section would confuse link-finder, so re-linebreak if necessary(!) (Greg Earle & Uri Guttman) - 4 Aug put formats and options into tables (inspired by Steve Maguire's Writing Solid Code) -19 -V accepts colon-separated list of valid volume names (Dag Nygren) -22 MIME output format that's usable in Emacs 19.29 (just three hours at hacking HTML module) (Neal Becker) - 9 Sep nits in HTML and better Solaris code snippets (Drazen Kacar) -13 Nov Macintosh port by Matthias Neeracher -18 Dec adapted to LaTeX2e, null manRef yields italicized man ref (H. Palme) -28 allow long option names (Larry Schwimmer) - - -1996 -22 Jan fixed problem with hyphenation supression and tabs in man page--sheesh! (H. Palme) -23 May split TkMan format into Tk and TkMan (which calls Tk) -25 in TkMan format, initial spaces converted to tabs -24 Sep experiment with formatting from source's macros, for better transcription short of full nroff interpreter -27 commented out Ensemble output format, which nobody used - 2 Oct >4000 lines -11 - 8 Nov release 3.0 alpha. source code parsing works well for Solaris, SunOS, HP-UX; in generating HTML -25 recognize URLs (Mic Campanel) - - -1997 -19 Mar bug fixes, more special characters (roff expert Larry Jones) - 8 Aug renamed to PolyglotMan - 4 Nov TkMan module: Rebus and NoteMark identification for paragraph lengths and command line options taken over from Tcl (still have search, highlight in Tcl, necessarily) (Chad Loder) - >5000 lines, or nearly 40X the lines of code of version 1.0 (which just supported TkMan) - - -1998 -20 Mar automatic detection of Tcl/Tk source (within automatic detection of source; already had within formatted) - centralize casifying SH and SS for formatted and source - group exception table by category -17 Apr in source translation, pass along comment lines too -20 incorporate (RCS) versioning diff's, for HTML - - -2000 -22 Jun eliminate last of encumbered code, release as Open Source - release version 3.0.9 - - -2002 -24 Aug used in Apple's OS X 10.2 (Jaguar) to convert manual pages for display in Project Builder - - -2003 -28 Mar updated for groff 1.18's new escape codes - remove Ensemble output format, which is obsolete - remove Texinfo output format, which is not useful - HTML tags in lowercase - released version 3.1 - 5 Jun applied Aaron Hawley's patches for DocBook XML - 6 Jul assume HTML browsers support full set of entity references - discontinue support for Mac OS 9 and earlier (compiles out of the box on OS X) -25 tags well nested for troff source input (at last!) -26 release version 3.2 diff --git a/src/tools/rman/Jamfile b/src/tools/rman/Jamfile deleted file mode 100644 index aa853f4d37..0000000000 --- a/src/tools/rman/Jamfile +++ /dev/null @@ -1,6 +0,0 @@ -SubDir HAIKU_TOP src tools rman ; - -SubDirCcFlags -w ; - -BuildPlatformMain rman : rman.c : ; - diff --git a/src/tools/rman/MANIFEST b/src/tools/rman/MANIFEST deleted file mode 100644 index b7599bd4a3..0000000000 --- a/src/tools/rman/MANIFEST +++ /dev/null @@ -1,25 +0,0 @@ -gcksum crc length name ----------- ------ ---- -719617051 139770 rman.c -3816320114 2260 README-rman.txt -696804442 4302 Makefile -2527388467 11935 rman.1 -2005445684 13618 site/rman.html -1619945447 6260 CHANGES -3825874035 4647 contrib/README-contrib -953283015 911 contrib/authried.txt -641079878 13609 contrib/bennett.txt -1827405570 1220 contrib/gzip.patch -4230791356 250 contrib/hman.cgi -1743159239 359 contrib/hman.ksh -2919099478 8005 contrib/hman.pl -1821945783 4978 contrib/http-rman.c -3091246851 661 contrib/http-rman.html -2646244070 350 contrib/lewis.pl -2860919314 2049 contrib/man2html -1315989744 6596 contrib/rman.pl -3466647040 7531 contrib/rman_html_split -75383086 2482 contrib/rman_html_split.1 -2032677288 150 contrib/sco-wrapper.sh -884546947 3806 contrib/sutter.txt -3112317992 5086 contrib/youki.pl diff --git a/src/tools/rman/Makefile b/src/tools/rman/Makefile deleted file mode 100644 index 4d65c10f83..0000000000 --- a/src/tools/rman/Makefile +++ /dev/null @@ -1,160 +0,0 @@ -# -# Makefile for PolyglotMan -# It's helpful to read the README-rman.txt file first. -# You should read over all parts of this file, -# down to the "you shouldn't modify" line -# -# Tom Phelps (phelps@ACM.org) -# - - -### you need to localize the paths on these lines - -# The executable `rman' is placed in BINDIR. -# If you're also installing TkMan (available separately--see README-rman.txt), -# this must be a directory that's in your bin PATH. -# MANDIR holds the man page. - -BINDIR = /opt/local/bin -#BINDIR = /usr/local/bin -#BINDIR = //C/bin -MANDIR = /usr/local/man/man1 -# popular alternative -#BINDIR = /opt/local/bin -#MANDIR = /opt/local/man/man1 - - -### if you have GNU gcc, use these definitions -CC = gcc -CFLAGS = -O2 -finline-functions - -### if you just have a standard UNIX, use these instead of GNU. -### CC must be an ANSI C compiler - -#CC = cc -#CFLAGS = -O - -# Solaris and SysV people may need this -#CFLAGS = -O2 -finline-functions - -# For HP-UX -#CC = cc -#CFLAGS = -Aa -O -# HP-UX 10.20 -#CFLAGS = -Ae -O - -# DEC Alpha and Ultrix, -std1 needed to conform to ANSI C -#CC = cc -#CFLAGS = -std1 -O3 -Olimit 1000 - - -# list of valid volume numbers and letters -# you can also set these at runtime with -V -VOLLIST = "1:2:3:4:5:6:7:8:9:o:l:n:p" -# SCO Unix has expanded set of volume letters -#VOLLIST = "1:2:3:4:5:6:7:8:9:o:l:n:p:C:X:S:L:M:F:G:A:H" -# SGI and UnixWare 2.0 -#VOLLIST = "1:2:3:4:5:6:7:8:9:o:l:n:p:D" - - -# the printf strings used to set the HTML and -# to set URL hyperlinks to referenced manual pages -# can be defined at runtime. The defaults are defined below. -# The first %s parameter is the manual page name, -# the second the volume/section number. -# you can set these at runtime with -l and -r, respectively - -MANTITLEPRINTF = "%s(%s) manual page" -# relative link to pregenerated file in same directory -MANREFPRINTF = "%s.%s" -# on-the-fly through a cgi-bin script -#MANREFPRINTF = "/cgi-bin/man2html?%s&%s" -#MANREFPRINTF = "/cgi-bin/man2html?m=%s&n=%s" - - -# # # these lines are probably fine - -CP = cp -# or you can use GNU's cp and backup files that are about to be overwritten -#CP = cp -b -RM = rm - - -#-------------------------------------------------- -# -# you shouldn't modify anything below here -# -#-------------------------------------------------- - -version = 3.2 -rman = rman-$(version) -srcs = rman.c -objs = rman -defs = -DVOLLIST='$(VOLLIST)' -DMANTITLEPRINTF='$(MANTITLEPRINTF)' -DMANREFPRINTF='$(MANREFPRINTF)' -libs = -aux = README-rman.txt Makefile rman.1 site/rman.html CHANGES -distrib = $(srcs) $(libs) $(aux) contrib - - -all: rman - @echo 'Files made in current directory.' - @echo 'You should "make install".' - -# everyone but me zaps assertions with the -DNDEBUG flag -rman: rman.c Makefile - $(CC) -DNDEBUG $(defs) -DPOLYGLOTMANVERSION=\"$(version)\" $(CFLAGS) -o rman rman.c - - -debug: - $(CC) $(defs) -DDEBUG -DPOLYGLOTMANVERSION=\"debug\" -g -Wall -o rman rman.c - -prof: - quantify -cache-dir=/home/orodruin/h/bair/phelps/spine/rman/cache $(CC) -DNDEBUG $(defs) -DPOLYGLOTMANVERSION=\"QUANTIFY\" -g -o rman rman.c - -install: rman -# $(INSTALL) -s rman $(BINDIR) - $(RM) -f $(BINDIR)/rman - $(CP) rman $(BINDIR) - $(RM) -f $(MANDIR)/rman.1 - $(CP) rman.1 $(MANDIR) - -# test version includes assertions -# ginstall rman $(BINDIR)/`arch` -test: rman.c Makefile - $(CC) $(defs) -DPOLYGLOTMANVERSION=\"$(version)\" $(CFLAGS) -Wall -ansi -pedantic -o rman rman.c - ls -l rman - ginstall rman $(BINDIR) - rman -v - rman --help - @echo 'Assertion checks:' - rman -f html weirdman/hp-tbl.1 > /dev/null - rman -f html weirdman/Pnews.1 > /dev/null - nroff -man rman.1 | rman -f html > /dev/null - -sww: - rm -f rman $(wildcard ~/bin/{sun4,snake,alpha}/rman) - rman - -clean: - rm -f $(objs) - -dist: - rm -rf $(rman)* - mkdir $(rman) - $(CP) -RH $(distrib) $(rman) -# expand -4 rman.c > $(rman)/rman.c - rm -f $(rman)/contrib/*~ - @echo 'gcksum crc length name' > MANIFEST - @echo '---------- ------ ----' >> MANIFEST - @cksum $(filter-out contrib, $(filter-out %~, $(distrib) $(wildcard contrib/*))) | tee -a MANIFEST - mv MANIFEST $(rman) - tar chvf $(rman).tar $(rman) - gzip -9v $(rman).tar - rm -rf $(rman) -# ANNOUNCE-rman rman.1 - @echo "*** Did you remember to ci -l first?" - -uu: tar - gznew $(rman).tar.Z - echo 'uudecode, gunzip (from GNU), untar' > $(rman).tar.gz.uu - uuencode $(rman).tar.gz $(rman).tar.gz >> $(rman).tar.gz.uu diff --git a/src/tools/rman/README-rman.txt b/src/tools/rman/README-rman.txt deleted file mode 100644 index 4089a5d134..0000000000 --- a/src/tools/rman/README-rman.txt +++ /dev/null @@ -1,52 +0,0 @@ -The home location for PolyglotMan is polyglotman.sourceforge.net - - -*** INSTALLING *** - -Set BINDIR in the Makefile to where you keep your binaries and MANDIR -to where you keep your man pages (in their source form). (If you're -using PolyglotMan with TkMan, BINDIR needs to be a component of your -bin PATH.) After properly editing the Makefile, type `make install'. -Thereafter (perhaps after a `rehash') type `rman' to invoke PolyglotMan. -PolyglotMan requires an ANSI C compiler. To compile on a Macintosh -under MPW, use Makefile.mac. - -If you send me bug reports and/or suggestions for new features, -include the version of PolyglotMan (available by typing `rman -v'). -PolyglotMan doesn't parse every aspect of every man page perfectly, but -if it blows up spectacularly where it doesn't seem like it should, you -can send me the man page (or a representative man page if it blows up -on a class of man pages) in BOTH: (1) [tn]roff source form, from -.../man/manX and (2) formatted form (as formatted by `nroff -man'), -uuencoded to preserve the control characters, from .../man/catX. - -If you discover a bug and you obtained PolyglotMan at some other site, -check the home site to see if a newer version has already fixed the problem. - -Be sure to look in the contrib directory for WWW server interfaces, -a batch converter, and a wrapper for SCO. - --------------------------------------------------- - -*** NOTES ON CURRENT VERSION *** - -Help! I'm looking for people to help with the following projects. -(1) Better RTF output format. The current one works, but could be -made better. (2) Extending the macro sets for source recognition. If -you write an output format or otherwise improve PolyglotMan, please -send in your code so that I may share the wealth in future releases. -(3) Fixing output for various (accented?) characters in the Latin1 -character set. - --------------------------------------------------- - - -License - -This software is distributed under the Artistic License (see -http://www.opensource.org/licenses/artistic-license.html). - -(This version of PolyglotMan represents a complete rewrite of bs2tk, -which was packaged with TkMan in 1993, which is copyrighted by the -Regents of the University of California, and therefore is not under -their jurisdiction.) diff --git a/src/tools/rman/rman.1 b/src/tools/rman/rman.1 deleted file mode 100644 index 91e4c1e01f..0000000000 --- a/src/tools/rman/rman.1 +++ /dev/null @@ -1,273 +0,0 @@ -.TH PolyglotMan 1 -.SH "NAME " -PolyglotMan, rman - reverse compile man pages from formatted -form to a number of source formats -.SH "SYNOPSIS " -rman [ \fIoptions \fR] [ \fIfile \fR] -.SH "DESCRIPTION " -Up-to-date instructions can be found at -http://polyglotman.sourceforge.net/rman.html - -.PP -\fIPolyglotMan \fR takes man pages from most of the popular flavors -of UNIX and transforms them into any of a number of text source -formats. PolyglotMan was formerly known as RosettaMan. The name -of the binary is still called \fIrman \fR, for scripts that depend -on that name; mnemonically, just think "reverse man". Previously \fI -PolyglotMan \fR required pages to be formatted by nroff prior -to its processing. With version 3.0, it \fIprefers [tn]roff source \fR -and usually produces results that are better yet. And source -processing is the only way to translate tables. Source format -translation is not as mature as formatted, however, so try formatted -translation as a backup. -.PP -In parsing [tn]roff source, one could implement an arbitrarily -large subset of [tn]roff, which I did not and will not do, so -the results can be off. I did implement a significant subset -of those use in man pages, however, including tbl (but not eqn), -if tests, and general macro definitions, so usually the results -look great. If they don't, format the page with nroff before -sending it to PolyglotMan. If PolyglotMan doesn't recognize a -key macro used by a large class of pages, however, e-mail me -the source and a uuencoded nroff-formatted page and I'll see -what I can do. When running PolyglotMan with man page source -that includes or redirects to other [tn]roff source using the .so (source -or inclusion) macro, you should be in the parent directory of -the page, since pages are written with this assumption. For example, -if you are translating /usr/man/man1/ls.1, first cd into /usr/man. -.PP -\fIPolyglotMan \fR accepts man pages from: SunOS, Sun Solaris, -Hewlett-Packard HP-UX, AT&T System V, OSF/1 aka Digital UNIX, -DEC Ultrix, SGI IRIX, Linux, FreeBSD, SCO. Source processing -works for: SunOS, Sun Solaris, Hewlett-Packard HP-UX, AT&T System -V, OSF/1 aka Digital UNIX, DEC Ultrix. It can produce printable -ASCII-only (control characters stripped), section headers-only, -Tk, TkMan, [tn]roff (traditional man page source), SGML, HTML, -MIME, LaTeX, LaTeX2e, RTF, Perl 5 POD. A modular architecture -permits easy addition of additional output formats. -.PP -The latest version of PolyglotMan is available from \fI -http://polyglotman.sourceforge.net/ \fR. -.SH "OPTIONS " -The following options should not be used with any others and -exit PolyglotMan without processing any input. -.TP 15 --h|--help -Show list of command line options and exit. -.TP 15 --v|--version -Show version number and exit. -.PP -\fIYou should specify the filter first, as this sets a number -of parameters, and then specify other options. -.TP 15 --f|--filter <ASCII|roff|TkMan|Tk|Sections|HTML|SGML|MIME|LaTeX|LaTeX2e|RTF|POD> -Set the output filter. Defaults to ASCII. -.TP 15 --S|--source -PolyglotMan tries to automatically determine whether its input -is source or formatted; use this option to declare source input. -.TP 15 --F|--format|--formatted -PolyglotMan tries to automatically determine whether its input -is source or formatted; use this option to declare formatted -input. -.TP 15 --l|--title \fIprintf-string \fR -In HTML mode this sets the <TITLE> of the man pages, given the -same parameters as \fI-r \fR. -.TP 15 --r|--reference|--manref \fIprintf-string \fR -In HTML and SGML modes this sets the URL form by which to retrieve -other man pages. The string can use two supplied parameters: -the man page name and its section. (See the Examples section.) -If the string is null (as if set from a shell by "-r ''"), `-' -or `off', then man page references will not be HREFs, just set -in italics. If your printf supports XPG3 positions specifier, -this can be quite flexible. -.TP 15 --V|--volumes \fI<colon-separated list> \fR -Set the list of valid volumes to check against when looking for -cross-references to other man pages. Defaults to \fI1:2:3:4:5:6:7:8:9:o:l:n:p \fR(volume -names can be multicharacter). If an non-whitespace string in -the page is immediately followed by a left parenthesis, then -one of the valid volumes, and ends with optional other characters -and then a right parenthesis--then that string is reported as -a reference to another manual page. If this -V string starts -with an equals sign, then no optional characters are allowed -between the match to the list of valids and the right parenthesis. (This -option is needed for SCO UNIX.) -.PP -The following options apply only when formatted pages are given -as input. They do not apply or are always handled correctly with -the source. -.TP 15 --b|--subsections -Try to recognize subsection titles in addition to section titles. -This can cause problems on some UNIX flavors. -.TP 15 --K|--nobreak -Indicate manual pages don't have page breaks, so don't look for -footers and headers around them. (Older nroff -man macros always -put in page breaks, but lately some vendors have realized that -printout are made through troff, whereas nroff -man is used to -format pages for reading on screen, and so have eliminated page -breaks.) \fIPolyglotMan \fR usually gets this right even without -this flag. -.TP 15 --k|--keep -Keep headers and footers, as a canonical report at the end of -the page. changeleft -Move changebars, such as those found in the Tcl/Tk manual pages, -to the left. --> notaggressive -\fIDisable \fR aggressive man page parsing. Aggressive manual, -which is on by default, page parsing elides headers and footers, -identifies sections and more. --> -.TP 15 --n|--name \fIname \fR -Set name of man page (used in roff format). If the filename is -given in the form " \fIname \fR. \fIsection \fR", the name and -section are automatically determined. If the page is being parsed -from [tn]roff source and it has a .TH line, this information -is extracted from that line. -.TP 15 --p|--paragraph -paragraph mode toggle. The filter determines whether lines should -be linebroken as they were by nroff, or whether lines should -be flowed together into paragraphs. Mainly for internal use. -.TP 15 --s|section \fI# \fR -Set volume (aka section) number of man page (used in roff format). -tables -Turn on aggressive table parsing. --> -.TP 15 --t|--tabstops \fI# \fR -For those macros sets that use tabs in place of spaces where -possible in order to reduce the number of characters used, set -tabstops every \fI# \fR columns. Defaults to 8. -.SH "NOTES ON FILTER TYPES " -.SS "ROFF " -Some flavors of UNIX ship man page without [tn]roff source, making -one's laser printer little more than a laser-powered daisy wheel. -This filer tries to intuit the original [tn]roff directives, -which can then be recompiled by [tn]roff. -.SS "TkMan " -TkMan, a hypertext man page browser, uses \fIPolyglotMan \fR -to show man pages without the (usually) useless headers and footers -on each pages. It also collects section and (optionally) subsection -heads for direct access from a pulldown menu. TkMan and Tcl/Tk, -the toolkit in which it's written, are available via anonymous -ftp from \fIftp://ftp.smli.com/pub/tcl/ \fR -.SS "Tk " -This option outputs the text in a series of Tcl lists consisting -of text-tags pairs, where tag names roughly correspond to HTML. -This output can be inserted into a Tk text widget by doing an \fI -eval <textwidget> insert end <text> \fR. This format should be -relatively easily parsible by other programs that want both the -text and the tags. Also see ASCII. -.SS "ASCII " -When printed on a line printer, man pages try to produce special -text effects by overstriking characters with themselves (to produce -bold) and underscores (underlining). Other text processing software, -such as text editors, searchers, and indexers, must counteract -this. The ASCII filter strips away this formatting. Piping nroff -output through \fIcol -b \fR also strips away this formatting, -but it leaves behind unsightly page headers and footers. Also -see Tk. -.SS "Sections " -Dumps section and (optionally) subsection titles. This might -be useful for another program that processes man pages. -.SS "HTML " -With a simple extention to an HTTP server for Mosaic or other -World Wide Web browser, \fIPolyglotMan \fR can produce high quality -HTML on the fly. Several such extensions and pointers to several -others are included in \fIPolyglotMan \fR's \fIcontrib \fR directory. -.SS "SGML " -This is appoaching the Docbook DTD, but I'm hoping that someone -that someone with a real interest in this will polish the tags -generated. Try it to see how close the tags are now. -.SS "MIME " -MIME (Multipurpose Internet Mail Extensions) as defined by RFC 1563, -good for consumption by MIME-aware e-mailers or as Emacs (>=19.29) -enriched documents. -.SS "LaTeX and LaTeX2e " -Why not? -.SS "RTF " -Use output on Mac or NeXT or whatever. Maybe take random man -pages and integrate with NeXT's documentation system better. -Maybe NeXT has own man page macros that do this. -.SS "PostScript and FrameMaker " -To produce PostScript, use \fIgroff \fR or \fIpsroff \fR. To -produce FrameMaker MIF, use FrameMaker's builtin filter. In both -cases you need \fI[tn]roff \fR source, so if you only have a -formatted version of the manual page, use \fIPolyglotMan \fR's -roff filter first. -.SH "EXAMPLES " -To convert the \fIformatted \fR man page named \fIls.1 \fR back -into [tn]roff source form: -.PP -\fIrman -f roff /usr/local/man/cat1/ls.1 > /usr/local/man/man1/ls.1 \fR -.br -.PP -Long man pages are often compressed to conserve space (compression -is especially effective on formatted man pages as many of the -characters are spaces). As it is a long man page, it probably -has subsections, which we try to separate out (some macro sets -don't distinguish subsections well enough for \fIPolyglotMan \fR -to detect them). Let's convert this to LaTeX format: -.br -.PP -\fIpcat /usr/catman/a_man/cat1/automount.z | rman -b -n automount -s 1 -f -latex > automount.man \fR -.br -.PP -Alternatively, \fIman 1 automount | rman -b -n automount -s 1 -f -latex > automount.man \fR -.br -.PP -For HTML/Mosaic users, \fIPolyglotMan \fR can, without modification -of the source code, produce HTML links that point to other HTML -man pages either pregenerated or generated on the fly. First -let's assume pregenerated HTML versions of man pages stored in \fI/usr/man/html \fR. -Generate these one-by-one with the following form: -.br -\fIrman -f html -r 'http:/usr/man/html/%s.%s.html' /usr/man/cat1/ls.1 > /usr/man/html/ls.1.html \fR -.br -.PP -If you've extended your HTML client to generate HTML on the fly -you should use something like: -.br -\fIrman -f html -r 'http:~/bin/man2html?%s:%s' /usr/man/cat1/ls.1 \fR -.br -when generating HTML. -.SH "BUGS/INCOMPATIBILITIES " -\fIPolyglotMan \fR is not perfect in all cases, but it usually -does a good job, and in any case reduces the problem of converting -man pages to light editing. -.PP -Tables in formatted pages, especially H-P's, aren't handled very -well. Be sure to pass in source for the page to recognize tables. -.PP -The man pager \fIwoman \fR applies its own idea of formatting -for man pages, which can confuse \fIPolyglotMan \fR. Bypass \fI -woman \fR by passing the formatted manual page text directly -into \fIPolyglotMan \fR. -.PP -The [tn]roff output format uses fB to turn on boldface. If your -macro set requires .B, you'll have to a postprocess the \fIPolyglotMan \fR -output. -.SH "SEE ALSO " -\fItkman(1) \fR, \fIxman(1) \fR, \fIman(1) \fR, \fIman(7) \fR -or \fIman(5) \fR depending on your flavor of UNIX -.SH "AUTHOR " -PolyglotMan -.br -by Thomas A. Phelps ( \fIphelps@ACM.org \fR) -.br -developed at the -.br -University of California, Berkeley -.br -Computer Science Division -.PP -Manual page last updated on $Date: 1998/07/13 09:47:28 $ diff --git a/src/tools/rman/rman.c b/src/tools/rman/rman.c deleted file mode 100644 index 49bb7701a5..0000000000 --- a/src/tools/rman/rman.c +++ /dev/null @@ -1,4853 +0,0 @@ -static char cvsid[] = "$Header: /Users/phelps/cvs/prj/RosettaMan/rman.c,v 1.154 2003/07/26 19:00:48 phelps Exp $"; - -/* - PolyglotMan by Thomas A. Phelps (phelps@ACM.org) - - accept man pages as formatted by (10) - Hewlett-Packard HP-UX, AT&T System V, SunOS, Sun Solaris, OSF/1, - DEC Ultrix, SGI IRIX, Linux, FreeBSD, SCO - - output as (9) - printable ASCII, section headers only, TkMan, [tn]roff, HTML, - LaTeX, LaTeX2e, RTF, Perl pod, MIME, DocBook XML - - written March 24, 1993 - bs2tk generalized into RosettaMan November 4-5, 1993 - source interpretation added September 24, 1996 - renamed PolyglotMan due to lawsuit by Rosetta, Inc. August 8, 1997 -*/ - -#define VOLLIST "1:2:3:4:5:6:7:8:9:o:l:n:p" -#define MANTITLEPRINTF "%s(%s) manual page" -#define MANREFPRINTF "%s.%s" -#define POLYGLOTMANVERSION "3.2" - -#include <unistd.h> -#include <stdio.h> -#include <string.h> -#include <ctype.h> -#include <stdlib.h> -#include <assert.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> - - -/*** make #define's into consts? => can't because compilers not smart enough ***/ -/* maximum number of tags per line */ -#define MAXTAGS 50*100 -#define MAXBUF 2*5000 -#define MAXLINES 20000 -#define MAXTOC 500 -#define xputchar(c) (fcharout? putchar(c): (c)) -#define sputchar(c) (fcharout? plain[sI++]=(char)c: (char)(c)) -#define stagadd(tag) tagadd(tag,sI,0) -enum { c_dagger='\xa7', c_bullet='\xb7', c_plusminus='\xb1' }; - - -/*** tag management ***/ - -enum tagtype { NOTAG, TITLE, ITALICS, BOLD, SYMBOL, SMALLCAPS, BOLDITALICS, MONO, MANREF }; /* MANREF last */ -struct { enum tagtype type; int first; int last; } tags[MAXTAGS], tagtmp; -int tagc=0; -struct { char *text; int type; int line; } toc[MAXTOC]; -int tocc=0; - - -/* characters in this list automatically prefixed by a backslash (set in output format function */ -char *escchars=""; -char *vollist = VOLLIST; -const char *manvalid = "._-+:"; /* in addition to alphanumerics, valid characters to find in a man page name */ -char *manrefname; -char *manrefsect; - -enum command { - - /*BEGINCHARTAGS,*/ - CHARTAB='\t', - CHARPERIOD='.', CHARLSQUOTE='`', CHARRSQUOTE='\'', CHARGT='>', CHARLT='<', - CHARAMP='&', CHARBACKSLASH='\\', CHARDASH='-', CHARHAT='^', CHARVBAR='|', - CHARNBSP=0xa0, CHARCENT=0xa2, CHARSECT=0xa7, CHARCOPYR=0xa9, CHARNOT=0xac, - CHARDAGGER=0xad, CHARREGTM=0xae, CHARDEG=0xb0, CHARPLUSMINUS=0xb1, - CHARACUTE=0xb4, CHARBULLET=0xb7, CHAR14=0xbc, CHAR12=0xbd, CHAR34=0xbe, - CHARMUL=0xd7, CHARDIV=0xf7, - CHANGEBAR=0x100, CHARLQUOTE, CHARRQUOTE, - /*ENDCHARTAGS,*/ - - /*BEGINFONTTAGS,*/ - BEGINBOLD, ENDBOLD, BEGINITALICS, ENDITALICS, BEGINBOLDITALICS, ENDBOLDITALICS, - BEGINSC, ENDSC, BEGINY, ENDY, BEGINCODE, ENDCODE, BEGINMANREF, ENDMANREF, - FONTSIZE, - /*ENDFONTTAGS*/ - - /*BEGINLAYOUTTAGS,*/ - ITAB, BEGINCENTER, ENDCENTER, HR, - /*ENDLAYOUTTAGS,*/ - - /*BEGINSTRUCTTAGS,*/ - BEGINDOC, ENDDOC, BEGINCOMMENT, ENDCOMMENT, COMMENTLINE, BEGINBODY, ENDBODY, - BEGINHEADER, ENDHEADER, BEGINFOOTER, ENDFOOTER, BEGINLINE, ENDLINE, SHORTLINE, - BEGINSECTION, ENDSECTION, BEGINSUBSECTION, ENDSUBSECTION, - BEGINSECTHEAD, ENDSECTHEAD, BEGINSUBSECTHEAD, ENDSUBSECTHEAD, - BEGINBULPAIR, ENDBULPAIR, BEGINBULLET, ENDBULLET, BEGINBULTXT, ENDBULTXT, - BEGINTABLE, ENDTABLE, BEGINTABLELINE, ENDTABLELINE, BEGINTABLEENTRY, ENDTABLEENTRY, - BEGININDENT, ENDINDENT, BEGINCODEBLOCK, ENDCODEBLOCK, - - BEGINDIFFA, ENDDIFFA, BEGINDIFFD, ENDDIFFD - /*,*//*ENDSTRUCTTAGS,*/ -}; - -const char *tcltkOP[] = { "Command-Line Name", "Database Name", "Database Class" }; - - -/* characters that need special handling in any output format, *more than just a backslash* */ -/* characters in this list need a corresponding case statement in each output format */ -/*char *trouble="\t.`'><&\\^|-\xa7\xb7\xb1";*/ -const unsigned char trouble[]= { CHARTAB, CHARPERIOD, CHARLSQUOTE, CHARRSQUOTE, - CHARGT, CHARLT, CHARAMP, CHARBACKSLASH, CHARDASH, CHARHAT, CHARVBAR, CHARCENT, - CHARSECT, CHARCOPYR, CHARNOT, CHARDAGGER, CHARREGTM, CHARDEG, CHARPLUSMINUS, - CHARACUTE, CHARBULLET, CHAR14, CHAR12, CHAR34, CHARMUL, CHARDIV, - 0 }; - - -enum command tagbeginend[][2] = { /* parallel to enum tagtype */ - { -1,-1 }, - { -1,-1 }, - { BEGINITALICS, ENDITALICS }, - { BEGINBOLD, ENDBOLD }, - { BEGINY, ENDY }, - { BEGINSC, ENDSC }, - { BEGINBOLDITALICS, ENDBOLDITALICS }, - { -1,-1 }, - { BEGINMANREF, ENDMANREF } -}; - -void (*fn)(enum command) = NULL; -enum command prevcmd = BEGINDOC; - - -/*** globals ***/ - -int fSource=-1; /* -1 => not determined yet */ -int finlist=0; -int fDiff=0; -FILE *difffd; -char diffline[MAXBUF]; -char diffline2[MAXBUF]; -char *message = NULL; -int fontdelta=0; -int intArg; - -int fPara=0; /* line or paragraph groupings of text */ -int fSubsections=0; /* extract subsection titles too? */ -int fChangeleft=0; /* move change bars to left? (-1 => delete them) */ -int fReflow=0; -int fURL=0; /* scan for URLs too? */ -/*int fMan=1; /* invoke agressive man page filtering? */ -int fQS=0; /* squeeze out spaces (scnt and interword)? */ -int fIQS=0; /* squeeze out initial spaces (controlled separately from fQS) */ -int fILQS=0; /* squeeze out spaces for usual indent */ -int fHeadfoot=0; /* show canonical header and footer at bottom? */ -int falluc=0; -int itabcnt=0; -int fQuiet=0; -int fTclTk=0; - -/* patterns observed in section heads that don't conform to first-letter-uppercase-rest-lowercase pattern (stay all uc, or go all lc, or have subsequent uc) */ -int lcexceptionslen = -1; /* computed by system */ -char *lcexceptions[] = { -/* new rule: double/all consonants == UC? */ - /* articles, verbs, conjunctions, prepositions, pronouns */ - "a", "an", "the", - "am", "are", "is", "were", - "and", "or", - "by", "for", "from", "in", "into", "it", "of", "on", "to", "with", - "that", "this", - - /* terms */ - "API", "CD", "GUI", "UI", /*I/O=>I/O already*/ "ID", "IDs", "OO", - "IOCTLs", "IPC", "RPC", - - /* system names */ - "AWK", "cvs", "rcs", "GL", "vi", "PGP", "QuickTime", "DDD", "XPG/3", - "NFS", "NIS", "NIS+", "AFS", - "UNIX", "SysV", - "XFree86", "ICCCM", - "MH", "MIME", - "TeX", "LaTeX", "PicTeX", - "PostScript", "EPS", "EPSF", "EPSI", - "HTML", "URL", "WWW", - - /* institution names */ - "ANSI", "CERN", "GNU", "ISO", "NCSA", - - /* Sun-specific */ - "MT-Level", "SPARC", - - NULL -}; - - -int TabStops=8; -int hanging=0; /* location of hanging indent (if ==0, none) */ -enum { NAME, SYNOPSIS, DESCRIPTION, SEEALSO, FILES, AUTHOR, RANDOM/*last!*/ }; -char *sectheadname[] = { - "NAME:NOMBRE", "SYNOPSIS", "DESCRIPTION:INTRODUCTION", "SEE ALSO:RELATED INFORMATION", "FILES", "AUTHOR:AUTHORS", "RANDOM" -}; -int sectheadid = RANDOM; -int oldsectheadid = RANDOM; - -int fCodeline=0; -int fNOHY=0; /* re-linebreak so no words are hyphenated; not used by TkMan, but gotta keep for people converting formatted text */ -int fNORM=0; /* normalize? initial space => tabs, no changebars, exactly one blank line between sections */ -const char TABLEOFCONTENTS[] = "Table of Contents"; -const char HEADERANDFOOTER[] = "Header and Footer"; -char manName[80] = "man page"; -char manSect[10] = "1"; -const char PROVENANCE[] = - "manual page source format generated by PolyglotMan v" POLYGLOTMANVERSION; -const char HOME[] = "available at http://polyglotman.sourceforge.net/"; -const char horizontalrule[] = "------------------------------------------------------------"; - -const int LINEBREAK = 70; -int linelen = 0; /* length of result in plain[] */ -int spcsqz; /* number of spaces squeezed out */ -int ccnt = 0; /* # of changebars */ -int scnt, scnt2; /* counts of initial spaces in line */ -int s_sum, s_cnt; -int bs_sum, bs_cnt; -int ncnt=0, oncnt=0; /* count of interline newlines */ -int CurLine=1; -int AbsLine=1-1; /* absolute line number */ -int indent=0; /* global indentation */ -int lindent=0; /* usual local indent */ -int auxindent=0; /* aux indent */ -int I; /* index into line/paragraph */ -int fcharout=1; /* show text or not */ -char lookahead; -/*int tabgram[MAXBUF];*/ /* histogram of first character positions */ -char buf[MAXBUF]; -char plain[MAXBUF]; /* current text line with control characters stripped out */ -char hitxt[MAXBUF]; /* highlighted text (available at time of BEGIN<highlight> signal */ - -char header[MAXBUF]; /* complete line */ -char header2[MAXBUF]; /* SGIs have two lines of headers and footers */ -char header3[MAXBUF]; /* GNU and some others have a third! */ -char footer[MAXBUF]; -char footer2[MAXBUF]; -#define CRUFTS 5 -char *cruft[CRUFTS] = { header, header2, header3, footer, footer2 }; - -char *File, *in; /* File = pointer to full file contents, in = current file pointer */ -char *argv0; -int finTable=0; -char tableSep='\0'; /*\t';*/ -/*int fTable=0; -int fotable=0;*/ -char *tblcellformat; -int tblcellspan; -/*int tblspanmax;*/ -int listtype=-1; /* current list type bogus to begin with */ -enum listtypes { DL, OL, UL }; - -int fIP=0; - - - -/*** utility functions ***/ - - -/* case insensitive versions of strcmp and strncmp */ - -int -stricmp(const char *s1, const char *s2) { - assert(s1!=NULL && s2!=NULL); - /*strincmp(s1, s2, strlen(s1)+1);*/ - - while (tolower(*s1)==tolower(*s2)) { - if (*s1=='\0' /*&& *s2=='\0'*/) return 0; - s1++; s2++; - } - - if (tolower(*s1)<tolower(*s2)) return -1; - else return 1; -} - -int lcexceptionscmp(const char **a, const char **b) { return stricmp(*a, *b); } - -int -strincmp(const char *s1, const char *s2, size_t n) { - assert(s1!=NULL && s2!=NULL && n>0); - - while (n>0 && tolower(*s1)==tolower(*s2)) { - n--; s1++; s2++; - } - if (n==0) return 0; - else if (tolower(*s1)<tolower(*s2)) return -1; - else return 1; -} - -/* compare string and a colon-separated list of strings */ -int -strcoloncmp2(char *candidate, int end, const char *list, int sen) { - const char *l = list; - char *c,c2; - - assert(candidate!=NULL && list!=NULL); - assert(end>=-1 && end<=255); - assert(sen==0 || sen==1); - - if (*l==':') l++; /* tolerate a leading colon */ - - /* invariant: c and v point to start of strings to compare */ - while (*l) { - assert(l==list || l[-1]==':'); - for (c=candidate; *c && *l; c++,l++) - if ((sen && *c!=*l) || (!sen && tolower(*c)!=tolower(*l))) - break; - - /* if candidate matches a valid one as far as valid goes, it's a keeper */ - if ((*l=='\0' || *l==':') && (*c==end || end==-1)) { - if (*c=='\b') { - c2 = c[-1]; - while (*c=='\b' && c[1]==c2) c+=2; - } - /* no volume qualifiers with digits */ - if (!isdigit(*c)) return 1; - } - - /* bump to start of next valid */ - while (*l && *l++!=':') /* nada */; - } - - return 0; -} - -int -strcoloncmp(char *candidate, int end, const char *list) { - int sen=1; - const char *l = list; - - assert(candidate!=NULL && list!=NULL); - assert(end>=-1 && end<=255); - - if (*l=='=') l++; else end=-1; - if (*l=='i') { sen=0; l++; } - - return strcoloncmp2(candidate, end, l, sen); -} - -/* strdup not universally available */ -char * -mystrdup(char *p) { - char *q; - - if (p==NULL) return NULL; - - q = malloc(strlen(p)+1); /* +1 gives space for \0 that is not reported by strlen */ - if (q!=NULL) strcpy(q,p); - return q; -} - - -/* given line of text, return "casified" version in place: - if word in exceptions list, return exception conversion - else uc first letter, lc rest -*/ -void casify(char *p) { - char tmpch, *q, **exp; - int fuc; - - for (fuc=1; *p; p++) { - if (isspace(*p) || strchr("&/",*p)!=NULL) fuc=1; - else if (fuc) { - /* usually */ - if (p[1] && isupper(p[1]) /*&& p[2] && isupper(p[2])*/) fuc=0; - /* check for exceptions */ - for (q=p; *q && !isspace(*q); q++) /*nada*/; - tmpch = *q; *q='\0'; - exp = (char **)bsearch(&p, lcexceptions, lcexceptionslen, sizeof(char *), lcexceptionscmp); - *q = tmpch; - if (exp!=NULL) { - for (q=*exp; *q; q++) *p++=*q; - fuc = 1; - } - } else *p=tolower(*p); - } -} - - -/* add an attribute tag to a range of characters */ - -void -tagadd(int /*enum tagtype--abused in source parsing*/ type, int first, int last) { - assert(type!=NOTAG); - - if (tagc<MAXTAGS) { - tags[tagc].type = type; - tags[tagc].first = first; - tags[tagc].last = last; - tagc++; - } -} - - -/* - collect all saves to string table one one place, so that - if decide to go with string table instead of multiple malloc, it's easy - (probably few enough malloc's that more sophistication is unnecessary) -*/ - -void -tocadd(char *text, enum command type, int line) { - char *r; - - assert(text!=NULL && strlen(text)>0); - assert(type==BEGINSECTION || type==BEGINSUBSECTION); - - if (tocc<MAXTOC) { - r = malloc(strlen(text)+1); if (r==NULL) return; - strcpy(r,text); - toc[tocc].text = r; - toc[tocc].type = type; - toc[tocc].line = line; - tocc++; - } -} - - - -char *manTitle = MANTITLEPRINTF; -char *manRef = MANREFPRINTF; -char *href; -int fmanRef=1; /* make 'em links or just show 'em? */ - -void -manrefextract(char *p) { - char *p0; - static char *nonhref = "\">'"; - - while (*p==' ') p++; - if (strincmp(p,"http",4)==0) { - href="%s"; manrefname = p; - p+=4; - while (*p && !isspace(*p) && !strchr(nonhref,*p)) p++; - } else { - href = manRef; - - manrefname = p; - while (*p && *p!=' ' && *p!='(') p++; *p++='\0'; - while (*p==' ' || *p=='(') p++; p0=p; - while (*p && *p!=')') p++; - manrefsect = p0; - } - *p='\0'; -} - - - - -/* - * OUTPUT FORMATS - */ - -void -formattedonly(void) { - fprintf(stderr, "The output formats for Tk and TkMan require nroff-formatted input\n"); - exit(1); -} - - -/* - * DefaultFormat -- in weak OO inheritance, top of hierarchy for everybody - */ -void -DefaultFormat(enum command cmd) { - int i; - - switch (cmd) { - case ITAB: - for (i=0; i<itabcnt; i++) putchar('\t'); - break; - default: - /* nada */ - break; - } -} - - -/* - * DefaultLine -- in weak OO inheritance, top of hierarchy for line-based formats - * for output format to "inherit", have "default: DefaultLine(cmd)" and override case statement "methods" - */ - -void -DefaultLine(enum command cmd) { - switch (cmd) { - default: - DefaultFormat(cmd); - } -} - - -/* - * DefaultPara -- top of hierarchy for output formats that are formatted by their viewers - */ - -void -DefaultPara(enum command cmd) { - switch (cmd) { - default: - DefaultFormat(cmd); - } -} - - - -/* - * Tk -- just emit list of text-tags pairs - */ - -void -Tk(enum command cmd) { - static int skip=0; /* skip==1 when line has no text */ - int i; - - if (fSource) formattedonly(); - - /* invariant: always ready to insert text */ - - switch (cmd) { - case BEGINDOC: - I=0; CurLine=1; - escchars = "\"[]$"; - printf(/*$t insert end */ "\""); - break; - case ENDDOC: - if (fHeadfoot) { -/* grr, should have +mark syntax for Tk text widget! -- maybe just just +sect#, +subsect# - printf("\\n\\n\" {} \"%s\\n\" {+headfoot h2}\n", HEADERANDFOOTER); -*/ - printf("\\n\\n\" {} \"%s\\n\" h2\n",HEADERANDFOOTER); - /*printf("$t mark set headfoot %d.0\n", CurLine);*/ - CurLine++; - - for (i=0; i<CRUFTS; i++) { - if (*cruft[i]) { - printf(/*$t insert end */"{%s} sc \\n\n", cruft[i]); - CurLine++; - } - } - } else printf("\"\n"); - break; - - case COMMENTLINE: printf("# "); break; - - case BEGINLINE: - /*I=0; -- need to do this at end of line so set for filterline() */ - /* nothing to do at start of line except catch up on newlines */ - for (i=0; i<ncnt; i++) printf("\\n"); - CurLine+=ncnt; - /*if (fSource) for (i=0; i<indent; i++) putchar('\t');*/ - break; - case ENDLINE: - /*if (!fSource) {*/ - if (!skip) /*if (ncnt)*/ printf("\\n"); /*else xputchar(' ');*/ - skip=0; - CurLine++; I=0; - /* - } else { - putchar(' '); I++; - } - */ - break; - - case ENDSECTHEAD: - printf("\\n\" h2 \""); - tagc=0; - skip=1; - break; - case ENDSUBSECTHEAD: - printf("\\n\" h3 \""); /* add h3? */ - tagc=0; - skip=1; - break; - case HR: /*printf("\\n%s\\n", horizontalrule); CurLine+=2; I=0;*/ break; - case BEGINTABLEENTRY: - /*if (fSource) putchar('\t');*/ - break; - case BEGINTABLELINE: - case ENDTABLEENTRY: - break; - case ENDTABLELINE: - printf("\" tt \""); - /*tagadd(MONO, 0, I);*/ - break; - - case CHANGEBAR: putchar('|'); I++; break; - case CHARLQUOTE: - case CHARRQUOTE: - putchar('\\'); putchar('"'); I++; - break; - case CHARLSQUOTE: - case CHARRSQUOTE: - case CHARPERIOD: - case CHARTAB: - case CHARDASH: - case CHARLT: - case CHARGT: - case CHARHAT: - case CHARVBAR: - case CHARAMP: - case CHARPLUSMINUS: - case CHARNBSP: - case CHARCENT: - case CHARSECT: - case CHARCOPYR: - case CHARNOT: - case CHARREGTM: - case CHARDEG: - case CHARACUTE: - case CHAR14: - case CHAR12: - case CHAR34: - case CHARMUL: - case CHARDIV: - putchar(cmd); I++; break; - case CHARDAGGER: - putchar('+'); I++; break; - case CHARBACKSLASH: printf("\\\\"); I++; break; - case CHARBULLET: printf("\" {} %c symbol \"",c_bullet); I++; break; - - - case BEGINSECTHEAD: - case BEGINSUBSECTHEAD: - /*if (fSource && sectheadid!=NAME) { printf("\\n\\n"); CurLine+=2; I=0; }*/ - tagc=0; /* section and subsection formatting controlled descriptively */ - /* no break;*/ - - case BEGINBOLD: - case BEGINITALICS: - case BEGINBOLDITALICS: - case BEGINCODE: - case BEGINY: - case BEGINSC: - case BEGINMANREF: - /* end text, begin attributed text */ - printf("\" {} \""); - break; - - /* rely on the fact that no more than one tag per range of text */ - case ENDBOLD: printf("\" b \""); break; - case ENDITALICS: printf("\" i \""); break; - case ENDBOLDITALICS: printf("\" bi \""); break; - case ENDCODE: printf("\" tt \""); break; - case ENDY: printf("\" symbol \""); break; - case ENDSC: printf("\" sc \""); break; - case ENDMANREF: printf("\" manref \""); break; - /* presentation attributes dealt with at end of line */ - - case BEGINBODY: - /*if (fSource) { printf("\\n\\n"); CurLine+=2; I=0; }*/ - break; - case SHORTLINE: - /*if (fSource) { printf("\\n"); CurLine++; I=0; }*/ - break; - case ENDBODY: - case BEGINBULPAIR: case ENDBULPAIR: - /*if (fSource) { printf("\\n"); CurLine++; I=0; }*/ - break; - case BEGINBULTXT: - /*if (fSource) putchar('\t');*/ - break; - case BEGINBULLET: case ENDBULLET: - case ENDBULTXT: - case BEGINSECTION: case ENDSECTION: - case BEGINSUBSECTION: case ENDSUBSECTION: - case BEGINHEADER: case ENDHEADER: - case BEGINFOOTER: case ENDFOOTER: - case BEGINTABLE: case ENDTABLE: - case FONTSIZE: - case BEGININDENT: case ENDINDENT: - /* no action */ - break; - default: - DefaultLine(cmd); - } -} - - - - -/* - * TkMan -- Tk format wrapped with commands - */ - -int linetabcnt[MAXLINES]; /* don't want to bother with realloc */ -int clocnt=0, clo[MAXLINES]; -int paracnt=0, para[MAXLINES]; -int rebuscnt=0, rebus[MAXLINES]; -int rebuspatcnt=0, rebuspatlen[25]; -char *rebuspat[25]; - -void -TkMan(enum command cmd) { - static int lastscnt=-1; - static int lastlinelen=-1; - static int lastsect=0; - /*static int coalese=0;*/ - static int finflow=0; - int i; - char c,*p; - - /* invariant: always ready to insert text */ - - switch (cmd) { - case BEGINDOC: - printf("$t insert end "); /* opening quote supplied in Tk() below */ - Tk(cmd); - break; - case ENDDOC: - Tk(ENDLINE); - - if (fHeadfoot) { -/* grr, should have +mark syntax for Tk text widget! - printf("\\n\\n\" {} \"%s\\n\" {+headfoot h2}\n", HEADERANDFOOTER); -*/ - printf("\\n\\n\" {} \"%s\\n\" h2\n", HEADERANDFOOTER); -/* printf("$t mark set headfoot end-2l\n");*/ - CurLine++; - - for (i=0; i<CRUFTS; i++) { - if (*cruft[i]) { - printf("$t insert end {%s} sc \\n\n", cruft[i]); - CurLine++; - } - } - } else printf("\"\n"); - -/* - printf("$t insert 1.0 {"); - for (i=0; i<MAXBUF; i++) if (tabgram[i]) printf("%d=%d, ", i, tabgram[i]); - printf("\\n\\n}\n"); -*/ - - printf("set manx(tabcnts) {"); for (i=1; i<CurLine; i++) printf("%d ", linetabcnt[i]); printf("}\n"); - printf("set manx(clo) {"); for (i=0; i<clocnt; i++) printf("%d ", clo[i]); printf("}\n"); - printf("set manx(para) {"); for (i=0; i<paracnt; i++) printf("%d ", para[i]); printf("}\n"); - printf("set manx(reb) {"); for (i=0; i<rebuscnt; i++) printf("%d ", rebus[i]); printf("}\n"); - - break; - - case BEGINCOMMENT: fcharout=0; break; - case ENDCOMMENT: fcharout=1; break; - case COMMENTLINE: break; - - case ENDSECTHEAD: - case ENDSUBSECTHEAD: - lastsect=1; - Tk(cmd); - break; - - case BEGINLINE: - Tk(cmd); - linetabcnt[CurLine] = itabcnt; - /* old pattern for command line options "^\\|*\[ \t\]+-\[^-\].*\[^ \t\]" */ - c = plain[0]; - if (linelen>=2 && ((c=='-' || c=='%' || c=='\\' || c=='$' /**/ /* not much talk of money in man pages so reasonable */) && (isalnum(plain[1]) /*<= plain[1]!='-'*//*no dash*/ || ncnt/*GNU long option*/) && plain[1]!=' ') ) clo[clocnt++] = CurLine; - /* - would like to require second letter to be a capital letter to cut down on number of matches, - but command names usually start with lowercase letter - maybe use a uppercase requirement as secondary strategy, but probably not - */ - if ((ncnt || lastsect) && linelen>0 && scnt>0 && scnt<=7/*used to be <=5 until groff spontaneously started putting in 7*/) para[paracnt++] = CurLine; - lastsect=0; - - - /* rebus too, instead of search through whole Tk widget */ - if (rebuspatcnt && scnt>=5 /* not sect or subsect heads */) { - for (p=plain; *p && *p!=' '; p++) /*empty*/; /* never first word */ - while (*p) { - for (i=0; i<rebuspatcnt; i++) { - if (tolower(*p) == tolower(*rebuspat[i]) && strincmp(p, rebuspat[i], rebuspatlen[i])==0) { - /* don't interfere with man page refs */ - for (; *p && !isspace(*p); p++) if (*p=='(') continue; - rebus[rebuscnt++] = CurLine; - p=""; /* break for outer */ - break; /* just locating any line with any rebus, not exact positions */ - } - } - /* just check start of words, though doesn't have to be full word (if did, could use strlen rather than strnlen) */ - while (*p && *p!=' ') p++; - while (*p && *p==' ') p++; - } - } - - - if (fReflow && !ncnt && (finflow || lastlinelen>50) && (abs(scnt-lastscnt)<=1 || abs(scnt-hanging)<=1)) { - finflow=1; - putchar(' '); - } else { - Tk(ENDLINE); - /*if ((CurLine&0x3f)==0x3f) printf("\"\nupdate idletasks\n$t insert end \""); blows up some Tk text buffer, apparently, on long lines*/ - if ((CurLine&0x1f)==0x1f) printf("\"\nupdate idletasks\n$t insert end \""); - finflow=0; - - /*if (fCodeline) printf("CODE");*/ - } - lastlinelen=linelen; lastscnt=scnt; - break; - - case ENDLINE: - /* don't call Tk(ENDLINE) */ - break; - - default: /* if not caught above, it's the same as Tk */ - Tk(cmd); - } -} - - - - -/* - * ASCII - */ - -void -ASCII(enum command cmd) { - int i; - - switch (cmd) { - case ENDDOC: - if (fHeadfoot) { - printf("\n%s\n", HEADERANDFOOTER); - for (i=0; i<CRUFTS; i++) if (*cruft[i]) printf("%s\n", cruft[i]); - } - break; - case CHARRQUOTE: - case CHARLQUOTE: - putchar('"'); - break; - case CHARLSQUOTE: - putchar('`'); - break; - case CHARRSQUOTE: - case CHARACUTE: - putchar('\''); - break; - case CHARPERIOD: - case CHARTAB: - case CHARDASH: - case CHARLT: - case CHARAMP: - case CHARBACKSLASH: - case CHARGT: - case CHARHAT: - case CHARVBAR: - case CHARNBSP: - putchar(cmd); break; - case CHARDAGGER: putchar('+'); break; - case CHARBULLET: putchar('*'); break; - case CHARPLUSMINUS: printf("+-"); break; - case CHANGEBAR: putchar('|'); break; - case CHARCENT: putchar('c'); break; - case CHARSECT: putchar('S'); break; - case CHARCOPYR: printf("(C)"); break; - case CHARNOT: putchar('~'); break; - case CHARREGTM: printf("(R)"); break; - case CHARDEG: putchar('o'); break; - case CHAR14: printf("1/4"); break; - case CHAR12: printf("1/2"); break; - case CHAR34: printf("3/4"); break; - case CHARMUL: putchar('X'); break; - case CHARDIV: putchar('/'); break; - case HR: printf("\n%s\n", horizontalrule); break; - - case BEGINLINE: - for (i=0; i<ncnt; i++) putchar('\n'); - break; - case BEGINBODY: - case SHORTLINE: - if (!fSource) break; - case ENDLINE: - putchar('\n'); - CurLine++; - break; - - case BEGINDOC: - case ENDBODY: - case BEGINHEADER: case ENDHEADER: - case BEGINFOOTER: case ENDFOOTER: - case BEGINSECTION: case ENDSECTION: - case BEGINSECTHEAD: case ENDSECTHEAD: - case BEGINSUBSECTHEAD: case ENDSUBSECTHEAD: - case BEGINBULPAIR: case ENDBULPAIR: - case BEGINBULLET: case ENDBULLET: - case BEGINBULTXT: case ENDBULTXT: - case BEGINSUBSECTION: case ENDSUBSECTION: - - case BEGINTABLE: case ENDTABLE: - case BEGINTABLELINE: case ENDTABLELINE: case BEGINTABLEENTRY: case ENDTABLEENTRY: - case BEGININDENT: case ENDINDENT: - case FONTSIZE: - case BEGINBOLD: case ENDBOLD: - case BEGINCODE: case ENDCODE: - case BEGINITALICS: case ENDITALICS: - case BEGINMANREF: case ENDMANREF: - case BEGINBOLDITALICS: case ENDBOLDITALICS: - case BEGINY: case ENDY: - case BEGINSC: case ENDSC: - /* nothing */ - break; - default: - DefaultLine(cmd); - } -} - - - -/* - * Perl 5 pod ("plain old documentation") - */ - -void -pod(enum command cmd) { - static int curindent=0; - int i; - - if (hanging==-1) { - if (curindent) hanging=curindent; else hanging=5; - } - - - if (cmd==BEGINBULPAIR) { - /* want to have multiply indented text */ - if (curindent && hanging!=curindent) printf("\n=back\n\n"); - if (hanging!=curindent) printf("\n=over %d\n\n",hanging); - curindent=hanging; - } else if (cmd==ENDBULPAIR) { - /* nothing--wait until next command */ - } else if (cmd==BEGINLINE && !scnt) { - if (curindent) printf("\n=back\n\n"); - curindent=0; - } else if (cmd==BEGINBODY) { - if (curindent) { - printf("\n=back\n\n"); - curindent=0; - auxindent=0; - } - } -/* - case BEGINBULPAIR: - printf("=over %d\n\n", hanging); - break; - case ENDBULPAIR: - printf("\n=back\n\n"); - break; -*/ - switch (cmd) { - case BEGINDOC: I=0; break; - - case BEGINCOMMENT: fcharout=0; break; - case ENDCOMMENT: fcharout=1; break; - case COMMENTLINE: break; - - case CHARRQUOTE: - case CHARLQUOTE: - putchar('"'); - break; - case CHARLSQUOTE: - putchar('`'); - break; - case CHARRSQUOTE: - case CHARACUTE: - putchar('\''); - break; - case CHARPERIOD: - case CHARTAB: - case CHARDASH: - case CHARLT: - case CHARAMP: - case CHARBACKSLASH: - case CHARGT: - case CHARHAT: - case CHARVBAR: - case CHARNBSP: - putchar(cmd); break; - case CHARDAGGER: putchar('+'); break; - case CHARPLUSMINUS: printf("+-"); break; - case CHANGEBAR: putchar('|'); break; - case CHARCENT: putchar('c'); break; - case CHARSECT: putchar('S'); break; - case CHARCOPYR: printf("(C)"); break; - case CHARNOT: putchar('~'); break; - case CHARREGTM: printf("(R)"); break; - case CHARDEG: putchar('o'); break; - case CHAR14: printf("1/4"); break; - case CHAR12: printf("1/2"); break; - case CHAR34: printf("3/4"); break; - case CHARMUL: putchar('X'); break; - case CHARDIV: putchar('/'); break; - case HR: printf("\n%s\n", horizontalrule); break; - case CHARBULLET: putchar('*'); break; - - case BEGINLINE: - for (i=0; i<ncnt; i++) putchar('\n'); - CurLine+=ncnt; - break; - case ENDLINE: - putchar('\n'); - CurLine++; - I=0; - break; - - case BEGINSECTHEAD: printf("=head1 "); break; - case BEGINSUBSECTHEAD: printf("=head2 "); break; - - case ENDSECTHEAD: - case ENDSUBSECTHEAD: - printf("\n"); - break; - - case BEGINCODE: - case BEGINBOLD: printf("B<"); break; - case BEGINITALICS: printf("I<"); break; - case BEGINMANREF: printf("L<"); break; - - case ENDBOLD: - case ENDCODE: - case ENDITALICS: - case ENDMANREF: - printf(">"); - break; - - case BEGINBULLET: - printf("\n=item "); - break; - case ENDBULLET: - printf("\n\n"); - fcharout=0; - break; - case BEGINBULTXT: - fcharout=1; - auxindent=hanging; - break; - case ENDBULTXT: - auxindent=0; - break; - - - case ENDDOC: - case BEGINBODY: case ENDBODY: - case BEGINHEADER: case ENDHEADER: - case BEGINFOOTER: case ENDFOOTER: - case BEGINSECTION: case ENDSECTION: - case BEGINSUBSECTION: case ENDSUBSECTION: - case BEGINBULPAIR: case ENDBULPAIR: - - case SHORTLINE: - case BEGINTABLE: case ENDTABLE: - case BEGINTABLELINE: case ENDTABLELINE: case BEGINTABLEENTRY: case ENDTABLEENTRY: - case BEGININDENT: case ENDINDENT: - case FONTSIZE: - case BEGINBOLDITALICS: case ENDBOLDITALICS: - case BEGINY: case ENDY: - case BEGINSC: case ENDSC: - /* nothing */ - break; - default: - DefaultLine(cmd); - } -} - - - -void -Sections(enum command cmd) { - - switch (cmd) { - case ENDSECTHEAD: - case ENDSUBSECTHEAD: - putchar('\n'); - case BEGINDOC: - fcharout=0; - break; - - case BEGINCOMMENT: fcharout=0; break; - case ENDCOMMENT: fcharout=1; break; - case COMMENTLINE: break; - - case BEGINSUBSECTHEAD: - printf(" "); - /* no break */ - case BEGINSECTHEAD: - fcharout=1; - break; - case CHARRQUOTE: - case CHARLQUOTE: - xputchar('"'); - break; - case CHARLSQUOTE: - xputchar('`'); - break; - case CHARRSQUOTE: - case CHARACUTE: - xputchar('\''); - break; - case BEGINTABLE: case ENDTABLE: - case BEGINTABLELINE: case ENDTABLELINE: case BEGINTABLEENTRY: case ENDTABLEENTRY: - case BEGININDENT: case ENDINDENT: - case FONTSIZE: - break; - case CHARPERIOD: - case CHARTAB: - case CHARDASH: - case CHARBACKSLASH: - case CHARLT: - case CHARGT: - case CHARHAT: - case CHARVBAR: - case CHARAMP: - case CHARNBSP: - xputchar(cmd); break; - case CHARDAGGER: xputchar('+'); break; - case CHARBULLET: xputchar('*'); break; - case CHARPLUSMINUS: xputchar('+'); xputchar('-'); break; - case CHARCENT: xputchar('c'); break; - case CHARSECT: xputchar('S'); break; - case CHARCOPYR: xputchar('('); xputchar('C'); xputchar(')'); break; - case CHARNOT: xputchar('~'); break; - case CHARREGTM: xputchar('('); xputchar('R'); xputchar(')'); break; - case CHARDEG: xputchar('o'); break; - case CHAR14: xputchar('1'); xputchar('/'); xputchar('4'); break; - case CHAR12: xputchar('1'); xputchar('/'); xputchar('2'); break; - case CHAR34: xputchar('3'); xputchar('/'); xputchar('4'); break; - case CHARMUL: xputchar('X'); break; - case CHARDIV: xputchar('/'); break; - case ITAB: DefaultLine(cmd); break; - - - default: - /* nothing */ - break; - } -} - - - -void -Roff(enum command cmd) { - switch (cmd) { - case BEGINDOC: - I=1; - printf(".TH %s %s \"generated by PolyglotMan\" UCB\n", manName, manSect); - printf(".\\\" %s,\n", PROVENANCE); - printf(".\\\" %s\n", HOME); - CurLine=1; - break; - case BEGINBODY: printf(".LP\n"); break; - - case BEGINCOMMENT: - case ENDCOMMENT: - break; - case COMMENTLINE: printf("'\\\" "); break; - - case BEGINSECTHEAD: printf(".SH "); break; - case BEGINSUBSECTHEAD:printf(".SS "); break; - case BEGINBULPAIR: printf(".IP "); break; - case SHORTLINE: printf("\n.br"); break; - case BEGINBOLD: printf("\\fB"); break; /* \n.B -- grr! */ - case ENDCODE: - case ENDBOLD: printf("\\fR"); break; /* putchar('\n'); */ - case BEGINITALICS: printf("\\fI"); break; - case ENDITALICS: printf("\\fR"); break; - case BEGINCODE: - case BEGINBOLDITALICS:printf("\\f4"); break; - case ENDBOLDITALICS: printf("\\fR"); break; - - case CHARLQUOTE: printf("\\*(rq"); break; - case CHARRQUOTE: printf("\\*(lq"); break; - case CHARNBSP: printf("\\|"); break; - case CHARLSQUOTE: putchar('`'); break; - case CHARRSQUOTE: putchar('\''); break; - case CHARPERIOD: if (I==1) printf("\\&"); putchar('.'); I++; break; - case CHARDASH: printf("\\-"); break; - case CHARTAB: - case CHARLT: - case CHARGT: - case CHARHAT: - case CHARVBAR: - case CHARAMP: - putchar(cmd); break; - case CHARBULLET: printf("\\(bu"); break; - case CHARDAGGER: printf("\\(dg"); break; - case CHARPLUSMINUS: printf("\\(+-"); break; - case CHANGEBAR: putchar('|'); break; - case CHARCENT: printf("\\(ct"); break; - case CHARSECT: printf("\\(sc"); break; - case CHARCOPYR: printf("\\(co"); break; - case CHARNOT: printf("\\(no"); break; - case CHARREGTM: printf("\\(rg"); break; - case CHARDEG: printf("\\(de"); break; - case CHARACUTE: printf("\\(aa"); break; - case CHAR14: printf("\\(14"); break; - case CHAR12: printf("\\(12"); break; - case CHAR34: printf("\\(34"); break; - case CHARMUL: printf("\\(mu"); break; - case CHARDIV: printf("\\(di"); break; - case HR: /*printf("\n%s\n", horizontalrule);*/ break; - case CHARBACKSLASH: printf("\\\\"); break; /* correct? */ - - case BEGINLINE: - /*for (i=0; i<ncnt; i++) putchar('\n');*/ - break; - - case BEGINBULLET: putchar('"'); break; - case ENDBULLET: printf("\"\n"); break; - - case ENDLINE: - CurLine++; - I=1; - /* no break */ - case ENDSUBSECTHEAD: - case ENDSECTHEAD: - case ENDDOC: - putchar('\n'); - break; - - case BEGINCODEBLOCK: printf(".nf\n"); - case ENDCODEBLOCK: printf(".fi\n"); - - case ENDBODY: - case ENDBULPAIR: - case BEGINBULTXT: case ENDBULTXT: - case BEGINSECTION: case ENDSECTION: - case BEGINSUBSECTION: case ENDSUBSECTION: - case BEGINY: case ENDY: - case BEGINSC: case ENDSC: - case BEGINTABLE: case ENDTABLE: - case BEGINTABLELINE: case ENDTABLELINE: case BEGINTABLEENTRY: case ENDTABLEENTRY: - case BEGININDENT: case ENDINDENT: - case FONTSIZE: - case BEGINHEADER: case ENDHEADER: - case BEGINFOOTER: case ENDFOOTER: - case BEGINMANREF: case ENDMANREF: - /* nothing */ - break; - default: - DefaultPara(cmd); - } -} - - - -/* - * HTML - */ - -void -HTML(enum command cmd) { - static int pre=0; - int i; - int lasttoc; - - /* always respond to these signals */ - switch (cmd) { - case CHARNBSP: printf(" "); I++; break; - case CHARTAB: printf("<tt> </tt> <tt> </tt> "); break; - case CHARLQUOTE: printf("“"); break; - case CHARRQUOTE: printf("”"); break; - case CHARLSQUOTE: printf("‘"); break; - case CHARRSQUOTE: printf("’"); break; - case CHARPERIOD: - case CHARDASH: - case CHARBACKSLASH: - case CHARVBAR: /*printf("¦"); -- broken bar no good */ - case CHARHAT: - putchar(cmd); - break; - case CHARDAGGER: printf("†"); break; - case CHARBULLET: if (I>0 || !finlist) printf("·"/*"·"*//*§--middot hardly visible*/); - break; - case CHARPLUSMINUS: printf("±"); break; - case CHARGT: printf(">"); break; - case CHARLT: printf("<"); break; - case CHARAMP: printf("&"); break; - case CHARCENT: printf("¢"); break; - case CHARSECT: printf("§"); break; - case CHARCOPYR: printf("©"); break; - case CHARNOT: printf("¬"); break; - case CHARREGTM: printf("®"); break; - case CHARDEG: printf("°"); break; - case CHARACUTE: printf("´"); break; - case CHAR14: printf("¼"); break; - case CHAR12: printf("½"); break; - case CHAR34: printf("¾"); break; - case CHARMUL: printf("×"); break; - case CHARDIV: printf("÷"); break; - default: - break; - } - - /* while in pre mode... */ - if (pre) { - switch (cmd) { - case ENDLINE: I=0; CurLine++; if (!fPara && scnt) printf("<br>"); printf("\n"); break; - case ENDTABLE: - if (fSource) { - printf("</table>\n"); - } else { - printf("</pre><br>\n"); pre=0; fQS=fIQS=fPara=1; - } - break; - case ENDCODEBLOCK: printf("</pre>"); pre=0; break; - case SHORTLINE: - case ENDBODY: - printf("\n"); - break; - default: - /* nothing */ - break; - } - return; - } - - /* usual operation */ - switch (cmd) { - case BEGINDOC: - /* escchars = ... => HTML doesn't backslash-quote metacharacters */ - printf("<!-- %s, -->\n", PROVENANCE); - printf("<!-- %s -->\n\n", HOME); - printf("<html>\n<head>\n"); -/* printf("<isindex>\n");*/ - /* better title possible? */ - printf("<title>"); printf(manTitle, manName, manSect); printf("\n"); - printf("\n\n"); - printf("%s

\n", TABLEOFCONTENTS); - I=0; - break; - case ENDDOC: - /* header and footer wanted? */ - printf("

\n"); - if (fHeadfoot) { - printf("


%s

\n", HEADERANDFOOTER); - for (i=0; i\n", cruft[i]); - } - - if (!tocc) { - /*printf("\n

ERROR: Empty man page

\n");*/ - } else { - printf("\n

\n"); - printf("%s

\n", TABLEOFCONTENTS); - printf("

    \n"); - for (i=0, lasttoc=BEGINSECTION; i\n"); - else printf("
\n"); - } - printf("
  • %s
  • \n", i, i, toc[i].text); - } - if (lasttoc==BEGINSUBSECTION) printf(""); - printf("\n"); - } - printf("\n\n"); - break; - case BEGINBODY: - printf("

    \n"); - break; - case ENDBODY: break; - - case BEGINCOMMENT: printf("\n\n"); break; - case COMMENTLINE: break; - - case BEGINSECTHEAD: - printf("\n

    ", tocc, tocc); - break; - case ENDSECTHEAD: - printf("

    \n"); - /* useful extraction from FILES, ENVIRONMENT? */ - break; - case BEGINSUBSECTHEAD: - printf("\n

    ", tocc, tocc); - break; - case ENDSUBSECTHEAD: - printf("

    \n"); - break; - case BEGINSECTION: break; - case ENDSECTION: - if (sectheadid==NAME && message!=NULL) printf(message); - break; - case BEGINSUBSECTION: break; - case ENDSUBSECTION: break; - - case BEGINBULPAIR: - if (listtype==OL) printf("\n
      \n"); - else if (listtype==UL) printf("\n
        \n"); - else printf("\n
        \n"); - break; - case ENDBULPAIR: - if (listtype==OL) printf("\n
    \n"); - else if (listtype==UL) printf("\n\n"); - else printf("
    \n"); - break; - case BEGINBULLET: - if (listtype==OL || listtype==UL) fcharout=0; - else printf("\n
    "); - break; - case ENDBULLET: - if (listtype==OL || listtype==UL) fcharout=1; - else printf("
    "); - break; - case BEGINBULTXT: - if (listtype==OL || listtype==UL) printf("
  • "); - else printf("\n
    "); - break; - case ENDBULTXT: - if (listtype==OL || listtype==UL) printf("
  • "); - else printf("\n"); - break; - - case BEGINLINE: - /* if (ncnt) printf("

    \n"); -- if haven't already generated structural tag */ - if (ncnt) printf("\n

    "); - - /* trailing spaces already trimmed off, so look for eol now */ - if (fCodeline) { - printf(""); - for (i=0; i
    "); fCodeline=0; } - I=0; CurLine++; if (!fPara && scnt) printf("
    "); printf("\n"); - break; - - case SHORTLINE: - if (fCodeline) { printf("
    "); fCodeline=0; } - if (!fIP) printf("
    \n"); - break; - - - case BEGINTABLE: - if (fSource) { - /*printf("

    \n");*/ - printf("
    \n"); - } else { - printf("
    \n"); pre=1; fQS=fIQS=fPara=0;
    -		}
    -		break;
    -	   case ENDTABLE:
    -		if (fSource) {
    -		  printf("
    \n"); - } else { - printf("
    \n"); pre=0; fQS=fIQS=fPara=1; - } - break; - case BEGINTABLELINE: printf(""); break; - case ENDTABLELINE: printf("\n"); break; - case BEGINTABLEENTRY: - printf("1) printf(" colspan=%d", tblcellspan); - printf("'>"); - break; - case ENDTABLEENTRY: - printf(""); - break; - - /* something better with CSS */ - case BEGININDENT: printf("
    "); break; - case ENDINDENT: printf("
    \n"); break; - - case FONTSIZE: - /* HTML font step sizes are bigger than troff's */ - if ((fontdelta+=intArg)!=0) printf("", (intArg>0)?'+':'-'); else printf("\n"); - break; - - case BEGINBOLD: printf(""); break; - case ENDBOLD: printf(""); break; - case BEGINITALICS: printf(""); break; - case ENDITALICS: printf(""); break; - case BEGINBOLDITALICS: - case BEGINCODE: printf(""); break; - case ENDBOLDITALICS: - case ENDCODE: printf(""); break; - case BEGINCODEBLOCK: printf("
    "); pre=1; break;	/* wrong for two-column lists in kermit.1, pine.1, perl4.1 */
    -	   case ENDCODEBLOCK:	printf("
    "); pre=0; break; - case BEGINCENTER: printf("
    "); break; - case ENDCENTER: printf("
    "); break; - case BEGINMANREF: - manrefextract(hitxt); - if (fmanRef) { printf(""); } - else printf(""); - break; - case ENDMANREF: - if (fmanRef) printf("\n"); else printf(""); - break; - case HR: printf("\n
    \n"); break; - - /* U (was B, I), strike -- all temporary until HTML 4.0's INS and DEL widespread */ - case BEGINDIFFA: printf(""); break; - case ENDDIFFA: printf(""); break; - case BEGINDIFFD: printf(""); break; - case ENDDIFFD: printf(""); break; - - case BEGINSC: case ENDSC: - case BEGINY: case ENDY: - case BEGINHEADER: case ENDHEADER: - case BEGINFOOTER: case ENDFOOTER: - case CHANGEBAR: - /* nothing */ - break; - default: - DefaultPara(cmd); - } -} - - - -/* - * DocBook XML - * improvements by Aaron Hawley applied 2003 June 5 - * - * N.B. The framework for XML is in place but not done. If you - * are familiar with the DocBook DTD, however, it shouldn't be - * too difficult to finish it. If you do so, please send your - * code to me so that I may share the wealth in the next release. - */ - -const char *DOCBOOKPATH = "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"; - -void -XML(enum command cmd) { - static int pre=0; - int i; - int lasttoc; - char *p; - static int fRefEntry=0; - static int fRefPurpose=0; - static int fSynopsisFirst=0; - /*static char *bads => XML doesn't backslash-quote metacharacters */ - -/* -*/ - - /* always respond to these signals */ - switch (cmd) { - case CHARLQUOTE: case CHARRQUOTE: printf("""); break; - case CHARBULLET: printf("•"); break; - case CHARDAGGER: printf("†"); break; - case CHARPLUSMINUS: printf("±"); break; - case CHARCOPYR: printf("©"); break; - case CHARNOT: printf("¬"); break; - case CHARMUL: printf("×"); break; - case CHARDIV: printf("÷"); break; - case CHARAMP: printf("&"); break; - case CHARDASH: - if (sectheadid==NAME && !fRefPurpose) { - printf(""); - fRefPurpose=1; - } else putchar('-'); - break; - case CHARBACKSLASH: putchar('\\'); break; - case CHARGT: printf(">"); break; - case CHARLT: printf("<"); break; - case CHARLSQUOTE: - case CHARRSQUOTE: - case CHARPERIOD: - case CHARTAB: - case CHARHAT: - case CHARVBAR: - case CHARNBSP: - case CHARCENT: - case CHARSECT: - case CHARREGTM: - case CHARDEG: - case CHARACUTE: - case CHAR14: - case CHAR12: - case CHAR34: - putchar(cmd); - break; - default: - break; - } - - /* while in pre mode... */ - if (pre) { - switch (cmd) { - case ENDLINE: I=0; CurLine++; if (!fPara && scnt) putchar(' '); break; - case ENDTABLE: - if (fSource) printf("\n"); - else { printf("\n"); pre=0; fQS=fIQS=fPara=1; } - break; - default: - /* nothing */ - break; - } - return; - } - - /* usual operation */ - switch (cmd) { - case BEGINDOC: - printf("\n\n", DOCBOOKPATH); - - printf("\n"); - - printf("\n\n",HOME); - /* better title possible? */ - for (p=manName; *p; p++) *p = tolower(*p); - printf("\n", manName, manSect); - printf("\n%s\n", manName); - printf("%s\n\n\n", manSect); - - I=0; - break; - - case ENDDOC: - /* header and footer wanted? */ - if (fHeadfoot) { - printf("\n\n%s\n", HEADERANDFOOTER); - for (i=0; i%s\n", cruft[i]); - printf("\n"); - } - - /* table of contents, such as found in HTML, can be generated automatically by XML software */ - - printf("\n"); - break; - case BEGINBODY: - if (fPara) printf("\n"); - printf(""); fPara = 1; - break; - case ENDBODY: - if (fRefPurpose) { printf(""); fRefPurpose=0; } - else { printf("\n"); fPara=0; } - break; - - case BEGINCOMMENT: printf("\n\n"); break; - case COMMENTLINE: break; - - case BEGINSECTHEAD: - case BEGINSUBSECTHEAD: - if (sectheadid != NAME && sectheadid != SYNOPSIS) printf(""); - break; - case ENDSECTHEAD: - case ENDSUBSECTHEAD: - if (sectheadid == NAME) printf("--><refname>"); - else if (sectheadid == SYNOPSIS) {} - else { printf("\n"); fPara=1; } - break; - - case BEGINSECTION: - if (sectheadid==NAME) printf(""); } - printf(""); break; - case ENDBOLD: printf(""); break; - case BEGINITALICS: printf(""); break; /* could be literal or arg */ - case ENDITALICS: printf(""); break; - case BEGINBOLDITALICS: case BEGINCODE: printf(""); break; - case ENDBOLDITALICS: case ENDCODE: printf(""); break; - case BEGINMANREF: - manrefextract(hitxt); - if (fmanRef) { printf(""); } - break; - case ENDMANREF: - if (fmanRef) printf(""); - break; - - case HR: - case BEGINSC: case ENDSC: - case BEGINY: case ENDY: - case BEGINHEADER: case ENDHEADER: - case BEGINFOOTER: case ENDFOOTER: - case CHANGEBAR: - /* nothing */ - break; - default: - DefaultPara(cmd); - } -} - - - -/* generates MIME compliant to RFC 1563 */ - -void -MIME(enum command cmd) { - static int pre=0; - int i; - - /* always respond to these signals */ - switch (cmd) { - case CHARDASH: - case CHARAMP: - case CHARPERIOD: - case CHARTAB: - putchar(cmd); break; - case CHARLSQUOTE: putchar('`'); break; - case CHARACUTE: - case CHARRSQUOTE: putchar('\''); break; - case CHARBULLET: putchar('*'); break; - case CHARDAGGER: putchar('|'); break; - case CHARPLUSMINUS: printf("+-"); break; - case CHARNBSP: putchar(' '); break; - case CHARCENT: putchar('c'); break; - case CHARSECT: putchar('S'); break; - case CHARCOPYR: printf("(C)"); break; - case CHARNOT: putchar('~'); break; - case CHARREGTM: printf("(R)"); break; - case CHARDEG: putchar('o'); break; - case CHAR14: printf("1/4"); break; - case CHAR12: printf("1/2"); break; - case CHAR34: printf("3/4"); break; - case CHARMUL: putchar('X'); break; - case CHARDIV: putchar('/'); break; - case CHARLQUOTE: - case CHARRQUOTE: - putchar('"'); - break; - case CHARBACKSLASH: /* these should be caught as escaped chars */ - case CHARGT: - case CHARLT: - assert(1); - break; - default: - break; - } - - /* while in pre mode... */ - if (pre) { - switch (cmd) { - case ENDLINE: I=0; CurLine++; if (!fPara && scnt) printf("\n\n"); break; - case ENDTABLE: printf("\n\n"); pre=0; fQS=fIQS=fPara=1; break; - default: - /* nothing */ - break; - } - return; - } - - /* usual operation */ - switch (cmd) { - case BEGINDOC: - printf("Content-Type: text/enriched\n"); - printf("Text-Width: 60\n"); - escchars = "<>\\"; - - I=0; - break; - case ENDDOC: - /* header and footer wanted? */ - printf("\n\n"); - if (fHeadfoot) { - printf("\n"); - MIME(BEGINSECTHEAD); printf("%s",HEADERANDFOOTER); MIME(ENDSECTHEAD); - for (i=0; i\n"); - printf("%s\n%s\n", PROVENANCE, HOME); - printf("\n\n"); -*/ - -/* - printf("\n

    \n"); - printf("%s

    \n", TABLEOFCONTENTS); - printf("

      \n"); - for (i=0, lasttoc=BEGINSECTION; i\n"); - else printf("
    \n"); - } - printf("
  • %s
  • \n", i, i, toc[i].text); - } - if (lasttoc==BEGINSUBSECTION) printf(""); - printf("\n"); - printf("\n"); -*/ - break; - case BEGINBODY: - printf("\n\n"); - break; - case ENDBODY: break; - - case BEGINCOMMENT: fcharout=0; break; - case ENDCOMMENT: fcharout=1; break; - case COMMENTLINE: break; - - case BEGINSECTHEAD: - printf("\n"); - /*A NAME=\"sect%d\" HREF=\"#toc%d\">

    ", tocc, tocc);*/ - break; - case ENDSECTHEAD: - printf("\n\n"); - /* useful extraction from files, environment? */ - break; - case BEGINSUBSECTHEAD: - printf(""); - /*\n

    ", tocc, tocc);*/ - break; - case ENDSUBSECTHEAD: - printf("\n\n"); - break; - case BEGINSECTION: - case BEGINSUBSECTION: - break; - case ENDSECTION: - case ENDSUBSECTION: - printf("\n"); - break; - - case BEGINBULPAIR: break; - case ENDBULPAIR: break; - case BEGINBULLET: printf(""); break; - case ENDBULLET: printf("\t"); break; - case BEGINBULTXT: - case BEGININDENT: - printf(""); - break; - case ENDBULTXT: - case ENDINDENT: - printf("\n"); - break; - - case FONTSIZE: - if ((fontdelta+=intArg)==0) { - if (intArg>0) printf(""); else printf(""); - } else { - if (intArg>0) printf(""); else printf(""); - } - break; - - case BEGINLINE: /*if (ncnt) printf("\n\n");*/ break; - case ENDLINE: I=0; CurLine++; printf("\n"); break; - case SHORTLINE: if (!fIP) printf("\n\n"); break; - case BEGINTABLE: printf("\n"); pre=1; fQS=fIQS=fPara=0; break; - case ENDTABLE: printf("\n"); pre=0; fQS=fIQS=fPara=1; break; - case BEGINTABLELINE: case ENDTABLELINE: case BEGINTABLEENTRY: case ENDTABLEENTRY: - break; - /* could use a new list type */ - - case BEGINBOLD: printf(""); break; - case ENDBOLD: printf(""); break; - case BEGINITALICS: printf(""); break; - case ENDITALICS: printf(""); break; - case BEGINCODE: - case BEGINBOLDITALICS:printf(""); break; - case ENDCODE: - case ENDBOLDITALICS: printf(""); break; - case BEGINMANREF: - printf("blue"); -/* how to make this hypertext? - manrefextract(hitxt); - if (fmanRef) { printf("\n"); } - else printf(""); - break; -*/ - break; - case ENDMANREF: - printf(""); - break; - - case HR: printf("\n\n%s\n\n", horizontalrule); break; - - case BEGINSC: case ENDSC: - case BEGINY: case ENDY: - case BEGINHEADER: case ENDHEADER: - case BEGINFOOTER: case ENDFOOTER: - case CHANGEBAR: - /* nothing */ - break; - default: - DefaultPara(cmd); - } -} - - - -/* - * LaTeX - */ - -void -LaTeX(enum command cmd) { - - switch (cmd) { - case BEGINDOC: - escchars = "$&%#_{}"; /* and more to come? */ - printf("%% %s,\n", PROVENANCE); - printf("%% %s\n\n", HOME); - /* definitions */ - printf( - "\\documentstyle{article}\n" - "\\def\\thefootnote{\\fnsymbol{footnote}}\n" - "\\setlength{\\parindent}{0pt}\n" - "\\setlength{\\parskip}{0.5\\baselineskip plus 2pt minus 1pt}\n" - "\\begin{document}\n" - ); - I=0; - break; - case ENDDOC: - /* header and footer wanted? */ - printf("\n\\end{document}\n"); - - break; - case BEGINBODY: - printf("\n\n"); - break; - case ENDBODY: break; - - case BEGINCOMMENT: - case ENDCOMMENT: - break; - case COMMENTLINE: printf("%% "); break; - - - case BEGINSECTION: break; - case ENDSECTION: break; - case BEGINSECTHEAD: printf("\n\\section{"); tagc=0; break; - case ENDSECTHEAD: - printf("}"); -/* - if (CurLine==1) printf("\\footnote{" - "\\it conversion to \\LaTeX\ format by PolyglotMan " - "available via anonymous ftp from {\\tt ftp.berkeley.edu:/ucb/people/phelps/tcltk}}" - ); -*/ - /* useful extraction from files, environment? */ - printf("\n"); - break; - case BEGINSUBSECTHEAD:printf("\n\\subsection{"); break; - case ENDSUBSECTHEAD: - printf("}"); - break; - case BEGINSUBSECTION: break; - case ENDSUBSECTION: break; - case BEGINBULPAIR: printf("\\begin{itemize}\n"); break; - case ENDBULPAIR: printf("\\end{itemize}\n"); break; - case BEGINBULLET: printf("\\item ["); break; - case ENDBULLET: printf("] "); break; - case BEGINLINE: /*if (ncnt) printf("\n\n");*/ break; - case ENDLINE: I=0; putchar('\n'); CurLine++; break; - case BEGINTABLE: printf("\\begin{verbatim}\n"); break; - case ENDTABLE: printf("\\end{verbatim}\n"); break; - case BEGINTABLELINE: case ENDTABLELINE: case BEGINTABLEENTRY: case ENDTABLEENTRY: - break; - case BEGININDENT: case ENDINDENT: - case FONTSIZE: - break; - case SHORTLINE: if (!fIP) printf("\n\n"); break; - case BEGINBULTXT: break; - case ENDBULTXT: putchar('\n'); break; - - case CHARLQUOTE: printf("``"); break; - case CHARRQUOTE: printf("''"); break; - case CHARLSQUOTE: - case CHARRSQUOTE: - case CHARPERIOD: - case CHARTAB: - case CHARDASH: - case CHARNBSP: - putchar(cmd); break; - case CHARBACKSLASH: printf("$\\backslash$"); break; - case CHARGT: printf("$>$"); break; - case CHARLT: printf("$<$"); break; - case CHARHAT: printf("$\\char94{}$"); break; - case CHARVBAR: printf("$|$"); break; - case CHARAMP: printf("\\&"); break; - case CHARBULLET: printf("$\\bullet$ "); break; - case CHARDAGGER: printf("\\dag "); break; - case CHARPLUSMINUS: printf("\\pm "); break; - case CHARCENT: printf("\\hbox{\\rm\\rlap/c}"); break; - case CHARSECT: printf("\\S "); break; - case CHARCOPYR: printf("\\copyright "); break; - case CHARNOT: printf("$\\neg$"); break; - case CHARREGTM: printf("(R)"); break; - case CHARDEG: printf("$^\\circ$"); break; - case CHARACUTE: putchar('\''); break; - case CHAR14: printf("$\\frac{1}{4}$"); break; - case CHAR12: printf("$\\frac{1}{2}$"); break; - case CHAR34: printf("$\\frac{3}{4}$"); break; - case CHARMUL: printf("\\times "); break; - case CHARDIV: printf("\\div "); break; - - case BEGINCODE: - case BEGINBOLD: printf("{\\bf "); break; - case BEGINSC: printf("{\\sc "); break; - case BEGINITALICS: printf("{\\it "); break; - case BEGINBOLDITALICS:printf("{\\bf\\it "); break; - case BEGINMANREF: printf("{\\sf "); break; - case ENDCODE: - case ENDBOLD: - case ENDSC: - case ENDITALICS: - case ENDBOLDITALICS: - case ENDMANREF: - putchar('}'); - break; - case HR: /*printf("\n%s\n", horizontalrule);*/ break; - - case BEGINY: case ENDY: - case BEGINHEADER: case ENDHEADER: - case BEGINFOOTER: case ENDFOOTER: - case CHANGEBAR: - /* nothing */ - break; - default: - DefaultPara(cmd); - } -} - - -void -LaTeX2e(enum command cmd) { - - switch (cmd) { - /* replace selected commands ... */ - case BEGINDOC: - escchars = "$&%#_{}"; - printf("%% %s,\n", PROVENANCE); - printf("%% %s\n\n", HOME); - /* definitions */ - printf( - "\\documentclass{article}\n" - "\\def\\thefootnote{\\fnsymbol{footnote}}\n" - "\\setlength{\\parindent}{0pt}\n" - "\\setlength{\\parskip}{0.5\\baselineskip plus 2pt minus 1pt}\n" - "\\begin{document}\n" - ); - I=0; - break; - case BEGINCODE: - case BEGINBOLD: printf("\\textbf{"); break; - case BEGINSC: printf("\\textsc{"); break; - case BEGINITALICS: printf("\\textit{"); break; - case BEGINBOLDITALICS:printf("\\textbf{\\textit{"); break; - case BEGINMANREF: printf("\\textsf{"); break; - case ENDBOLDITALICS: printf("}}"); break; - - /* ... rest same as old LaTeX */ - default: - LaTeX(cmd); - } -} - - - -/* - * Rich Text Format (RTF) - */ - -/* RTF could use more work */ - -void -RTF(enum command cmd) { - - switch (cmd) { - case BEGINDOC: - escchars = "{}"; - /* definitions */ - printf( - /* fonts */ - "{\\rtf1\\deff2 {\\fonttbl" - "{\\f20\\froman Times;}{\\f150\\fnil I Times Italic;}" - "{\\f151\\fnil B Times Bold;}{\\f152\\fnil BI Times BoldItalic;}" - "{\\f22\\fmodern Courier;}{\\f23\\ftech Symbol;}" - "{\\f135\\fnil I Courier Oblique;}{\\f136\\fnil B Courier Bold;}{\\f137\\fnil BI Courier BoldOblique;}" - "{\\f138\\fnil I Helvetica Oblique;}{\\f139\\fnil B Helvetica Bold;}}" - "\n" - - /* style sheets */ - "{\\stylesheet{\\li720\\sa120 \\f20 \\sbasedon222\\snext0 Normal;}" - "{\\s2\\sb200\\sa120 \\b\\f3\\fs20 \\sbasedon0\\snext2 section head;}" - "{\\s3\\li180\\sa120 \\b\\f20 \\sbasedon0\\snext3 subsection head;}" - "{\\s4\\fi-1440\\li2160\\sa240\\tx2160 \\f20 \\sbasedon0\\snext4 detailed list;}}" - "\n" - -/* more header to come--do undefined values default to nice values? */ - ); - I=0; - break; - case ENDDOC: - /* header and footer wanted? */ - printf("\\par{\\f150 %s,\n%s}", PROVENANCE, HOME); - printf("}\n"); - break; - case BEGINBODY: - printf("\n\n"); - break; - case ENDBODY: - CurLine++; - printf("\\par\n"); - tagc=0; - break; - - case BEGINCOMMENT: fcharout=0; break; - case ENDCOMMENT: fcharout=1; break; - case COMMENTLINE: break; - - case BEGINSECTION: break; - case ENDSECTION: printf("\n\\par\n"); break; - case BEGINSECTHEAD: printf("{\\s2 "); tagc=0; break; - case ENDSECTHEAD: - printf("}\\par"); - /* useful extraction from files, environment? */ - printf("\n"); - break; - case BEGINSUBSECTHEAD:printf("{\\s3 "); break; - case ENDSUBSECTHEAD: - printf("}\\par\n"); - break; - case BEGINSUBSECTION: break; - case ENDSUBSECTION: break; - case BEGINLINE: /*if (ncnt) printf("\n\n");*/ break; - case ENDLINE: I=0; putchar(' '); /*putchar('\n'); CurLine++;*/ break; - case SHORTLINE: if (!fIP) printf("\\line\n"); break; - case BEGINBULPAIR: printf("{\\s4 "); break; - case ENDBULPAIR: printf("}\\par\n"); break; - case BEGINBULLET: break; - case ENDBULLET: printf("\\tab "); fcharout=0; break; - case BEGINBULTXT: fcharout=1; break; - case ENDBULTXT: break; - - case CHARLQUOTE: printf("``"); break; - case CHARRQUOTE: printf("''"); break; - case CHARLSQUOTE: - case CHARRSQUOTE: - case CHARPERIOD: - case CHARTAB: - case CHARDASH: - case CHARBACKSLASH: - case CHARGT: - case CHARLT: - case CHARHAT: - case CHARVBAR: - case CHARAMP: - case CHARNBSP: - case CHARCENT: - case CHARSECT: - case CHARCOPYR: - case CHARNOT: - case CHARREGTM: - case CHARDEG: - case CHARACUTE: - case CHAR14: - case CHAR12: - case CHAR34: - case CHARMUL: - case CHARDIV: - putchar(cmd); break; - case CHARBULLET: printf("\\bullet "); break; - case CHARDAGGER: printf("\\dag "); break; - case CHARPLUSMINUS: printf("\\pm "); break; - - case BEGINCODE: - case BEGINBOLD: printf("{\\b "); break; - case BEGINSC: printf("{\\fs20 "); break; - case BEGINITALICS: printf("{\\i "); break; - case BEGINBOLDITALICS:printf("{\\b \\i "); break; - case BEGINMANREF: printf("{\\f22 "); break; - case ENDBOLD: - case ENDCODE: - case ENDSC: - case ENDITALICS: - case ENDBOLDITALICS: - case ENDMANREF: - putchar('}'); - break; - case HR: printf("\n%s\n", horizontalrule); break; - - case BEGINY: case ENDY: - case BEGINHEADER: case ENDHEADER: - case BEGINFOOTER: case ENDFOOTER: - case BEGINTABLE: case ENDTABLE: - case BEGINTABLELINE: case ENDTABLELINE: case BEGINTABLEENTRY: case ENDTABLEENTRY: - case BEGININDENT: case ENDINDENT: - case FONTSIZE: - case CHANGEBAR: - /* nothing */ - break; - default: - DefaultPara(cmd); - } -} - - - -/* - * pointers to existing tools - */ - -void -PostScript(enum command cmd) { - fprintf(stderr, "Use groff or psroff to generate PostScript.\n"); - exit(1); -} - - -void -FrameMaker(enum command cmd) { - fprintf(stderr, "FrameMaker comes with filters that convert from roff to MIF.\n"); - exit(1); -} - - - - -/* - * Utilities common to both parses - */ - - -/* - level 0: DOC - need match - level 1: SECTION - need match - level 2: SUBSECTION | BODY | BULLETPAIR - level 3: BODY (within SUB) | BULLETPAIR (within SUB) | BULTXT (within BULLETPAIR) - level 4: BULTXT (within BULLETPAIR within SUBSECTION) - - never see: SECTHEAD, SUBSECTHEAD, BULLET -*/ - -int Psect=0, Psub=0, Pbp=0, Pbt=0, Pb=0, Pbul=0; - -void -pop(enum command cmd) { - assert(cmd==ENDINDENT || cmd==BEGINBULLET || cmd==BEGINBULTXT || cmd==BEGINBULPAIR || cmd==BEGINBODY || cmd==BEGINSECTION || cmd==BEGINSUBSECTION || cmd==ENDDOC); -/* - int i; - int p; - int match; - - p=cmdp-1; - for (i=cmdp-1;i>=0; i--) - if (cmd==cmdstack[i]) { match=i; break; } -*/ - - /* if match, pop off all up to and including match */ - /* otherwise, pop off one level*/ - - if (Pbul) { - (*fn)(ENDBULLET); Pbul=0; - if (cmd==BEGINBULLET) return; - } /* else close off ENDBULTXT */ - - if (Pbt) { (*fn)(ENDBULTXT); Pbt=0; } - if (cmd==BEGINBULTXT || cmd==BEGINBULLET) return; - - if (Pb && cmd==BEGINBULPAIR) { (*fn)(ENDBODY); Pb=0; } /* special */ - if (Pbp) { (*fn)(ENDBULPAIR); Pbp=0; } - if (cmd==BEGINBULPAIR || cmd==ENDINDENT) return; - - if (Pb) { (*fn)(ENDBODY); Pb=0; } - if (cmd==BEGINBODY) return; - - if (Psub) { (*fn)(ENDSUBSECTION); Psub=0; } - if (cmd==BEGINSUBSECTION) return; - - if (Psect) { (*fn)(ENDSECTION); Psect=0; } - if (cmd==BEGINSECTION) return; -} - - -void -poppush(enum command cmd) { - assert(cmd==ENDINDENT || cmd==BEGINBULLET || cmd==BEGINBULTXT || cmd==BEGINBULPAIR || cmd==BEGINBODY || cmd==BEGINSECTION || cmd==BEGINSUBSECTION); - - pop(cmd); - - switch (cmd) { - case BEGINBULLET: Pbul=1; break; - case BEGINBULTXT: Pbt=1; break; - case BEGINBULPAIR: Pbp=1; break; - case BEGINBODY: Pb=1; break; - case BEGINSECTION: Psect=1; break; - case BEGINSUBSECTION: Psub=1; break; - default: - if (!fQuiet) fprintf(stderr, "poppush: unrecognized code %d\n", cmd); - } - - (*fn)(cmd); - prevcmd = cmd; -} - - - -/* - * PREFORMATTED PAGES PARSING - */ - -/* wrapper for getchar() that expands tabs, and sends maximum of n=40 consecutive spaces */ - -int -getchartab(void) { - static int tabexp = 0; - static int charinline = 0; - static int cspccnt = 0; - char c; - - c = lookahead; - if (tabexp) tabexp--; - else if (c=='\n') { - charinline=0; - cspccnt=0; - } else if (c=='\t') { - tabexp = TabStops-(charinline%TabStops); if (tabexp==TabStops) tabexp=0; - lookahead = c = ' '; - } else if (cspccnt>=40) { - if (*in==' ') { - while (*in==' '||*in=='\t') in++; - in--; - } - cspccnt=0; - } - - if (!tabexp && lookahead) lookahead = *in++; - if (c=='\b') charinline--; else charinline++; - if (c==' ') cspccnt++; - return c; -} - - -/* replace gets. handles hyphenation too */ -char * -la_gets(char *buf) { - static char la_buf[MAXBUF]; /* can lookahead a full line, but nobody does now */ - static int fla=0, hy=0; - char *ret,*p; - int c,i; - - assert(buf!=NULL); - - if (fla) { - /* could avoid copying if callers used return value */ - strcpy(buf,la_buf); fla=0; - ret=buf; /* correct? */ - } else { - /*ret=gets(buf); -- gets is deprecated (since it can read too much?) */ - /* could do this... - ret=fgets(buf, MAXBUF, stdin); - buf[strlen(buf)-1]='\0'; - ... but don't want to have to rescan line with strlen, so... */ - - i=0; p=buf; - - /* recover spaces if re-linebreaking */ - for (; hy; hy--) { *p++=' '; i++; } - - while (lookahead && (c=getchartab())!='\n' && ibuf && p[-1]=='-' && isspace(lookahead)) { - p--; /* zap hyphen */ - /* zap boldfaced hyphens, gr! */ - while (p[-1]=='\b' && p[-2]=='-') p-=2; - - /* start getting next line, spaces first ... */ - while (lookahead && isspace(lookahead) && lookahead!='\n') { getchartab(); hy++; } - - /* ... append next nonspace string to previous ... */ - while (lookahead && !isspace(lookahead) && i++=3 spaces) */ -int phraselen; - -void -filterline(char *buf, char *plain) { - char *p,*q,*r; - char *ph; - int iq; - int i,j; - int hl=-1, hl2=-1; - int iscnt=0; /* interword space count */ - int tagci; - int I0; - int etype; - int efirst; - enum tagtype tag = NOTAG; - int esccode; - - assert(buf!=NULL && plain!=NULL); - - etype=NOTAG; - efirst=-1; - tagci=tagc; - ph=phrase; phraselen=0; - scnt=scnt2=0; - s_sum=s_cnt=0; - bs_sum=bs_cnt=0; - ccnt=0; - spcsqz=0; - - /* strip only certain \x1b's and only at very beginning of line */ - for (p=buf; *p=='\x1b' && (p[1]=='8'||p[1]=='9'); p+=2) - /* nop */; - - strcpy(plain,p); - q=&plain[strlen(p)]; - - /*** spaces and change bars ***/ - for (scnt=0,p=plain; *p==' '; p++) scnt++; /* initial space count */ - if (scnt>200) scnt=130-(q-p); - - assert(*q=='\0'); - q--; - if (fChangeleft) - for (; q-40>plain && *q=='|'; q--) { /* change bars */ - if (fChangeleft!=-1) ccnt++; - while (q-2>=plain && q[-1]=='\b' && q[-2]=='|') q-=2; /* boldface changebars! */ - } - - /*if (q!=&plain[scnt-1])*/ /* zap trailing spaces */ - for (; *q==' ' && q>plain; q--) /* nop */; - - /* second changebar way out east! HACK HACK HACK */ - if (q-plain>100 && *q=='|') { - while (*q=='|' && q>plain) { q--; if (fChangeleft!=-1) ccnt++; } - while ((*q==' ' || *q=='_' || *q=='-') && q>plain) q--; - } - - for (r=q; (*r&0xff)==CHARDAGGER; r--) *r='-'; /* convert daggers at end of line to hyphens */ - - if (q-plain < scnt) scnt = q-plain+1; - q[1]='\0'; - - /* set I for tags below */ - if (indent>=0 && scnt>=indent) scnt-=indent; - if (!fPara && !fIQS) { - if (fChangeleft) I+=(scnt>ccnt)?scnt:ccnt; - else I+=scnt; - } - I0=I; - - /*** tags and filler spaces ***/ - - iq=0; falluc=1; - for (q=plain; *p; p++) { - - iscnt=0; - if (*p==' ') { - for (r=p; *r==' '; r++) { iscnt++; spcsqz++; } - s_sum+=iscnt; s_cnt++; - if (iscnt>1 && !scnt2 && *p==' ') scnt2=iscnt; - if (iscnt>2) { bs_cnt++; bs_sum+=iscnt; } /* keep track of large gaps */ - iscnt--; /* leave last space for tail portion of loop */ - - /* write out spaces */ - if (fQS && iscnt<3) { p=r-1; iscnt=0; } /* reduce strings of <3 spaces to 1 */ - /* else if (fQS && iscnt>=3) { replace with tab? } */ - else { - for (i=0; iplain && q[-1]=='+') { - /* bold plus/minus(!) */ - q[-1]=c_plusminus; - while (*p=='\b' && p[1]=='_') p+=2; - continue; - } else if ((*p=='_' && p[1]=='\b' && p[2]!='_' && p[3]!='\b') - || (*p=='\b' && p[1]=='_')) { - /* italics */ - if (tag!=ITALICS && hl>=0) { tagadd(tag, hl, I+iq); hl=-1; } - if (hl==-1) hl=I+iq; - tag=ITALICS; - p+=2; - } else if (*p=='_' && p[2]==p[4] && p[1]=='\b' && p[3]=='\b' && p[2]!='_') { - /* bold italics (for Solaris) */ - for (p+=2; *p==p[2] && p[1]=='\b';) p+=2; - if (tag!=BOLDITALICS && hl>=0) { tagadd(tag, hl, I+iq); hl=-1; } - if (hl==-1) hl=I+iq; - tag=BOLDITALICS; - } else if (*p==p[2] && p[1]=='\b') { - /* boldface */ - while (*p==p[2] && p[1]=='\b') p+=2; - if (tag!=BOLD && hl>=0) { tagadd(tag, hl, I+iq); hl=-1; } - if (hl==-1) hl=I+iq; - tag=BOLD; - } else if (p[1]=='\b' && - ((*p=='o' && p[2]=='+') || - (*p=='+' && p[2]=='o')) ) { - /* bullets */ - p+=2; - while (p[1]=='\b' && (*p=='o' || p[2]=='+') ) p+=2; /* bold bullets(!) */ - *q++=c_bullet; iq++; - continue; - } else if (*p=='\b' && p>plain && p[-1]=='o' && p[1]=='+') { - /* OSF bullets */ - while (*p=='\b' && p[1]=='+') p+=2; /* bold bullets(!) */ - q[-1]=c_bullet; p--; - continue; - } else if (p[1]=='\b' && *p=='+' && p[2]=='_') { - /* plus/minus */ - p+=2; - *q++=c_plusminus; iq++; - continue; - } else if (p[1]=='\b' && *p=='|' && p[2]=='-') { - /* dagger */ - *q++=c_dagger; iq++; - p+=2; continue; - } else if (*p=='\b') { - /* supress unattended backspaces */ - continue; - } else if (*p=='\x1b') { - p++; - if (*p=='[' && isdigit(p[1])) { /* 0/1/22/24/.../8/9/... */ - esccode=0; for (p++; isdigit(*p); p++) esccode = esccode * 10 + *p - '0'; - - if (efirst>=0 /*&& (esccode==0 || esccode==1 || esccode==4 || esccode==22 || esccode==24) /*&& hl>=0 && hl2==-1 && tags[MAXTAGS].first=0 || isupper(p[1]) || (p[1]=='_' && p[2]!='\b') || p[1]=='&')) { - if (hl==-1 && efirst==-1) { hl=I+iq; tag=SMALLCAPS; } - } else { - /* end of tag, one way or another */ - /* collect tags in this pass, interspersed later if need be */ - /* can't handle overlapping tags */ - if (hl>=0) { - if (hl2==-1) tagadd(tag, hl, I+iq); - hl=-1; - } - } - - /** non-backspace related filtering **/ - /* case statement here in place of if chain? */ -/* Tk 3.x's text widget tabs too crazy - if (*p==' ' && strncmp(" ",p,5)==0) { - xputchar('\t'); i+=5-1; ci++; continue; - } else -*/ -/* copyright symbol: too much work for so little - if (p[i]=='o' && (strncmp("opyright (C) 19",&p[i],15)==0 - || strncmp("opyright (c) 19",&p[i],15)==0)) { - printf("opyright \xd3 19"); - tagadd(SYMBOL, ci+9, ci+10); - i+=15-1; ci+=13; continue; - } else -*/ - if (*p=='(' && q>plain && (isalnum(q[-1])||strchr(manvalid/*"._-+"*/,q[-1])!=NULL) - && strcoloncmp(&p[1],')',vollist) - /* && p[1]!='s' && p[-1]!='`' && p[-1]!='\'' && p[-1]!='"'*/ ) { - hl2=I+iq; - for (r=q-1; r>=plain && (isalnum(*r)||strchr(manvalid/*"._-+:"*/,*r)!=NULL); r--) - hl2--; - /* else ref to a function? */ - /* maybe save position of opening paren so don't highlight it later */ - } else if (*p==')' && hl2!=-1) { - /* don't overlap tags on man page references */ - while (tagc>0 && tags[tagc-1].last>hl2) tagc--; - tagadd(MANREF, hl2, I+iq+1); - hl2=hl=-1; - } else if (hl2!=-1) { - /* section names are alphanumic or '+' for C++ */ - if (!isalnum(*p) && *p!='+') hl2=-1; - } - - - /*assert(*p!='\0');*/ - if (!*p) break; /* not just safety check -- check out sgmls.1 */ - - *q++=*p; -/* falluc = falluc && (isupper(*p) || isspace(*p) || isdigit(*p) || strchr("-+&_'/()?!.,;",*p)!=NULL);*/ - falluc = falluc && !islower(*p); - if (!scnt2) { *ph++=*p; phraselen++; } - iq+=iscnt+1; - } - if (hl>=0) tagadd(tag, hl, I+iq); - else if (efirst>=0) tagadd(etype, efirst, I+iq); - *q=*ph='\0'; - linelen=iq+ccnt; - - - /* special case for Solaris: - if line has ONLY tags AND they SPAN line, convert to one tag */ - fCodeline=0; - if (tagc && tags[0].first==0 && tags[tagc-1].last==linelen) { - fCodeline=1; - j=0; - /* invariant: at start of a tag */ - for (i=0; fCodeline && iNOTAG && tags[i].type<=MANREF); - assert(tags[i].first>=I0 && tags[i].last<=linelen+I0); - assert(tags[i].first<=tags[i].last); - - /* verify for no overlap with other tags */ - for (j=i+1; j=tags[j].last*/); - } - } -} - - -/* - buf[] == input text (read only) - plain[] == output (initial, trailing spaces stripped; tabs=>spaces; - underlines, overstrikes => tag array; spaces squeezed, if requested) - ccnt = count of changebars - scnt = count of initial spaces - linelen = length result in plain[] -*/ - -int fHead=0; -int fFoot=0; - -void -preformatted_filter(void) { - const int MINRM=50; /* minimum column for right margin */ - const int MINMID=20; - const int HEADFOOTSKIP=20; - const int HEADFOOTMAX=25; - int curtag; - char *p,*r; - char head[MAXBUF]=""; /* first "word" */ - char foot[MAXBUF]=""; - int header_m=0, footer_m=0; - int headlen=0, footlen=0; -/* int line=1-1; */ - int i,j,k,l,off; - int sect=0,subsect=0,bulpair=0,osubsect=0; - int title=1; - int oscnt=-1; - int empty=0,oempty; - int fcont=0; - int Pnew=0,I0; - float s_avg=0.0; - int spaceout; - int skiplines=0; - int c; - - /* try to keep tabeginend[][] in parallel with enum tagtype */ - assert(tagbeginend[ITALICS][0]==BEGINITALICS); - assert(tagbeginend[MANREF][1]==ENDMANREF); - in++; /* lookahead = current character, in points to following */ - - /* for (i=0; i=2 && bs_cnt<=5 && ((float) bs_sum / (float) bs_cnt)>3.0)); - if (finTable) { - if (!fotable) (*fn)(BEGINTABLE); - } else if (fotable) { - (*fn)(ENDTABLE); - I=I0; tagc=0; filterline(buf,plain); /* rescan first line out of table */ - } -#endif - - s_avg=(float) s_sum; - if (s_cnt>=2) { - /* don't count large second space gap */ - if (scnt2) s_avg= (float) (s_sum - scnt2) / (float) (s_cnt-1); - else s_avg= (float) (s_sum) / (float) (s_cnt); - } - - p=plain; /* points to current character in plain */ - - /*** determine header and global indentation ***/ - if (/*fMan && (*/!fHead || indent==-1/*)*/) { - if (!linelen) continue; - if (!*header) { - /* check for missing first header--but this doesn't catch subsequent pages */ - if (stricmp(p,"NAME")==0 || stricmp(p,"NOMBRE")==0) { /* works because line already filtered */ - indent=scnt; /*filterline(buf,plain);*/ scnt=0; I=I0; fHead=1; - } else { - fHead=1; - (*fn)(BEGINHEADER); - /* grab header and its first word */ - strcpy(header,p); - if ((header_m=HEADFOOTSKIP)>linelen) header_m=0; - strcpy(head,phrase); headlen=phraselen; - la_gets(buf); filterline(buf,plain); - if (linelen) { - strcpy(header2,plain); - if (strincmp(plain,"Digital",7)==0 || strincmp(plain,"OSF",3)==0) { - fFoot=1; - fSubsections=0; - } - } - (*fn)(ENDHEADER); tagc=0; - continue; - } - } else { - /* some idiot pages have a *third* header line, possibly after a null line */ - if (*header && scnt>MINMID) { strcpy(header3,p); ncnt=0; continue; } - /* indent of first line ("NAME") after header sets global indent */ - /* check '<' for Plan 9(?) */ - if (*p!='<') { - indent=scnt; I=I0; scnt=0; - } else continue; - } -/* if (indent==-1) continue;*/ - } - if (!lindent && scnt) lindent=scnt; -/*printf("lindent = %d, scnt=%d\n", lindent,scnt);*/ - - - /**** for each ordinary line... *****/ - - /*** skip over global indentation */ - oempty=empty; empty=(linelen==0); - if (empty) {ncnt++; continue;} - - /*** strip out per-page titles ***/ - - if (/*fMan && (*/scnt==0 || scnt>MINMID/*)*/) { -/*printf("***ncnt = %d, fFoot = %d, line = %d***", ncnt,fFoot,AbsLine);*/ - if (!fFoot && !isspace(*p) && (scnt>5 || (*p!='-' && *p!='_')) && - /* don't add ncnt -- AbsLine gets absolute line number */ - (((ncnt>=2 && AbsLine/*+ncnt*/>=61/*was 58*/ && AbsLine/*+ncnt*/<70) - || (ncnt>=4 && AbsLine/*+ncnt*/>=59 && AbsLine/*+ncnt*/<74) - || (ncnt && AbsLine/*+ncnt*/>=61 && AbsLine/*+ncnt*/<=66)) - && (/*lookahead!=' ' ||*/ (s_cnt>=1 && s_avg>1.1) || !falluc) ) - ) { - (*fn)(BEGINFOOTER); - /* grab footer and its first word */ - strcpy(footer,p); -/* if ((footer_m=linelen-HEADFOOTSKIP)<0) footer_m=0;*/ - if ((footer_m=HEADFOOTSKIP)>linelen) footer_m=0; - /*grabphrase(p);*/ strcpy(foot,phrase); footlen=phraselen; - /* permit variations at end, as for SGI "Page N", but keep minimum length */ - if (footlen>3) footlen--; - la_gets(buf); filterline(buf,plain); if (linelen) strcpy(footer2,plain); - title=1; - (*fn)(ENDFOOTER); tagc=0; - - /* if no header on first page, try again after first footer */ - if (!fFoot && *header=='\0') fHead=0; /* this is dangerous */ - fFoot=1; - continue; - } else - /* a lot of work, but only for a few lines (about 4%) */ - if (fFoot && (scnt==0 || scnt+indent>MINMID) && - ( (headlen && strncmp(head,p,headlen)==0) - || strcmp(header2,p)==0 || strcmp(header3,p)==0 - || (footlen && strncmp(foot,p,footlen)==0) - || strcmp(footer2,p)==0 - /* try to recognize lines with dates and page numbers */ - /* skip into line */ - || (header_m && header_mnew paragraph, line mode=>blank lines */ - /* need to chop up lines for Roff */ - - /*tabgram[scnt]++;*/ - if (title) ncnt=(scnt!=oscnt || (/*scnt<4 &&*/ isupper(*p))); - itabcnt = scnt/5; - if (CurLine==1) {ncnt=0; tagc=0;} /* gobble all newlines before first text line */ - sect = (scnt==0 && isupper(*p)); - subsect = (fSubsections && (scnt==2||scnt==3)); - if ((sect || subsect) && ncnt>1) ncnt=1; /* single blank line between sections */ - (*fn)(BEGINLINE); - if (/*fPara &&*/ ncnt) Pnew=1; - title=0; /*ncnt=0;--moved down*/ - /*if (finTable) (*fn)(BEGINTABLELINE);*/ - oscnt=scnt; /*fotable=finTable;*/ - -/* let output modules decide what to do at the start of a paragraph - if (fPara && !Pnew && (prevcmd==BEGINBODY || prevcmd==BEGINBULTXT)) { - putchar(' '); I++; - } -*/ - - /*** identify structural sections and notify fn */ - - /*if (fMan) {*/ -/* bulpair = (scnt<7 && (*p==c_bullet || *p=='-'));*/ - /* decode the below */ - bulpair = ((!auxindent || scnt!=lindent+auxindent) /*!bulpair*/ - && ((scnt>=2 && scnt2>5) || scnt>=5 || (tagc>0 && tags[0].first==scnt) ) /* scnt>=2?? */ - && (((*p==c_bullet || strchr("-+.",*p)!=NULL || falluc) && (ncnt || scnt2>4)) || - (scnt2-s_avg>=2 && phrase[phraselen-1]!='.') || - (scnt2>3 && s_cnt==1) - )); - if (bulpair) { - if (tagc>0 && tags[0].first==scnt) { - k=tags[0].last; - for (l=1; l=5 && kccnt)?(scnt-ccnt):0; - if (fILQS) { if (spaceout>=lindent) spaceout-=lindent; else spaceout=0; } - if (auxindent) { if (spaceout>=auxindent) spaceout-=auxindent; else spaceout=0; } - if (fNORM) { - if (itabcnt>0) (*fn)(ITAB); - for (i=0; i<(scnt%5); i++) putchar(' '); - } else printf("%*s",spaceout,""); - } - - - /*** iterate over each character in line, ***/ - /*** handling underlining, tabbing, copyrights ***/ - - off=(!fIQS&&!fPara)?scnt:0; - for (i=0, p=plain, curtag=0, fcont=0; *p; p++,i++,fcont=0) { - /* interspersed presentation signals */ - /* start tags in reverse order of addition (so structural first) */ - if (curtag \-opt */ - if (p==plain || (isspace(p[-1]) && !isspace(p[1]))) { - (*fn)(CHARDASH); fcont=1; - } - break; - } - - /* troublemaker characters */ - c = (*p)&0xff; - if (!fcont && fcharout) { - if (strchr(escchars,c)!=NULL) { - putchar('\\'); putchar(c); I++; - } else if (strchr(trouble,c)!=NULL) { - (*fn)(c); fcont=1; - } else { - putchar(c); I++; - } - } - -/*default:*/ - if (curtag */ - falluc = falluc && !islower(*in); - *p++ = *in++; - } - if (*in) in++; - *p='\0'; - - /* normalize commands */ - p=tmpbuf; q=buf; /* copy from tmpbuf to buf */ - /* no spaces between command-initiating period and command letters */ - if (*p=='\'') { *p='.'; } /* what's the difference? */ - if (*p=='.') { *q++ = *p++; while (isspace(*p)) p++; } - - - /* convert lines with tabs to tables? */ - fsourceTab=0; - - /* if comment at start of line, OK */ - /* dynamically determine iff Tcl/Tk page by scanning comments */ - if (*p=='\\' && *(p+1)=='"') { - if (!fTclTk && strstr(p+1,"supplemental macros used in Tcl/Tk")!=NULL) fTclTk=1; - p+=2; - } - - while (*p) { - if (*p=='\t') fsourceTab++; - if (*p=='\\') { - p++; - if (*p=='n') { - p++; - if (*p=='(') { - p++; name[0]=*p++; name[1]=*p++; name[2]='\0'; - } else { - name[0]=*p++; name[1]='\0'; - } - *q='0'; *(q+1)='\0'; /* defaults to 0, in case doesn't exist */ - for (i=0; ibuf && isspace(*q)) q--; /* trim tailing whitespace */ - q++; *q='\0'; - } else { - /* verbatim character (often a backslash) */ - *q++ = '\\'; /* postpone interpretation (not the right thing but...) */ - *q++ = *p++; - } - } else *q++ = *p++; - } - - /* dumb Digital--later */ - /*if (q-3>plain && q[-1]=='{' && q[-2]=='\\' && q[-3]==' ') q[-3]='\n';*/ - - /* close off buf */ - *q='\0'; - - /*if (q>buf && q[-1]=='\\' && *in=='.') { /* append next line * /} else break;*/ - break; - } - - /*printf("*ret = |%s|\n", ret!=NULL?ret : "NULL");*/ - return ret; -} - - -/* dump characters from buffer, signalling right tags along the way */ -/* all this work to introduce an internal second pass to recognize man page references */ -/* now for HTTP references too */ - -int sI=0; -/* use int linelen from up top */ -int fFlush=1; - -void -source_flush(void) { - int i,j; - char *p,*q,*r; - int c; - int manoff,posn; - - if (!sI) return; - plain[sI] = '\0'; - - /* flush called often enough that all man page references are at end of text to be flushed */ - /* find man page ref */ - if (sI>=4/*+1*/ && (plain[sI-(manoff=1)-1]==')' || plain[sI-(manoff=0)-1]==')')) { - for (q=&plain[sI-manoff-1-1]; q>plain && isalnum(*q) && *q!='('; q--) /* nada */; - if (*q=='(' && strcoloncmp(&q[1],')',vollist)) { - r=q-1; - if (*r==' ' && (sectheadid==SEEALSO || /*single letter volume */ *(q+2)==')' || *(q+3)==')')) r--; /* permitted single intervening space */ - for ( ; r>=plain && (isalnum(*r) || strchr(manvalid,*r)!=NULL); r--) /* nada */; - r++; - if (isalpha(*r) && r= posn) tagc--;*/ - - /* add MANREF tags */ - strcpy(hitxt,r); - tagadd(BEGINMANREF, posn, 0); - /* already generated other start tags, so move BEGINMANREF to start in order to be well nested (ugh) */ - tagtmp = tags[tagc-1]; for (j=tagc-1; j>0; j--) tags[j]=tags[j-1]; tags[0]=tagtmp; - tagadd(ENDMANREF, sI-manoff-1+1, 0); - } - } - - /* HTML hyperlinks */ - } else if (fURL && sI>=4 && (p=strstr(plain,"http"))!=NULL) { - i = p-plain; - tagadd(BEGINMANREF, i, 0); tagtmp = tags[tagc-1]; for (j=tagc-1; j>0; j--) tags[j]=tags[j-1]; tags[0]=tagtmp; - for (j=0; i=LINEBREAK && c==' ') { (*fn)(ENDLINE); linelen=0; - } else { /* normal character */ - xputchar(c); - if (fcharout) linelen++; - } - - /*if (linelen>=LINEBREAK && c==' ') { (*fn)(ENDLINE); linelen=0; } -- leaves space at end of line*/ - } - /* dump tags at end */ - /*for ( ; j program code */ - styles[++style] = BOLDITALICS; - stagadd(BEGINBOLDITALICS); - break; - case '1': case '0': case 'R': case 'P': /* back to Roman */ - /*sputchar(' '); -- taken out; not needed, I hope */ - funwind=1; - break; - case '-': - p++; - break; - } - break; - case '(': /* multicharacter macros */ - p++; - for (i=0; i can't because next line might start with a command */ - supresseol=1; - p++; - break; - case '-': /* minus sign */ - sputchar(CHARDASH); - p++; - break; - /*----------------------- - } else if (*p=='^') { - /* end stylings? (found in Solaris) * / - p++; - -------------------*/ - default: /* unknown escaped character */ - sputchar(*p++); - } - - } else { /* normal character */ - if (*p) sputchar(*p++); - } - - - /* unwind character formatting stack */ - if (funwind) { - for ( ; style>=0; style--) { - if (styles[style]==BOLD) stagadd(ENDBOLD); - else if (styles[style]==ITALICS) stagadd(ENDITALICS); - else stagadd(ENDBOLDITALICS); - } /* else error */ - assert(style==-1); - - funwind=0; - } - - /* check for man page reference and flush buffer if safe */ - /* postpone check until after following character so catch closing tags */ - if ((sI>=4+1 && plain[sI-1-1]==')') || - /* (plain[sI-1]==' ' && (q=strchr(plain,' '))!=NULL && q<&plain[sI-1])) {*/ - (plain[sI-1]==' ' && !isalnum(plain[sI-1-1]))) { - /* regardless, flush buffer */ - source_flush(); - } - } - - if (*p && *p!=' ') p++; /* skip over end character */ - return p; -} - -/* oh, for function overloading. inlined by compiler, probably */ -char *source_out(char *p) { - return source_out0(p,'\0'); -} - - -char * -source_out_word(char *p) { - char end = ' '; - - while (*p && isspace(*p)) p++; - if (*p=='"' /* || *p=='`' ? */) { - end = *p; - p++; - } - p = source_out0(p,end); - /*while (*p && isspace(*p)) p++;*/ - return p; -} - - -void -source_struct(enum command cmd) { - source_out("\\fR\\s0"); /* don't let run-on stylings run past structural units */ - source_flush(); - if (cmd==SHORTLINE) linelen=0; - (*fn)(cmd); -} - -#define checkcmd(str) strcmp(cmd,str)==0 - -int finnf=0; - -void source_line(char *p); -void -source_subfile(char *newin) { - char *p; - char *oldin = in; - - sublevel++; - - in = newin; - while ((p=source_gets())!=NULL) { - source_line(p); - } - in = oldin; - - sublevel--; -} - -/* have to delay acquisition of list tag */ -void -source_list(void) { - static int oldlisttype; /* OK to have just one because nested lists done with RS/RE */ - char *q; - int i; - - /* guard against empty bullet */ - for (i=0, q=plain; i or other comment closer, but unlikely */ - - /* structural commands */ - } else if (checkcmd("TH")) { - /* sample: .TH CC 1 "Dec 1990" */ - /* overrides command line -- should fix this */ - if (!finitDoc) { - while (isspace(*p)) p++; - if (*p) { - /* name */ - q=strchr(p, ' '); if (q!=NULL) *q++='\0'; - strcpy(manName, p); - /* number */ - p = q; - if (p!=NULL) { - while (isspace(*p)) p++; - while (*p == '\"') p++; - if (*p) { q=strchr(p,' '); if (*(q-1) == '\"') *(q-1) = '\0'; - if (q!=NULL) *q++='\0'; } - } - strcpy(manSect, p!=NULL? p: "?"); - } - sI=0; - finitDoc=1; - (*fn)(BEGINDOC); - /* emit information in .TH line? */ - } /* else complain about multiple definitions? */ - - } else if (checkcmd("SH") || checkcmd("Sh")) { /* section title */ - while (indent) { source_command("RE"); } - source_flush(); - - pop(BEGINSECTION); /* before reset sectheadid */ - - if (*p) { - if (*p=='"') { p++; q=p; while (*q && *q!='"') q++; *q='\0'; } - finnf=0; - for (j=0; (sectheadid=j) leave to output format */ - /* HTML handles tables but not tabs, Tk's text tabs but not tables */ - /* does cause a linebreak */ - stagadd(BEGINBODY); - } else if (checkcmd("ce")) { - /* get line count, recursively filter for that many lines */ - if (sscanf(p, "%d", &i)) { - source_struct(BEGINCENTER); - for (; i>0 && (p=source_gets())!=NULL; i--) source_line(p); - source_struct(ENDCENTER); - } - - /* limited selection of control structures */ - } else if (checkcmd("if") || (checkcmd("ie"))) { /* if cmd, if command and else on next line */ - supresseol=1; - ie = checkcmd("ie"); - mylastif=lastif; - - if (*p=='!') { invcond=1; p++; } - - if (*p=='n') { cond=1; p++; } /* masquerading as nroff the right thing to do? */ - else if (*p=='t') { cond=0; p++; } - else if (*p=='(' || *p=='-' || *p=='+' || isdigit(*p)) { - if (*p=='(') p++; - nif0=atof(p); - if (*p=='-' || *p=='+') p++; while (isdigit(*p)) p++; - op = *p++; /* operator: =, >, < */ - if (op==' ') { - cond = (nif0!=0); - } else { - nif1=atoi(p); - while (isdigit(*p)) p++; - if (*p==')') p++; - if (op=='=') cond = (nif0==nif1); - else if (op=='<') cond = (nif0' -- ignore >=, <= */ cond = (nif0>nif1); - } - } else if (!isalpha(*p)) { /* usually quote, ^G in Digital UNIX */ - /* gobble up comparators between delimiters */ - delim = *p++; - q = if0; while (*p!=delim) { *q++=*p++; } *q='\0'; p++; - q = if1; while (*p!=delim) { *q++=*p++; } *q='\0'; p++; - cond = (strcmp(if0,if1)==0); - } else cond=0; /* a guess, seems to be right bettern than half the time */ - if (invcond) cond=1-cond; - while (isspace(*p)) p++; - - lastif = cond; - if (strncmp(p,"\\{",2)==0) { /* rather than handle groups here, have turn on/off output flag? */ - p+=2; while (isspace(*p)) p++; - while (strncmp(p,".\\}",3)!=0 || strncmp(p,"\\}",2)!=0 /*Solaris*/) { - if (cond) source_line(p); - if ((p=source_gets())==NULL) break; - } - } else if (cond) source_line(p); - - if (ie) source_line(source_gets()); /* do else part with prevailing lastif */ - - lastif=mylastif; - - } else if (checkcmd("el")) { - mylastif=lastif; - - /* should centralize gobbling of groups */ - cond = lastif = !lastif; - if (strncmp(p,"\\{",2)==0) { - p+=2; while (isspace(*p)) p++; - while (strncmp(p,".\\}",3)!=0 || strncmp(p,"\\}",2)!=0 /*Solaris*/) { - if (cond) source_line(p); - if ((p=source_gets())==NULL) break; - } - } else if (cond) source_line(p); - - lastif=mylastif; - - } else if (checkcmd("ig")) { /* "ignore group" */ - strcpy(endig,".."); if (*p) { endig[0]='.'; strcpy(&endig[1],p); } - while ((p=source_gets())!=NULL) { - if (strcmp(p,endig)==0) break; - if (!lastif) source_line(p); /* usually ignore line, except in one weird case */ - } - - - /* macros and substitutions */ - } else if (checkcmd("de")) { - /* grab key */ - q=p; while (*q && !isspace(*q)) q++; *q='\0'; - - /* if already have a macro of that name, override it */ - /* could use a good dictionary class */ - for (insertat=0; insertattblspanmax) tblspanmax=i;*/ - tbl[tblc++][i]=""; /* mark end */ - if (*p=='.') break; - } - tbli=0; - source_struct(BEGINTABLE); - - while ((p=source_gets())!=NULL) { - if (strncmp(p,".TE",3)==0) break; - if (*p=='.') { source_line(p); continue; } - - /* count number of entries on line. if >1, can use to set tableSep */ - insertat=0; for (j=0; *tbl[tbli][j]; j++) if (*tbl[tbli][j]!='s') insertat++; - if (!tableSep && insertat>1) if (fsourceTab) tableSep='\t'; else tableSep='@'; - source_struct(BEGINTABLELINE); - if (strcmp(p,"_")==0 || /* double line */ strcmp(p,"=")==0) { - source_out(" "); - /*stagadd(HR);*/ /* empty row -- need ROWSPAN for HTML */ - continue; - } - - for (i=0; *tbl[tbli][i] && *p; i++) { - tblcellspan=1; - tblcellformat = tbl[tbli][i]; - if (*tblcellformat=='^') { /* vertical span => blank entry */ - tblcellformat="l"; - } else if (*tblcellformat=='|') { - /* stagadd(VBAR); */ - continue; - } else if (strchr("lrcn", *tblcellformat)==NULL) { - tblcellformat="l"; - /*continue;*/ - } - - while (strncmp(tbl[tbli][i+1],"s",1)==0) { tblcellspan++; i++; } - - source_struct(BEGINTABLEENTRY); - if (toupper(tblcellformat[1])=='B') stagadd(BEGINBOLD); - else if (toupper(tblcellformat[1])=='I') stagadd(BEGINITALICS); - /* not supporting DEC's w() */ - - if (strcmp(p,"T{")==0) { /* DEC, HP */ - while (strncmp(p=source_gets(),"T}",2)!=0) source_line(p); - p+=2; if (*p) p++; - } else { - p = source_out0(p, tableSep); - } - if (toupper(tblcellformat[1])=='B') stagadd(ENDBOLD); - else if (toupper(tblcellformat[1])=='I') stagadd(ENDITALICS); - source_struct(ENDTABLEENTRY); - } - if (tbli+1 lines--on infinite scroll */ -} - - -void -source_line(char *p) { - /*stagadd(BEGINLINE);*/ - char *cmd=p; - if (p==NULL) return; /* bug somewhere else, but where? */ - - isComment = (/*checkcmd("") ||*/ checkcmd("\\\"") || /*DEC triple dot*/checkcmd("..")); - if (inComment && !isComment) { source_struct(ENDCOMMENT); inComment=0; } /* special case to handle transition */ - -#if 0 - if (*p!='.' && *p!='\'' && !finlist) { - if (fsourceTab && !fosourceTab) { - tblc=1; tbli=0; tableSep='\t'; - tbl[0][0]=tbl[0][1]=tbl[0][2]=tbl[0][3]=tbl[0][4]=tbl[0][5]=tbl[0][6]=tbl[0][7]=tbl[0][8]="l"; - source_struct(BEGINTABLE); finTable=1; - } else if (!fsourceTab && fosourceTab) { - source_struct(ENDTABLE); finTable=0; - } - fosourceTab=fsourceTab; - } -#endif - - if (*p=='.' /*|| *p=='\'' -- normalized */) { /* command == starts with "." */ - p++; - supresseol=1; - source_command(p); - - } else if (!*p) { /* blank line */ - /*source_command("P");*/ - ncnt=1; source_struct(BEGINLINE); ncnt=0; /* empty line => paragraph break */ - -#if 0 - } else if (fsourceTab && !finlist /* && pmode */) { /* can't handle tabs, so try tables */ - source_struct(BEGINTABLE); - tblcellformat = "l"; - do { - source_struct(BEGINTABLELINE); - while (*p) { - source_struct(BEGINTABLEENTRY); - p = source_out0(p, '\t'); - source_struct(ENDTABLEENTRY); - } - source_struct(ENDTABLELINE); - } while ((p=source_gets())!=NULL && fsourceTab); - source_struct(ENDTABLE); - source_line(p); -#endif - - } else { /* otherwise normal text */ - source_out(p); - if (finnf || isspace(*cmd)) source_struct(SHORTLINE); - } - - if (!supresseol && !finnf) { source_out(" "); if (finlist) source_list(); } - supresseol=0; - /*stagadd(ENDLINE);*/ -} - - -void -source_filter(void) { - char *p = in, *q; - char *oldv,*newv,*shiftp,*shiftq,*endq; - int lenp,lenq; - int i,on1,on2,nn1,nn2,first; - int insertcnt=0, deletecnt=0, insertcnt0; - int nextDiffLine=-1; - char diffcmd, tmpc, tmpendq; - - AbsLine=0; - - /* just count length of macro table! */ - for (i=0; macro[i].key!=NULL; i++) /*empty*/; - macrocnt = i; - - /* dumb Digital puts \\} closers on same line */ - for (p=in; (p=strstr(p," \\}"))!=NULL; p+=3) *p='\n'; - - sI=0; - /* (*fn)(BEGINDOC); -- done at .TH or first .SH */ - - - /* was: source_subfile(in); */ - while (fDiff && fgets(diffline, MAXBUF, difffd)!=NULL) { - /* requirements: no context lines, no errors in files, ... - change-command: 8a12,15 or 5,7c8,10 or 5,7d3 - < from-file-line - < from-file-line... - -- - > to-file-line - > to-file-line... - */ - for (q=diffline; ; q++) { diffcmd=*q; if (diffcmd=='a'||diffcmd=='c'||diffcmd=='d') break; } - if (sscanf(diffline, "%d,%d", &on1,&on2)==1) on2=on1-1+(diffcmd=='d'||diffcmd=='c'); - if (sscanf(++q, "%d,%d", &nn1,&nn2)==1) nn2=nn1-1+(diffcmd=='a'||diffcmd=='c'); - - deletecnt = on2-on1+1; - insertcnt = nn2-nn1+1; - - nextDiffLine = nn1; - /*assert(nextDiffLine>=AbsLine); -- can happen if inside a macro? */ - if (nextDiffLine */ - do { - p = oldv = fgets(diffline, MAXBUF, difffd); - p[strlen(p)-1]='\0'; /* fgets's \n ending => \0 */ - deletecnt--; - } while (deletecnt && *p=='.'); /* throw out commands in old version */ - - q = newv = source_gets(); - insertcnt--; - while (insertcnt && *q=='.') { - source_line(q); - insertcnt--; - } - - if (*p=='.' || *q=='.') break; - - - /* make larger chunk for better diff -- but still keep away from commands */ - lenp=strlen(p); lenq=strlen(q); - while (deletecnt && MAXBUF-lenq>80*2) { - fgetc(difffd); fgetc(difffd); /* skip '<' */ - if (ungetc(fgetc(difffd),difffd)=='.') break; - p=&diffline[lenp]; *p++=' '; lenp++; - fgets(p, MAXBUF-lenp, difffd); p[strlen(p)-1]='\0'; lenp+=strlen(p); - deletecnt--; - } - - while (insertcnt && *in!='.' && MAXBUF-lenq>80*2) { - if (newv!=diffline2) { strcpy(diffline2,q); newv=diffline2; } - q=source_gets(); diffline2[lenq]=' '; lenq++; - strcpy(&diffline2[lenq],q); lenq+=strlen(q); - insertcnt--; - } - - /* common endings */ - p = &p[strlen(oldv)]; q=&q[strlen(newv)]; - while (p>oldv && q>newv && p[-1]==q[-1]) { p--; q--; } - if ((p>oldv && p[-1]=='\\') || (q>newv && q[-1]=='\\')) - while (*p && *q && !isspace(*p)) { p++; q++; } /* steer clear of escapes */ - tmpendq=*q; *p=*q='\0'; endq=q; - - p=oldv; q=newv; - while (*p && *q) { - /* common starts */ - newv=q; while (*p && *q && *p==*q) { p++; q++; } - if (q>newv) { - tmpc=*q; *q='\0'; source_line(newv); *q=tmpc; - } - - /* too hard to read */ - /* difference: try to find hunk of p in remainder of q */ - if (strlen(p)<15 || (shiftp=strchr(&p[15],' ') /*|| shiftp-p>30*/)==NULL) break; - shiftp++; /* include the space */ - tmpc=*shiftp; *shiftp='\0'; shiftq=strstr(q,p); *shiftp=tmpc; /* includes space */ - if (shiftq!=NULL) { - /* call that part of q inserted */ - tmpc=*shiftq; *shiftq='\0'; - stagadd(BEGINDIFFA); source_line(q); stagadd(ENDDIFFA); source_line(" "); - *shiftq=tmpc; q=shiftq; - } else { - /* call that part of p deleted */ - shiftp--; *shiftp='\0'; /* squash the trailing space */ - stagadd(BEGINDIFFD); source_line(p); stagadd(ENDDIFFD); source_line(" "); - p=shiftp+1; - } -/*#endif*/ - } - - if (*p) { stagadd(BEGINDIFFD); source_line(p); stagadd(ENDDIFFD); } - if (*q) { stagadd(BEGINDIFFA); source_line(q); stagadd(ENDDIFFA); } - if (tmpendq!='\0') { *endq=tmpendq; source_line(endq); } - source_line(" "); - } - - /* even if diffcmd=='c', could still have remaining old version lines */ - first=1; - while (deletecnt--) { - fgets(diffline, MAXBUF, difffd); - if (diffline[2]!='.') { - if (first) { stagadd(BEGINDIFFD); first=0; } - source_line(&diffline[2]); /* don't do commands; skip initial '<' */ - } - } - if (!first) { stagadd(ENDDIFFD); source_line(" "); } - - /* skip over duplicated from old */ - if (diffcmd=='c') while (insertcnt0--) fgets(diffline, MAXBUF, difffd); - - /* even if diffcmd=='c', could still have remaining new version lines */ - first=1; - nextDiffLine = AbsLine + insertcnt; - while (insertcnt--) fgets(diffline, MAXBUF, difffd); /* eat duplicate text of above */ - while (/*insertcnt--*/AbsLine" }, - { 'S', 0, "source", "(ource of man page passed in)" }, /* autodetected */ - { 'F', 0, "formatted:format", "(ormatted man page passed in)" }, /* autodetected */ - - { 'r', 1, "reference:manref:ref", " " }, - { 'l', 1, "title", " " }, - { 'V', 1, "volumes:vol", "(olume) <colon-separated list>" }, - { 'U', 0, "url:urls", "(RLs as hyperlinks)" }, - - /* following options apply to formatted pages only */ - { 'b', 0, "subsections:sub", " (show subsections)" }, - { 'k', 0, "keep:head:foot:header:footer", "(eep head/foot)" }, - { 'n', 1, "name", "(ame of man page) <string>" }, - { 's', 1, "section:sect", "(ection) <string>" }, - { 'p', 0, "paragraph:para", "(aragraph mode toggle)" }, - { 't', 1, "tabstop:tabstops", "(abstops spacing) <number>" }, - { 'N', 0, "normalize:normal", "(ormalize spacing, changebars)" }, - { 'y', 0, "zap:nohyphens", " (zap hyphens toggle)" }, - { 'K', 0, "nobreak", " (declare that page has no breaks)" }, /* autodetected */ - { 'd', 1, "diff", "(iff) <file> (diff of old page source to incorporate)" }, - { 'M', 1, "message", "(essage) <text> (included verbatim at end of Name section)" }, - /*{ 'l', 0, "number lines", "... can number lines in a pipe" */ - /*{ 'T', 0, "tables", "(able agressive parsing ON)" },*/ -/* { 'c', 0, "changeleft:changebar", "(hangebarstoleft toggle)" }, -- default is perfect */ - /*{ 'R', 0, "reflow", "(eflow text lines)" },*/ - { 'R', 1, "rebus", "(ebus words for TkMan)" }, - { 'C', 0, "TclTk", " (enable Tcl/Tk formatting)" }, /* autodetected */ - - /*{ 'D', 0, "debug", "(ebugging mode)" }, -- dump unrecognized macros, e.g.*/ - { 'o', 0, "noop", " (no op)" }, - { 'O', 0, "noop", " <arg> (no op with arg)" }, - { 'q', 0, "quiet", "(uiet--don't report warnings)" }, - { 'h', 0, "help", "(elp)" }, - /*{ '?', 0, "help", " (help)" }, -- getopt returns '?' as error flag */ - { 'v', 0, "version", "(ersion)" }, - { '\0', 0, "", NULL } - }; - - /* calculate strgetopt from options list */ - for (i=0,p=strgetopt; option[i].letter!='\0'; i++) { - *p++ = option[i].letter; - /* check for duplicate option letters */ - assert(strchr(strgetopt,option[i].letter)==&p[-1]); - if (option[i].arg) *p++=':'; - } - *p='\0'; - - /* spot check construction of strgetopt */ - assert(p<strgetopt+80); - assert(strlen(strgetopt)>10); - assert(strchr(strgetopt,'f')!=NULL); - assert(strchr(strgetopt,'v')!=NULL); - assert(strchr(strgetopt,':')!=NULL); - - /* count, sort exception strings */ - for (lcexceptionslen=0; (p=lcexceptions[lcexceptionslen])!=NULL; lcexceptionslen++) /*empty*/; - qsort(lcexceptions, lcexceptionslen, sizeof(char*), lcexceptionscmp); - - /* map long option names to single letters for switching */ - /* (GNU probably has a reusable function to do this...) */ - /* deep six getopt in favor of integrated long names + letters? */ - argvch = malloc(argc * sizeof(char*)); - p = argvbuf = malloc(argc*3 * sizeof(char)); /* either -<char>'\0' or no space used */ - for (i=0; i<argc; i++) argvch[i]=argv[i]; /* need argvch[0] for getopt? */ - argv0 = mystrdup(argv[0]); - for (i=1; i<argc; i++) { - if (argv[i][0]=='-' && argv[i][1]=='-') { - if (argv[i][2]=='\0') break; /* end of options */ - for (j=0; option[j].letter!='\0'; j++) { - if (strcoloncmp2(&argv[i][2],'\0',option[j].longnames,0)) { - argvch[i] = p; - *p++ = '-'; *p++ = option[j].letter; *p++ = '\0'; - if (option[j].arg) i++; /* skip arguments of options */ - break; - } - } - if (option[j].letter=='\0') fprintf(stderr, "%s: unknown option %s\n", argv[0], argv[i]); - } - } - - - - /* pass through options to set defaults for chosen format */ - setFilterDefaults("ASCII"); /* default to ASCII (used by TkMan's Glimpse indexing */ - - /* initialize header/footer buffers (save room in binary) */ - for (i=0; i<CRUFTS; i++) { *cruft[i] = '\0'; } /* automatically done, guaranteed? */ - /*for (i=0; i<MAXLINES; i++) { linetabcnt[i] = 0; } */ - - while ((c=getopt(argc,argvch,strgetopt))!=-1) { - - switch (c) { - case 'k': fHeadfoot=1; break; - case 'b': fSubsections=1; break; -/* case 'c': fChangeleft=1; break; -- obsolete */ - /* case 'R': fReflow=1; break;*/ - case 'n': strcpy(manName,optarg); fname=1; break; /* name & section for when using stdin */ - case 's': strcpy(manSect,optarg); break; - /*case 'D': docbookpath = optarg; break;*/ - case 'V': vollist = optarg; break; - case 'l': manTitle = optarg; break; - case 'r': manRef = optarg; - if (strlen(manRef)==0 || strcmp(manRef,"-")==0 || strcmp(manRef,"off")==0) fmanRef=0; - break; - case 't': TabStops=atoi(optarg); break; - /*case 'T': fTable=1; break; -- if preformatted doesn't work, if source automatic */ - case 'p': fPara=!fPara; break; - case 'K': fFoot=1; break; - case 'y': fNOHY=1; break; - case 'N': fNORM=1; break; - - case 'f': /* set format */ - if (setFilterDefaults(optarg)) { - fprintf(stderr, "%s: unknown format: %s\n", argv0, optarg); - exit(1); - } - break; - case 'F': fSource=0; break; - case 'S': fSource=1; break; - - case 'd': - difffd = fopen(optarg, "r"); - if (difffd==NULL) { fprintf(stderr, "%s: can't open %s\n", argv0, optarg); exit(1); } -/* read in a line at a time - diff = filesuck(fd); - fclose(fd); -*/ - fDiff=1; - break; - - case 'M': message = optarg; break; - - case 'C': fTclTk=1; break; - case 'R': - p = malloc(strlen(optarg)+1); - strcpy(p, optarg); /* string may not be in writable address space */ - oldp = ""; - for (; *p; oldp=p, p++) { - if (*oldp=='\0') rebuspat[rebuspatcnt++] = p; - if (*p=='|') *p='\0'; - } - for (i=0; i<rebuspatcnt; i++) rebuspatlen[i] = strlen(rebuspat[i]); /* for strnlen() */ - break; - - case 'q': fQuiet=1; break; - case 'o': /*no op*/ break; - case 'O': /* no op with arg */ break; - case 'h': - printf("rman"); helplen=strlen("rman"); - - /* linebreak options */ - assert(helplen>0); - for (i=0; option[i].letter!='\0'; i++) { - desclen = strlen(option[i].desc); - if (helplen+desclen+5 > helpbreak) { printf("\n%*s",helpispace,""); helplen=helpispace; } - printf(" [-%c%s]", option[i].letter, option[i].desc); - helplen += desclen+5; - } - if (helplen>helpispace) printf("\n"); - printf("%*s [<filename>]\n",helpispace,""); - exit(0); - - case 'v': /*case '?':*/ - printf("PolyglotMan v" POLYGLOTMANVERSION " of $Date: 2003/07/26 19:00:48 $\n"); - exit(0); - - default: - fprintf(stderr, "%s: unidentified option -%c (-h for help)\n",argvch[0],c); - exit(2); - } - } - - - - /* read from given file name(s) */ - if (optind<argc) { - processing = argvch[optind]; - - if (!fname) { /* if no name given, create from file name */ - /* take name from tail of path */ - if ((p=strrchr(argvch[optind],'/'))!=NULL) p++; else p=argvch[optind]; - strcpy(manName,p); - - /* search backward from end for final dot. split there */ - if ((p=strrchr(manName,'.'))!=NULL) { - strcpy(manSect,p+1); - *p='\0'; - } - } - - strcpy(plain,argvch[optind]); - - if (freopen(argvch[optind], "r", stdin)==NULL) { - fprintf(stderr, "%s: can't open %s\n", argvch[0], argvch[optind]); - exit(1); - } - } - - /* need to read macros, ok if fail; from /usr/lib/tmac/an => needs to be set in Makefile, maybe a searchpath */ - /* - if ((macros=fopen("/usr/lib/tmac/an", "r"))!=NULL) { - in = File = filesuck(macros); - lookahead = File[0]; - source_filter(); - free(File); - } - */ - - /* suck in whole file and just operate on pointers */ - in = File = filesuck(stdin); - - - /* minimal check for roff source: first character dot command or apostrophe comment */ - /* MUST initialize lookahead here, BEFORE first call to la_gets */ - if (fSource==-1) { - lookahead = File[0]; - fSource = (lookahead=='.' || lookahead=='\'' || /*dumb HP*/lookahead=='/' - /* HP needs this too but causes problems || isalpha(lookahead)--use --source flag*/); - } - - if (fDiff && (!fSource || fn!=HTML)) { - fprintf(stderr, "diff incorporation supported for man page source, generating HTML\n"); - exit(1); - } - - if (fSource) source_filter(); else preformatted_filter(); - if (fDiff) fclose(difffd); - /*free(File); -- let system clean up, perhaps more efficiently */ - - return 0; -} diff --git a/src/tools/rman/rman.html b/src/tools/rman/rman.html deleted file mode 100644 index c21ea16d27..0000000000 --- a/src/tools/rman/rman.html +++ /dev/null @@ -1,342 +0,0 @@ -<html> -<head> -<title>PolyglotMan Manual Page - - - -

    Name

    - -PolyglotMan, rman - reverse compile man pages from formatted form to a number of source formats - -

    Synopsis

    - -rman [options] [file] - -

    Description

    - -

    PolyglotMan takes man pages from most of the -popular flavors of UNIX and transforms them into any of a number of -text source formats. PolyglotMan was formerly known as RosettaMan. -The name of the binary is still called rman, for scripts -that depend on that name; mnemonically, just think "reverse man". -Previously PolyglotMan required pages to -be formatted by nroff prior to its processing. With version 3.0, it prefers -[tn]roff source and usually produces results that are better yet. -And source processing is the only way to translate tables. -Source format translation is not as mature as formatted, however, so -try formatted translation as a backup. - -

    In parsing [tn]roff source, one could implement an arbitrarily -large subset of [tn]roff, which I did not and will not do, so the -results can be off. I did implement a significant subset of those use -in man pages, however, including tbl (but not eqn), if tests, and -general macro definitions, so usually the results look great. If they -don't, format the page with nroff before sending it to PolyglotMan. If -PolyglotMan doesn't recognize a key macro used by a large class of -pages, however, e-mail me the source and a uuencoded nroff-formatted -page and I'll see what I can do. When running PolyglotMan with man -page source that includes or redirects to other [tn]roff source using -the .so (source or inclusion) macro, you should be in the parent -directory of the page, since pages are written with this assumption. -For example, if you are translating /usr/man/man1/ls.1, first cd into -/usr/man. - -

    PolyglotMan accepts formatted man pages from: -

    SunOS, Sun Solaris, Hewlett-Packard HP-UX, -AT&T System V, OSF/1 aka Digital UNIX, DEC Ultrix, SGI IRIX, Linux, -FreeBSD, SCO.
    -Man page source processing works for: -
    SunOS, Sun Solaris, Hewlett-Packard HP-UX, -AT&T System V, OSF/1 aka Digital UNIX, DEC Ultrix.
    -It can produce -
    printable ASCII-only (control characters -stripped), section headers-only, -Tk, TkMan, [tn]roff (traditional man page source), partial DocBook XML, HTML, MIME, -LaTeX, LaTeX2e, RTF, Perl 5 POD.
    -A modular architecture permits easy addition of additional output -formats.

    - -

    Options

    - -

    The following options should not be used with any others and exit PolyglotMan -without processing any input. - -

    -
    -h|--help
    -
    Show list of command line options and exit.
    - -
    -v|--version
    -
    Show version number and exit.
    -
    - - -

    You should specify the filter first, as this sets a number of parameters, -and then specify other options. - -

    -
    -f|--filter <ASCII|roff|TkMan|Tk|Sections|HTML|MIME|LaTeX|LaTeX2e|RTF|POD>
    - -
    Set the output filter. Defaults to ASCII. - -
    - -
    -S|--source
    -
    PolyglotMan tries to automatically determine whether its input is source or formatted; -use this option to declare source input.
    - -
    -F|--format|--formatted
    -
    PolyglotMan tries to automatically determine whether its input is source or formatted; -use this option to declare formatted input.
    - -
    -l|--title printf-string
    -
    In HTML mode this sets the <TITLE> of the man pages, given the same -parameters as -r.
    - -
    -r|--reference|--manref printf-string
    -
    In HTML mode this sets the URL form by which to retrieve other man pages. -The string can use two supplied parameters: the man page name and its section. -(See the Examples section.) If the string is null (as if set from a shell -by "-r ''"), `-' or `off', then man page references will not be HREFs, just set in italics. -If your printf supports XPG3 positions specifier, this can be quite flexible.
    - -
    -V|--volumes <colon-separated list>
    -
    Set the list of valid volumes to check against when looking for -cross-references to other man pages. Defaults to 1:2:3:4:5:6:7:8:9:o:l:n:p -(volume names can be multicharacter). -If an non-whitespace string in the page is immediately followed by a left -parenthesis, then one of the valid volumes, and ends with optional other -characters and then a right parenthesis--then that string is reported as -a reference to another manual page. If this -V string starts with an equals -sign, then no optional characters are allowed between the match to the list of -valids and the right parenthesis. (This option is needed for SCO UNIX.) -
    - -
    - - -

    The following options apply only when formatted pages are given as input. -They do not apply or are always handled correctly with the source. - -

    -
    -b|--subsections
    -
    Try to recognize subsection titles in addition to section titles. -This can cause problems on some UNIX flavors.
    - -
    -K|--nobreak
    -
    Indicate manual pages don't have page breaks, so don't look for footers and headers -around them. (Older nroff -man macros always put in page breaks, but lately -some vendors have realized that printout are made through troff, whereas -nroff -man is used to format pages for reading on screen, and so have eliminated -page breaks.) PolyglotMan usually gets this right even without this flag.
    - -
    -k|--keep
    -
    Keep headers and footers, as a canonical report at the end of the page.
    - - - - - -
    -n|--name name
    -
    Set name of man page (used in roff format). -If the filename is given in the form "name.section", the name -and section are automatically determined. If the page is being parsed from -[tn]roff source and it has a .TH line, this information is extracted from that line.
    - -
    -p|--paragraph
    -
    paragraph mode toggle. The filter determines whether lines should be linebroken -as they were by nroff, or whether lines should be flowed together into paragraphs. -Mainly for internal use.
    - -
    -s|section #
    -
    Set volume (aka section) number of man page (used in roff format).
    - - - -
    -t|--tabstops #
    -
    For those macros sets that use tabs in place of spaces where -possible in order to reduce the number of characters used, set -tabstops every # columns. Defaults to 8.
    - - -
    - - -

    Notes on Filter Types

    - -

    ROFF

    -

    Some flavors of UNIX ship man page without [tn]roff source, making one's laser printer -little more than a laser-powered daisy wheel. This filer tries to intuit -the original [tn]roff directives, which can then be recompiled by [tn]roff.

    - -

    TkMan

    -

    TkMan, a hypertext man page browser, uses PolyglotMan to show -man pages without the (usually) useless headers and footers on each -pages. It also collects section and (optionally) subsection heads for -direct access from a pulldown menu. TkMan and Tcl/Tk, the toolkit in -which it's written, are available via anonymous ftp from -ftp://ftp.smli.com/pub/tcl/

    - -

    Tk

    - -

    This option outputs the text in a series of Tcl lists consisting of -text-tags pairs, where tag names roughly correspond to HTML. This -output can be inserted into a Tk text widget by doing an eval -<textwidget> insert end <text>. This format should be relatively -easily parsible by other programs that want both the text and the -tags. Also see ASCII.

    - -

    ASCII

    -

    When printed on a line printer, man pages try to produce special text effects -by overstriking characters with themselves (to produce bold) and underscores -(underlining). Other text processing software, such as text editors, searchers, -and indexers, must counteract this. The ASCII filter strips away this formatting. -Piping nroff output through col -b also strips away this formatting, -but it leaves behind unsightly page headers and footers. Also see Tk.

    - -

    Sections

    -

    Dumps section and (optionally) subsection titles. This might be useful for -another program that processes man pages.

    - -

    HTML

    -

    With a simple extention to an HTTP server for Mosaic or other World Wide Web -browser, PolyglotMan can produce high quality HTML on the fly. -Several such extensions and pointers to several others are included in PolyglotMan's -contrib directory.

    - -

    XML

    -

    This is appoaching the Docbook DTD, but I'm hoping that someone that someone -with a real interest in this will polish the tags generated. Try it to see -how close the tags are now.

    - -

    Improved by Aaron Hawley, but still he notes -

    -Output requires human intervention to become proper -DocBook format. This is a result of the fundamental -nature of nroff and DocBook xml. One is marked for -formating the other is marked for semantics (defining -what the content is rather then what it should look -like). For instance, italics and bold formatting are -converted to emphasis and command DocBook elements -respectively even though they should probably be marked -up as command, option, literal, arg, option and other -possible DocBook tags. -
    -

    - -

    MIME

    -

    MIME (Multipurpose Internet Mail Extensions) as defined by RFC 1563, -good for consumption by MIME-aware e-mailers or as Emacs (>=19.29) -enriched documents.

    - -

    LaTeX and LaTeX2e

    -Why not? - -

    RTF

    -

    Use output on Mac or NeXT or whatever. Maybe take random man pages -and integrate with NeXT's documentation system better. Maybe NeXT has -own man page macros that do this.

    - -

    PostScript and FrameMaker

    -

    To produce PostScript, use groff or psroff. To produce FrameMaker MIF, -use FrameMaker's built-in filter. In both cases you need [tn]roff source, -so if you only have a formatted version of the manual page, use PolyglotMan's -roff filter first.

    - - -

    Examples

    - -

    To convert the formatted man page named ls.1 back into -[tn]roff source form:

    - -

    - rman -f roff /usr/local/man/cat1/ls.1 > /usr/local/man/man1/ls.1
    - -

    Long man pages are often compressed to conserve space (compression is -especially effective on formatted man pages as many of the characters -are spaces). As it is a long man page, it probably has subsections, -which we try to separate out (some macro sets don't distinguish -subsections well enough for PolyglotMan to detect them). Let's convert -this to LaTeX format:
    - -

    - pcat /usr/catman/a_man/cat1/automount.z | rman -b -n automount -s 1 -f latex > automount.man
    - -

    Alternatively, - - man 1 automount | rman -b -n automount -s 1 -f latex > automount.man
    - -

    For HTML/Mosaic users, PolyglotMan can, without modification of the -source code, produce HTML links that point to other HTML man pages -either pregenerated or generated on the fly. First let's assume -pregenerated HTML versions of man pages stored in /usr/man/html. -Generate these one-by-one with the following form:
    - - rman -f html -r 'http:/usr/man/html/%s.%s.html' /usr/man/cat1/ls.1 > /usr/man/html/ls.1.html
    - -

    If you've extended your HTML client to generate HTML on the fly you should use -something like:
    - - rman -f html -r 'http:~/bin/man2html?%s:%s' /usr/man/cat1/ls.1
    - -when generating HTML.

    - - -

    Bugs/Incompatibilities

    - -

    PolyglotMan is not perfect in all cases, but it usually does a -good job, and in any case reduces the problem of converting man pages -to light editing.

    - -

    Tables in formatted pages, especially H-P's, aren't handled very well. -Be sure to pass in source for the page to recognize tables.

    - -

    The man pager woman applies its own idea of formatting for -man pages, which can confuse PolyglotMan. Bypass woman -by passing the formatted manual page text directly into -PolyglotMan.

    - -

    The [tn]roff output format uses fB to turn on boldface. If your macro set -requires .B, you'll have to a postprocess the PolyglotMan output.

    - - - -

    See Also

    - -tkman(1), xman(1), man(1), man(7) or man(5) depending on your flavor of UNIX - -

    GNU groff can now output to HTML. - - -

    Author

    - -

    PolyglotMan
    -Copyright (c) 1994-2003 T.A. Phelps
    - -developed at the
    -University of California, Berkeley
    -Computer Science Division - -

    Manual page last updated on $Date: 2003/03/29 08:09:13 $ - - - From 2ffa9f8e542aa0c7dffd043e908d1af92da9d3aa Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Mon, 3 Aug 2015 13:07:06 -0400 Subject: [PATCH 103/126] Revert "Revert "BTwoDimensionalLayout: Removed duplicated code."" This reverts commit c2e9a9227ecadca3a4fdc7e7f7569fb9c7dc1391. I misunderstood what Diver meant -- apparently whe he said "revert", he meant the whole changeset, not this specific commit. So the culprit is probably BTextView then. --- src/kits/interface/TwoDimensionalLayout.cpp | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/kits/interface/TwoDimensionalLayout.cpp b/src/kits/interface/TwoDimensionalLayout.cpp index a37f67a792..ffb93b0441 100644 --- a/src/kits/interface/TwoDimensionalLayout.cpp +++ b/src/kits/interface/TwoDimensionalLayout.cpp @@ -21,8 +21,6 @@ #include "CollapsingLayouter.h" - - // Some words of explanation: // // This class is the base class for BLayouts that organize their items @@ -923,13 +921,6 @@ BTwoDimensionalLayout::VerticalCompoundLayouter::InternalGetHeightForWidth( } updateCachedInfo = true; - - // get the height for width info - fCachedMinHeightForWidth = fHeightForWidthLayouter->MinSize(); - fCachedMaxHeightForWidth = fHeightForWidthLayouter->MaxSize(); - fCachedPreferredHeightForWidth - = fHeightForWidthLayouter->PreferredSize(); - } else if (localLayouter->HasHeightForWidth()) { // There is a height for width layouter and it has been initialized // in the current layout context. So we just add the height for width From b0ed3239243cf00692f5982482f0ddaa181356fa Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Tue, 4 Aug 2015 12:02:00 +0200 Subject: [PATCH 104/126] BMediaEventLooper::ControlLoop: Review style/logic, no functional change * The code is just reversed to be better organized. * Since the first event will be handled after a port write, at thread spawn we just wait with infinite timeout for new messages. * Remove goto which then become a continue. * This permitted to remove the double waitUntil assignment which was in different braces. * lateness var become tempLateness, so it become more obvious than before that it's a cached value and we are doing this to avoid double calculus. --- src/kits/media/MediaEventLooper.cpp | 52 ++++++++++++++--------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/src/kits/media/MediaEventLooper.cpp b/src/kits/media/MediaEventLooper.cpp index d072bc3efb..bf3c8d0012 100644 --- a/src/kits/media/MediaEventLooper.cpp +++ b/src/kits/media/MediaEventLooper.cpp @@ -214,8 +214,8 @@ BMediaEventLooper::ControlLoop() CALLED(); status_t err; - bigtime_t waitUntil = 0; - bigtime_t lateness = 0; + bigtime_t waitUntil = B_INFINITE_TIMEOUT; + bigtime_t tempLateness = 0; bool hasRealtime = false; bool hasEvent = false; @@ -228,11 +228,28 @@ BMediaEventLooper::ControlLoop() if (RunState() == B_QUITTING) return; + err = WaitForMessage(waitUntil); + if (err == B_TIMED_OUT) { + media_timed_event event; + if (hasEvent) + err = fEventQueue.RemoveFirstEvent(&event); + else + err = fRealTimeQueue.RemoveFirstEvent(&event); + + if (err == B_OK) { + tempLateness -= TimeSource()->RealTime(); + if (tempLateness < 0) + tempLateness = 0; + + DispatchEvent(&event, tempLateness, hasRealtime); + } + } else if (err != B_OK) + return; + // BMediaEventLooper compensates your performance time by adding // the event latency (see SetEventLatency()) and the scheduling // latency (or, for real-time events, only the scheduling latency). - waitUntil = B_INFINITE_TIMEOUT; hasRealtime = fRealTimeQueue.HasEvents(); hasEvent = fEventQueue.HasEvents(); @@ -240,9 +257,10 @@ BMediaEventLooper::ControlLoop() waitUntil = TimeSource()->RealTimeFor( fEventQueue.FirstEvent()->event_time, fEventLatency + fSchedulingLatency); - lateness = waitUntil; - } else if (!hasEvent && !hasRealtime) - goto ahead; + } else if (!hasRealtime) { + waitUntil = B_INFINITE_TIMEOUT; + continue; + } if (hasEvent && hasRealtime) { if (fRealTimeQueue.FirstEventTime() @@ -255,29 +273,11 @@ BMediaEventLooper::ControlLoop() if (hasRealtime) { waitUntil = fRealTimeQueue.FirstEventTime() - fSchedulingLatency; - lateness = waitUntil; } - if (waitUntil <= TimeSource()->RealTime()) + tempLateness = waitUntil; + if (waitUntil < TimeSource()->RealTime()) waitUntil = 0; - -ahead: - err = WaitForMessage(waitUntil); - if (err == B_TIMED_OUT) { - media_timed_event event; - if (hasEvent) - err = fEventQueue.RemoveFirstEvent(&event); - else - err = fRealTimeQueue.RemoveFirstEvent(&event); - - if (err == B_OK) { - lateness -= TimeSource()->RealTime(); - if (lateness < 0) - lateness = 0; - DispatchEvent(&event, lateness, hasRealtime); - } - } else if (err != B_OK) - return; } } From fb4ea396e3c74324d365a277dfd2c51195c641b8 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Tue, 4 Aug 2015 09:02:52 -0400 Subject: [PATCH 105/126] BMenu: Check return value of LockLooper(). CIDs 602450-602452. --- src/kits/interface/Menu.cpp | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/kits/interface/Menu.cpp b/src/kits/interface/Menu.cpp index 58aaeb8c15..39c5ef3f46 100644 --- a/src/kits/interface/Menu.cpp +++ b/src/kits/interface/Menu.cpp @@ -1833,10 +1833,12 @@ BMenu::_UpdateNavigationArea(BPoint position, BRect& navAreaRectAbove, if (submenu != NULL) { BRect menuBounds = ConvertToScreen(Bounds()); - fSelected->Submenu()->LockLooper(); - BRect submenuBounds = fSelected->Submenu()->ConvertToScreen( - fSelected->Submenu()->Bounds()); - fSelected->Submenu()->UnlockLooper(); + BRect submenuBounds; + if (fSelected->Submenu()->LockLooper()) { + submenuBounds = fSelected->Submenu()->ConvertToScreen( + fSelected->Submenu()->Bounds()); + fSelected->Submenu()->UnlockLooper(); + } if (menuBounds.left < submenuBounds.left) { navAreaRectAbove.Set(position.x + NAV_AREA_THRESHOLD, @@ -1889,10 +1891,12 @@ BMenu::_UpdateStateOpenSelect(BMenuItem* item, BPoint position, BRect menuBounds = ConvertToScreen(Bounds()); - fSelected->Submenu()->LockLooper(); - BRect submenuBounds = fSelected->Submenu()->ConvertToScreen( - fSelected->Submenu()->Bounds()); - fSelected->Submenu()->UnlockLooper(); + BRect submenuBounds; + if (fSelected->Submenu()->LockLooper()) { + fSelected->Submenu()->ConvertToScreen( + fSelected->Submenu()->Bounds()); + fSelected->Submenu()->UnlockLooper(); + } float xOffset; @@ -1963,8 +1967,7 @@ BMenu::_UpdateStateClose(BMenuItem* item, const BPoint& where, if (buttons != 0 && _IsStickyMode()) { if (item == NULL) { - if (item != fSelected) { - LockLooper(); + if (item != fSelected && LockLooper()) { _SelectItem(item, false); UnlockLooper(); } @@ -1978,8 +1981,7 @@ BMenu::_UpdateStateClose(BMenuItem* item, const BPoint& where, // Setting this to NULL will prevent this code // to be executed next time } else { - if (item != fSelected) { - LockLooper(); + if (item != fSelected && LockLooper()) { _SelectItem(item, false); UnlockLooper(); } From 3e50787c0eec50aea264d4f076d72aa73c0895b4 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Tue, 4 Aug 2015 09:29:13 -0400 Subject: [PATCH 106/126] BCommandPipe: Fix memory leak. CID 600866. Both the header and the source of the argv getter clearly indicate that the caller must free the memory. --- src/kits/shared/CommandPipe.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/kits/shared/CommandPipe.cpp b/src/kits/shared/CommandPipe.cpp index b0b1d129ea..e1a3ba2d58 100644 --- a/src/kits/shared/CommandPipe.cpp +++ b/src/kits/shared/CommandPipe.cpp @@ -362,6 +362,7 @@ BCommandPipe::operator<<(const BCommandPipe& arg) for (int32 i = 0; i < argc; i++) AddArg(argv[i]); + free(argv); return *this; } From e2bb78c2064d2d7fab3414141078b9efd8815917 Mon Sep 17 00:00:00 2001 From: Automatic Committer Date: Thu, 6 Aug 2015 05:20:30 +0200 Subject: [PATCH 107/126] Update pci.ids from pciids.sourceforge.net --- src/data/ids/pci.ids | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/data/ids/pci.ids b/src/data/ids/pci.ids index 0ee2fc8739..8ee0dcc68e 100644 --- a/src/data/ids/pci.ids +++ b/src/data/ids/pci.ids @@ -1,8 +1,8 @@ # # List of PCI ID's # -# Version: 2015.07.22 -# Date: 2015-07-22 03:15:01 +# Version: 2015.07.31 +# Date: 2015-07-31 03:15:02 # # Maintained by Martin Mares and other volunteers from the # PCI ID Project at http://pci-ids.ucw.cz/. @@ -10256,6 +10256,9 @@ 13f1 GM204GL [Quadro M4000] 13f2 GM204GL [Tesla M60] 1401 GM206 [GeForce GTX 960] + 1617 GM204M [GeForce GTX 980M] + 1618 GM204M [GeForce GTX 970M] + 1619 GM204M [GeForce GTX 965M] 17c2 GM200 [GeForce GTX TITAN X] 17c8 GM200 [GeForce GTX 980 Ti] 17f0 GM200GL [Quadro M6000] @@ -19244,6 +19247,7 @@ 1000 FL1000G USB 3.0 Host Controller 1d5c 1000 Anker USB 3.0 Express Card 1009 FL1009 USB 3.0 Host Controller + 1100 FL1100 USB 3.0 Host Controller 1b74 OpenVox Communication Co. Ltd. 0115 D115P/D115E Single-port E1/T1 card d130 D130P/D130E Single-port E1/T1 card (3rd GEN) From 33c0e857dcd8801fdfcc1df831e16ac9d48b1ce0 Mon Sep 17 00:00:00 2001 From: Automatic Committer Date: Thu, 6 Aug 2015 05:20:31 +0200 Subject: [PATCH 108/126] Update usb.ids from www.linux-usb.org --- src/data/ids/usb.ids | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/data/ids/usb.ids b/src/data/ids/usb.ids index fdd6227d60..d127c0fa28 100644 --- a/src/data/ids/usb.ids +++ b/src/data/ids/usb.ids @@ -9,8 +9,8 @@ # The latest version can be obtained from # http://www.linux-usb.org/usb.ids # -# Version: 2015.06.22 -# Date: 2015-06-22 20:34:08 +# Version: 2015.07.27 +# Date: 2015-07-27 20:34:14 # # Vendors, devices and interfaces. Please keep sorted. @@ -16955,6 +16955,15 @@ 6323 USB Electronic Scale 2237 Kobo Inc. 4161 eReader White +225d Morpho + 0001 FINGER VP Multimodal Biometric Sensor + 0008 CBM-E3 Fingerprint Sensor + 0009 CBM Fingerprint Sensor [CBM-V3] + 000a MSO1300-E3 Fingerprint Sensor + 000b MSO1300 Fingerprint Sensor [MSO1300-V3] + 000c MSO1350-E3 Fingerprint Sensor & SmartCard Reader + 000d MSO1350 Fingerprint Sensor & SmartCard Reader [MSO1350-V3] + 000e MorphoAccess SIGMA Biometric Access Control Terminal 228d 8D Technologies inc. 0001 Terminal Bike Key Reader 22a6 Pie Digital, Inc. From 08c57f1d3b6f6fee02482485e663bca953e23480 Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Thu, 6 Aug 2015 17:26:13 -0400 Subject: [PATCH 109/126] Debugger: Fix #12291. UiUtils: - Fix incorrect check to see if we had hit the bounds of the current memory block that would cause us to overflow the block's data buffer if incorrect length values were passed in. --- src/apps/debugger/user_interface/util/UiUtils.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/apps/debugger/user_interface/util/UiUtils.cpp b/src/apps/debugger/user_interface/util/UiUtils.cpp index b1d326eb13..064d85c614 100644 --- a/src/apps/debugger/user_interface/util/UiUtils.cpp +++ b/src/apps/debugger/user_interface/util/UiUtils.cpp @@ -337,6 +337,9 @@ UiUtils::DumpMemory(BString& _output, int32 indentLevel, int32 j; _output.Append('\t', indentLevel); for (int32 i = 0; i < count; i++) { + if (!block->Contains(address + i * itemSize)) + break; + uint8* value; if ((i % displayWidth) == 0) { @@ -350,8 +353,6 @@ UiUtils::DumpMemory(BString& _output, int32 indentLevel, _output += data; char c; for (j = 0; j < displayed; j++) { - if (!block->Contains(address + displayed)) - break; c = *(block->Data() + address - block->BaseAddress() + (i * itemSize) + j); if (!isprint(c)) From 3470d14d03b22fb5c98107ab870b16b9b31224fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Fri, 7 Aug 2015 17:06:45 +0200 Subject: [PATCH 110/126] Update nano,mpg123,libmikmod,libpng16,libunistring packages. --- build/jam/repositories/HaikuPorts/x86 | 18 +++++++-------- build/jam/repositories/HaikuPorts/x86_64 | 14 ++++++------ build/jam/repositories/HaikuPorts/x86_gcc2 | 26 +++++++++++----------- 3 files changed, 29 insertions(+), 29 deletions(-) diff --git a/build/jam/repositories/HaikuPorts/x86 b/build/jam/repositories/HaikuPorts/x86 index 80ad6bf193..c94d1b8027 100644 --- a/build/jam/repositories/HaikuPorts/x86 +++ b/build/jam/repositories/HaikuPorts/x86 @@ -130,8 +130,8 @@ RemotePackageRepository HaikuPorts libpcre_devel-8.21-5 libpng-1.5.22-1 libpng_devel-1.5.22-1 - libpng16-1.6.17-1 - libpng16_devel-1.6.17-1 + libpng16-1.6.18-1 + libpng16_devel-1.6.18-1 libsanta-3.0.1-1 libsanta_devel-3.0.1-1 libsdl-1.2.15-6 @@ -144,8 +144,8 @@ RemotePackageRepository HaikuPorts libtheora_devel-1.1.1-2 libtool-2.4.2-1 libtool_libltdl-2.4.2-1 - libunistring-0.9.5-1 - libunistring_devel-0.9.5-1 + libunistring-0.9.6-1 + libunistring_devel-0.9.6-1 libvorbis-1.3.5-1 libvorbis_devel-1.3.5-1 libvpx-1.0.0-2 @@ -175,9 +175,9 @@ RemotePackageRepository HaikuPorts mpc_devel-1.0.3-1 mpfr-3.1.3-1 mpfr_devel-3.1.3-1 - mpg123-1.22.0-1 - mpg123_devel-1.22.0-1 - nano-2.4.0-1 + mpg123-1.22.3-1 + mpg123_devel-1.22.3-1 + nano-2.4.2-1 nasm-2.11.08-1 ncurses-5.9-10 ncurses_devel-5.9-10 @@ -284,8 +284,8 @@ RemotePackageRepository HaikuPorts libogg_x86_gcc2_devel-1.3.0-2 libpng_x86_gcc2-1.5.22-1 libpng_x86_gcc2_devel-1.5.22-1 - libpng16_x86_gcc2-1.6.17-1 - libpng16_x86_gcc2_devel-1.6.17-1 + libpng16_x86_gcc2-1.6.18-1 + libpng16_x86_gcc2_devel-1.6.18-1 libsolv_x86_gcc2-0.3.0_haiku_2014_12_22-1 libsolv_x86_gcc2_devel-0.3.0_haiku_2014_12_22-1 libtheora_x86_gcc2-1.1.1-2 diff --git a/build/jam/repositories/HaikuPorts/x86_64 b/build/jam/repositories/HaikuPorts/x86_64 index 83d49c7c48..77b1775702 100644 --- a/build/jam/repositories/HaikuPorts/x86_64 +++ b/build/jam/repositories/HaikuPorts/x86_64 @@ -191,8 +191,8 @@ RemotePackageRepository HaikuPorts libpcre_devel-8.21-5 libpng-1.5.22-1 libpng_devel-1.5.22-1 - libpng16-1.6.17-1 - libpng16_devel-1.6.17-1 + libpng16-1.6.18-1 + libpng16_devel-1.6.18-1 librevenge-0.0.1-1 librevenge_devel-0.0.1-1 libsamplerate-0.1.8-2 @@ -211,8 +211,8 @@ RemotePackageRepository HaikuPorts libtheora_devel-1.1.1-2 libtool-2.4.2-1 libtool_libltdl-2.4.2-1 - libunistring-0.9.5-1 - libunistring_devel-0.9.5-1 + libunistring-0.9.6-1 + libunistring_devel-0.9.6-1 libusb-1.0.19-2 libusb_devel-1.0.19-2 libusb_compat-0.1.5-2 @@ -248,9 +248,9 @@ RemotePackageRepository HaikuPorts mpc_devel-1.0.3-1 mpfr-3.1.3-1 mpfr_devel-3.1.3-1 - mpg123-1.22.0-1 - mpg123_devel-1.22.0-1 - nano-2.4.0-1 + mpg123-1.22.3-1 + mpg123_devel-1.22.3-1 + nano-2.4.2-1 nasm-2.11.08-1 ncurses-5.9-10 ncurses_devel-5.9-10 diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index ed13949d03..572e690c20 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -264,8 +264,8 @@ RemotePackageRepository HaikuPorts libpcre_devel-8.21-5 libpng-1.5.22-1 libpng_devel-1.5.22-1 - libpng16-1.6.17-1 - libpng16_devel-1.6.17-1 + libpng16-1.6.18-1 + libpng16_devel-1.6.18-1 libpthread_stubs-0.3-2 libreplaygain-r475-1 libreplaygain_devel-r475-1 @@ -293,8 +293,8 @@ RemotePackageRepository HaikuPorts libusb_compat_devel-0.1.5-2 libuuid-1.0.3-2 libuuid_devel-1.0.3-2 - libunistring-0.9.5-1 - libunistring_devel-0.9.5-1 + libunistring-0.9.6-1 + libunistring_devel-0.9.6-1 libvorbis-1.3.5-1 libvorbis_devel-1.3.5-1 libvpx-1.0.0-2 @@ -339,15 +339,15 @@ RemotePackageRepository HaikuPorts moe-1.1.2-1 mog-0.63.1548-1 most-pre5.1_15-1 - mpg123-1.22.0-1 - mpg123_devel-1.22.0-1 + mpg123-1.22.3-1 + mpg123_devel-1.22.3-1 mtr-0.73-1 multitalk-1.4-1 mupdf-1.7-1 mupdf_devel-1.7-1 musepack_tools-r475-1 musepack_tools_devel-r475-1 - nano-2.4.0-1 + nano-2.4.2-1 nanosvgtranslator-1.0.1-1 nasm-2.11.08-1 ncurses-5.9-9 @@ -674,8 +674,8 @@ RemotePackageRepository HaikuPorts libid3tag_x86_devel-0.15.1b-1 libmad_x86-0.15.1b-2 libmad_x86_devel-0.15.1b-2 - libmikmod_x86-3.3.3-2 - libmikmod_x86_devel-3.3.3-2 + libmikmod_x86-3.3.7-1 + libmikmod_x86_devel-3.3.7-1 libmng_x86-2.0.2-1 libmng_x86_devel-2.0.2-1 libmodplug_x86-0.8.8.4-2 @@ -690,8 +690,8 @@ RemotePackageRepository HaikuPorts libpcre_x86_devel-8.33-2 libpng_x86-1.5.22-1 libpng_x86_devel-1.5.22-1 - libpng16_x86-1.6.17-1 - libpng16_x86_devel-1.6.17-1 + libpng16_x86-1.6.18-1 + libpng16_x86_devel-1.6.18-1 libqt4_x86-4.8.6.4-4 libqt4_x86_devel-4.8.6.4-4 librecad_x86-2.0.7-1 @@ -749,8 +749,8 @@ RemotePackageRepository HaikuPorts mpd_x86-0.18.12_git-1 mpfr_x86-3.1.3-1 mpfr_x86_devel-3.1.3-1 - mpg123_x86-1.22.0-1 - mpg123_x86_devel-1.22.0-1 + mpg123_x86-1.22.3-1 + mpg123_x86_devel-1.22.3-1 mplayer_x86-1.1.1-3 mupdf_x86-1.7-1 mupdf_x86_devel-1.7-1 From f6f96d9689496b59f54cee888f8611c9b64bfd83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Fri, 7 Aug 2015 17:57:27 +0200 Subject: [PATCH 111/126] Update lz4 packages. --- build/jam/repositories/HaikuPorts/x86 | 4 ++-- build/jam/repositories/HaikuPorts/x86_64 | 4 ++-- build/jam/repositories/HaikuPorts/x86_gcc2 | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/build/jam/repositories/HaikuPorts/x86 b/build/jam/repositories/HaikuPorts/x86 index c94d1b8027..034510f288 100644 --- a/build/jam/repositories/HaikuPorts/x86 +++ b/build/jam/repositories/HaikuPorts/x86 @@ -158,8 +158,8 @@ RemotePackageRepository HaikuPorts libxslt-1.1.28-2 libxslt_devel-1.1.28-2 llvm-3.5.2-1 - lz4-r117-1 - lz4_devel-r117-1 + lz4-r131-1 + lz4_devel-r131-1 lzo-2.09-1 lzo_devel-2.09-1 m4-1.4.16-5 diff --git a/build/jam/repositories/HaikuPorts/x86_64 b/build/jam/repositories/HaikuPorts/x86_64 index 77b1775702..2211150f41 100644 --- a/build/jam/repositories/HaikuPorts/x86_64 +++ b/build/jam/repositories/HaikuPorts/x86_64 @@ -231,8 +231,8 @@ RemotePackageRepository HaikuPorts llvm-3.5.2-1 lua-5.2.3-2 lua_devel-5.2.3-2 - lz4-r130-1 - lz4_devel-r130-1 + lz4-r131-1 + lz4_devel-r131-1 lzo-2.09-1 lzo_devel-2.09-1 m4-1.4.16-5 diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index 572e690c20..2b330ea870 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -317,8 +317,8 @@ RemotePackageRepository HaikuPorts lua-5.2.1-6 lua_devel-5.2.1-6 lynx-2.8.9dev.1-1 - lz4-r117-1 - lz4_devel-r117-1 + lz4-r131-1 + lz4_devel-r131-1 lzo-2.09-1 lzo_devel-2.09-1 m4-1.4.16-5 From 3749038b534a5948026624805adf1ee14ff4caa6 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Fri, 7 Aug 2015 20:37:11 +0200 Subject: [PATCH 112/126] MouseDownThread: let thread terminate cleanly. * Killing the thread leaks resources, and it will terminate cleanly and safely when the destructor exits anyway. * Fixes #12293. Thanks to ttcoder, jackburton and bonefish for investigating! * Does not fix #12286. Going to bissect now... --- headers/private/shared/Thread.h | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/headers/private/shared/Thread.h b/headers/private/shared/Thread.h index 79d062fbf7..7a47213dd9 100644 --- a/headers/private/shared/Thread.h +++ b/headers/private/shared/Thread.h @@ -365,11 +365,6 @@ MouseDownThread::MouseDownThread(View* view, template MouseDownThread::~MouseDownThread() { - if (fThreadID > 0) { - kill_thread(fThreadID); - // dead at this point - TRESPASS(); - } } @@ -393,7 +388,6 @@ MouseDownThread::TrackBinder(void* castToThis) MouseDownThread* self = static_cast(castToThis); self->Track(); // dead at this point - TRESPASS(); return B_OK; } @@ -427,9 +421,9 @@ MouseDownThread::Track() } delete this; - ASSERT(!"should not be here"); } + } // namespace BPrivate using namespace BPrivate; From b8d10c6dc62727003c7d9533879987d521138630 Mon Sep 17 00:00:00 2001 From: Andrew Lindesay Date: Thu, 30 Jul 2015 22:21:46 +1200 Subject: [PATCH 113/126] HaikuDepot: Enhancements to the User-Agent header to include the version. Signed-off-by: Augustin Cavalier Fixes #12262. --- src/apps/haikudepot/model/WebAppInterface.cpp | 73 +++++++++++++++++-- src/apps/haikudepot/model/WebAppInterface.h | 4 + 2 files changed, 70 insertions(+), 7 deletions(-) diff --git a/src/apps/haikudepot/model/WebAppInterface.cpp b/src/apps/haikudepot/model/WebAppInterface.cpp index 78ed19e306..921e7dd767 100644 --- a/src/apps/haikudepot/model/WebAppInterface.cpp +++ b/src/apps/haikudepot/model/WebAppInterface.cpp @@ -7,22 +7,28 @@ #include +#include +#include +#include #include #include #include #include #include +#include #include #include #include #include +#include "AutoLocker.h" #include "List.h" #include "PackageInfo.h" #define CODE_REPOSITORY_DEFAULT "haikuports" #define BASEURL_DEFAULT "https://depot.haiku-os.org" +#define USERAGENT_FALLBACK_VERSION "0.0.0" class JsonBuilder { @@ -274,7 +280,8 @@ enum { BString WebAppInterface::fBaseUrl = BString(BASEURL_DEFAULT); - +BString WebAppInterface::fUserAgent = BString(); +BLocker WebAppInterface::fUserAgentLocker = BLocker(); WebAppInterface::WebAppInterface() : @@ -337,7 +344,7 @@ arguments_is_url_valid(const BString& value) BString scheme; value.CopyInto(scheme, 0, schemeEnd); - + if (scheme != "http" && scheme != "https") { fprintf(stderr, "the url scheme should be 'http' or 'https'\n"); return false; @@ -356,7 +363,7 @@ arguments_is_url_valid(const BString& value) indicate if the URL was acceptable. \return B_OK if the base URL was valid and B_BAD_VALUE if not. */ -status_t +status_t WebAppInterface::SetBaseUrl(const BString& url) { if (!arguments_is_url_valid(url)) @@ -368,6 +375,60 @@ WebAppInterface::SetBaseUrl(const BString& url) } +const BString +WebAppInterface::_GetUserAgentVersionString() +{ + app_info info; + + if (be_app->GetAppInfo(&info) != B_OK) { + fprintf(stderr, "Unable to get the application info\n"); + be_app->Quit(); + return BString(USERAGENT_FALLBACK_VERSION); + } + + BFile file(&info.ref, B_READ_ONLY); + + if (file.InitCheck() != B_OK) { + fprintf(stderr, "Unable to access the application info file\n"); + be_app->Quit(); + return BString(USERAGENT_FALLBACK_VERSION); + } + + BAppFileInfo appFileInfo(&file); + version_info versionInfo; + + if (appFileInfo.GetVersionInfo( + &versionInfo, B_APP_VERSION_KIND) != B_OK) { + fprintf(stderr, "Unable to establish the application version\n"); + be_app->Quit(); + return BString(USERAGENT_FALLBACK_VERSION); + } + + BString result; + result.SetToFormat("%ld.%ld.%ld", versionInfo.major, versionInfo.middle, + versionInfo.minor); + return result; +} + + +/*! This method will devise a suitable User-Agent header value that + can be transmitted with HTTP requests to the server in order + to identify this client. + */ +const BString +WebAppInterface::_GetUserAgent() +{ + AutoLocker lock(&fUserAgentLocker); + + if (fUserAgent.IsEmpty()) { + fUserAgent.SetTo("HaikuDepot/"); + fUserAgent.Append(_GetUserAgentVersionString()); + } + + return fUserAgent; +} + + void WebAppInterface::SetPreferredLanguage(const BString& language) { @@ -592,7 +653,7 @@ WebAppInterface::RetrieveScreenshot(const BString& code, listener.SetDownloadIO(stream); BHttpHeaders headers; - headers.AddHeader("User-Agent", "X-HDS-Client"); + headers.AddHeader("User-Agent", _GetUserAgent()); BHttpRequest request(url, isSecure, "HTTP", &listener); request.SetMethod(B_HTTP_GET); @@ -715,7 +776,7 @@ WebAppInterface::_SendJsonRequest(const char* domain, BString jsonString, BHttpHeaders headers; headers.AddHeader("Content-Type", "application/json"); - headers.AddHeader("User-Agent", "X-HDS-Client"); + headers.AddHeader("User-Agent", _GetUserAgent()); BHttpRequest request(url, isSecure, "HTTP", &listener, &context); request.SetMethod(B_HTTP_POST); @@ -764,5 +825,3 @@ WebAppInterface::_SendJsonRequest(const char* domain, BString jsonString, } return status; } - - diff --git a/src/apps/haikudepot/model/WebAppInterface.h b/src/apps/haikudepot/model/WebAppInterface.h index 8cf8779830..f5fffecabf 100644 --- a/src/apps/haikudepot/model/WebAppInterface.h +++ b/src/apps/haikudepot/model/WebAppInterface.h @@ -101,6 +101,8 @@ public: BMessage& message); private: + static const BString _GetUserAgentVersionString(); + static const BString _GetUserAgent(); BString _FormFullUrl(const BString& suffix) const; status_t _SendJsonRequest(const char* domain, BString jsonString, uint32 flags, @@ -108,6 +110,8 @@ private: private: static BString fBaseUrl; + static BString fUserAgent; + static BLocker fUserAgentLocker; BString fUsername; BString fPassword; BString fLanguage; From f79c173b422f17e78291a0d3b379037816b86cec Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Fri, 7 Aug 2015 21:53:46 -0400 Subject: [PATCH 114/126] HaikuDepot: Fix 64-bit build. --- src/apps/haikudepot/model/WebAppInterface.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/apps/haikudepot/model/WebAppInterface.cpp b/src/apps/haikudepot/model/WebAppInterface.cpp index 921e7dd767..cc0072df4a 100644 --- a/src/apps/haikudepot/model/WebAppInterface.cpp +++ b/src/apps/haikudepot/model/WebAppInterface.cpp @@ -405,8 +405,8 @@ WebAppInterface::_GetUserAgentVersionString() } BString result; - result.SetToFormat("%ld.%ld.%ld", versionInfo.major, versionInfo.middle, - versionInfo.minor); + result.SetToFormat("%" B_PRId32 ".%" B_PRId32 ".%" B_PRId32, + versionInfo.major, versionInfo.middle, versionInfo.minor); return result; } From fdc32a38447b489450b0f816219fcc0bd65a70b2 Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Fri, 7 Aug 2015 22:05:08 -0400 Subject: [PATCH 115/126] Launch configuration: Fix #12289. - Adjust launch configuration such that media_server requires mount_server. Otherwise, if the user has specified sound files for any events that are on non-boot disks, these won't be found/loaded properly during the boot process. --- data/launch/system | 1 + 1 file changed, 1 insertion(+) diff --git a/data/launch/system b/data/launch/system index 623593012a..126d323efc 100644 --- a/data/launch/system +++ b/data/launch/system @@ -29,6 +29,7 @@ service x-vnd.Haiku-mount_server { } service x-vnd.Haiku-media_server { + requires x-vnd.Haiku-mount_server launch /system/servers/media_server no_safemode legacy From 659d55b41b12762dc0c9e44033b5f47157fe1083 Mon Sep 17 00:00:00 2001 From: autonielx Date: Sat, 8 Aug 2015 06:31:15 +0200 Subject: [PATCH 116/126] Update translations from Pootle --- .../inbound_filters/match_header/es.catkeys | 5 +++- .../inbound_filters/notifier/es.catkeys | 28 +++++++++---------- .../inbound_filters/spam_filter/es.catkeys | 3 +- .../inbound_protocols/imap/es.catkeys | 7 ++++- .../outbound_filters/fortune/es.catkeys | 3 +- .../network_settings/dnsclient/es.catkeys | 7 +++++ .../add-ons/network_settings/ipv4/es.catkeys | 2 ++ .../add-ons/network_settings/ipv6/es.catkeys | 2 ++ .../add-ons/network_settings/sshd/es.catkeys | 2 ++ .../add-ons/translators/ppm/es.catkeys | 4 ++- .../add-ons/translators/psd/es.catkeys | 4 ++- .../add-ons/translators/sgi/es.catkeys | 4 ++- .../add-ons/translators/tga/es.catkeys | 4 ++- .../add-ons/translators/tiff/es.catkeys | 3 +- data/catalogs/apps/aboutsystem/es.catkeys | 3 +- data/catalogs/apps/haikudepot/es.catkeys | 9 +++++- data/catalogs/apps/mail/es.catkeys | 3 +- data/catalogs/apps/mediaplayer/es.catkeys | 4 ++- .../catalogs/apps/packageinstaller/es.catkeys | 3 +- data/catalogs/bin/dstcheck/es.catkeys | 3 +- data/catalogs/kits/es.catkeys | 4 ++- data/catalogs/preferences/mail/es.catkeys | 3 +- data/catalogs/preferences/printers/es.catkeys | 3 +- 23 files changed, 81 insertions(+), 32 deletions(-) create mode 100644 data/catalogs/add-ons/network_settings/dnsclient/es.catkeys create mode 100644 data/catalogs/add-ons/network_settings/ipv4/es.catkeys create mode 100644 data/catalogs/add-ons/network_settings/ipv6/es.catkeys create mode 100644 data/catalogs/add-ons/network_settings/sshd/es.catkeys diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/es.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/es.catkeys index 6d98dc62c0..c5fab44118 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/es.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/es.catkeys @@ -1,13 +1,16 @@ -1 spanish; castilian x-vnd.Haiku-MatchHeader 3677427558 +1 spanish; castilian x-vnd.Haiku-MatchHeader 3405428083 ConfigView has ConfigView tiene Move to ConfigView Mover a Then ConfigView Luego this field is based on the action ConfigView este campo está basado en la acción Delete message ConfigView Borrar mensaje +value (use REGEX: in front of regular expressions like *spam*) ConfigView valor (use REGEX: frente a expresiones regulares como *spam*) ConfigView Set flags to ConfigView Seleccionar banderas a Set as read ConfigView Marcar como leído +Match header RuleFilter Cabecera concordante Reply with ConfigView Responder con If ConfigView Si +Match \"%attribute\" against \"%regex\" RuleFilter Concordar \"%attribute\" contra \"%regex\" header (e.g. Subject) ConfigView Cabecera (p. ej. Tema) diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/es.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/es.catkeys index 52b61a3004..93f2f1c2ac 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/es.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/es.catkeys @@ -1,14 +1,14 @@ -1 spanish; castilian x-vnd.Haiku-NewMailNotification 4243490201 -{0, plural, one{# new message} other{# new messages}} filter {0, plural, one{# mensaje nuevo} other{# mensajes nuevos}} -Keyboard LEDs ConfigView LEDs de teclado -Log window ConfigView Ventana de log -Central beep ConfigView Beep central -Beep ConfigView Beep -Method: ConfigView Método: -Central alert ConfigView Alerta central -Alert ConfigView Alerta -none ConfigView ninguno -You have {0, plural, one{# new message} other{# new messages}} for %account. filter Tiene {0, plural, one{# mensaje nuevo} other{# mensajes nuevos}} para %account. -New messages filter Nuevos mensajes -New mails notification ConfigView Nuevas notificaciones de correo -OK filter Aceptar +1 spanish; castilian x-vnd.Haiku-NewMailNotification 73789504 +You have {0, plural, one{One new message} other{# new messages}} for %account. NotifierFilter Usted tiene {0, plural, one{Un nuevo mensaje} other{# mensajes nuevos}} en %account. +none NotifierConfigView ninguno +Method: NotifierConfigView Método: +Beep NotifierConfigView Beep +{0, plural, one{One new message} other{# new messages}} NotifierFilter {0, plural, one{Un mensaje nuevo} other{# mensajes nuevos}} +New mails notification NotifierFilter Nuevas notificaciones de correo +Central alert NotifierConfigView Alerta central +OK NotifierFilter Aceptar +New messages NotifierFilter Nuevos mensajes +Log window NotifierConfigView Ventana de log +Keyboard LEDs NotifierConfigView LEDs de teclado +Central beep NotifierConfigView Beep central +Alert NotifierConfigView Alerta diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/es.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/es.catkeys index 99cb4bbf92..4a55c4f72a 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/es.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/es.catkeys @@ -1,6 +1,7 @@ -1 spanish; castilian x-vnd.Haiku-SpamFilter 160316705 +1 spanish; castilian x-vnd.Haiku-SpamFilter 468104950 or empty e-mail SpamFilterConfig o un e-mail vacío. Genuine below and uncertain above: SpamFilterConfig Original lo de debajo e incierto lo anterior: Spam above: SpamFilterConfig Spam anterior: Add spam rating to start of subject SpamFilterConfig Añade una calificación de spam al comienzo del tema del correo +Bayesian Spam Filter SpamFilter Filtro de Spam bayesiano Learn from all incoming e-mail SpamFilterConfig Aprende de todos los e-mails entrantes diff --git a/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/es.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/es.catkeys index a7ef93bef4..0fa91d453e 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/es.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/es.catkeys @@ -1,7 +1,12 @@ -1 spanish; castilian x-vnd.Haiku-IMAP 3950045582 +1 spanish; castilian x-vnd.Haiku-IMAP 354143849 Destination: imap_config Destino: +Ok IMAPFolderConfig Aceptar status IMAPFolderConfig Estado: +Configure IMAP Folders imap_config Configurar carpetas IMAP +Cancel IMAPFolderConfig Cancelar Apply IMAPFolderConfig Aplicar Fetching IMAP folders, have patience... IMAPFolderConfig Recopilando carpetas IMAP, paciencia por favor... +Could not connect to server \"%server%\":\n%error% IMAPFolderConfig No se pudo conectar al servidor \"%server%\":\n%error% IMAP Folders IMAPFolderConfig Carpetas IMAP +Update subcription of IMAP folders, have patience... IMAPFolderConfig Actualizando la suscripción de las carpetas IMAP, tenga paciencia... Failed to fetch available storage. IMAPFolderConfig No se pudo recopilar el espacio disponible. diff --git a/data/catalogs/add-ons/mail_daemon/outbound_filters/fortune/es.catkeys b/data/catalogs/add-ons/mail_daemon/outbound_filters/fortune/es.catkeys index ab2b43d880..3e05f27d8a 100644 --- a/data/catalogs/add-ons/mail_daemon/outbound_filters/fortune/es.catkeys +++ b/data/catalogs/add-ons/mail_daemon/outbound_filters/fortune/es.catkeys @@ -1,4 +1,5 @@ -1 spanish; castilian x-vnd.Haiku-Fortune 1292458430 +1 spanish; castilian x-vnd.Haiku-Fortune 52757361 +Fortune FortuneFilter Fortuna Fortune file: ConfigView Archivo de fortunas: Fortune cookie says:\n\n ConfigView La galleta de la fortuna dice:\n\n Tag line: ConfigView Lema: diff --git a/data/catalogs/add-ons/network_settings/dnsclient/es.catkeys b/data/catalogs/add-ons/network_settings/dnsclient/es.catkeys new file mode 100644 index 0000000000..1f1b764f06 --- /dev/null +++ b/data/catalogs/add-ons/network_settings/dnsclient/es.catkeys @@ -0,0 +1,7 @@ +1 spanish; castilian x-vnd.Haiku-DNSClientService 160307182 +DNS settings DNSClientServiceAddOn Configuración de DNS +Move down DNSSettingsView Mover abajo +DNS settings DNSSettingsView Configuración de DNS +Remove DNSSettingsView Quitar +Domain: DNSSettingsView Dominio: +Add DNSSettingsView Agregar diff --git a/data/catalogs/add-ons/network_settings/ipv4/es.catkeys b/data/catalogs/add-ons/network_settings/ipv4/es.catkeys new file mode 100644 index 0000000000..b79aaab0bc --- /dev/null +++ b/data/catalogs/add-ons/network_settings/ipv4/es.catkeys @@ -0,0 +1,2 @@ +1 spanish; castilian x-vnd.Haiku-IPv4Interface 2854844856 +IPv4 IPv4InterfaceAddOn IPv4 diff --git a/data/catalogs/add-ons/network_settings/ipv6/es.catkeys b/data/catalogs/add-ons/network_settings/ipv6/es.catkeys new file mode 100644 index 0000000000..ebbb42e59e --- /dev/null +++ b/data/catalogs/add-ons/network_settings/ipv6/es.catkeys @@ -0,0 +1,2 @@ +1 spanish; castilian x-vnd.Haiku-IPv6Interface 1391114020 +IPv6 IPv6InterfaceAddOn IPv6 diff --git a/data/catalogs/add-ons/network_settings/sshd/es.catkeys b/data/catalogs/add-ons/network_settings/sshd/es.catkeys new file mode 100644 index 0000000000..e733b0c79c --- /dev/null +++ b/data/catalogs/add-ons/network_settings/sshd/es.catkeys @@ -0,0 +1,2 @@ +1 spanish; castilian x-vnd.Haiku-SSHService 992151130 +The SSH server allows you to remotely access your machine with a terminal session, as well as file access using the SCP and SFTP protocols. SSHServiceAddOn El servidor SSH le permite ingresar remotamente a su máquina con una sesión de terminal, así como a archivos utilizando los protocolos SCP y SFTP. diff --git a/data/catalogs/add-ons/translators/ppm/es.catkeys b/data/catalogs/add-ons/translators/ppm/es.catkeys index af136ef245..85818dedc4 100644 --- a/data/catalogs/add-ons/translators/ppm/es.catkeys +++ b/data/catalogs/add-ons/translators/ppm/es.catkeys @@ -1,4 +1,5 @@ -1 spanish; castilian x-vnd.Haiku-PPMTranslator 797856484 +1 spanish; castilian x-vnd.Haiku-PPMTranslator 2233502290 +Version %d.%d.%d, %s PPMTranslator Versión %d.%d.%d, %s PPM Settings PPMMain Configuración PPM Based on PPMTranslator sample code PPMTranslator Basado en el código de ejemplo de PPMTranslator OK PPMMain Aceptar @@ -8,6 +9,7 @@ PPM image PPMTranslator Imagen PPM RGBA 5:5:5:1 16 bits PPMTranslator RGBA 5:5:5:1 16 bits Be Bitmap Format (PPMTranslator) PPMTranslator Formato Be Bitmap (PPMTranslator) CMYA 8:8:8:8 32 bits PPMTranslator CMYA 8:8:8:8 32 bits +Input color space: PPMTranslator Espacio de Color de Entrada: CMYK 8:8:8:8 32 bits PPMTranslator CMYK 8:8:8:8 32 bits PPM image translator PPMTranslator Transformador de imágenes PPM bits/space PPMTranslator bits/espacio diff --git a/data/catalogs/add-ons/translators/psd/es.catkeys b/data/catalogs/add-ons/translators/psd/es.catkeys index 3381723681..b587f2e7fc 100644 --- a/data/catalogs/add-ons/translators/psd/es.catkeys +++ b/data/catalogs/add-ons/translators/psd/es.catkeys @@ -1,4 +1,4 @@ -1 spanish; castilian x-vnd.Haiku-PSDTranslator 1706619436 +1 spanish; castilian x-vnd.Haiku-PSDTranslator 3654055550 Lab PSDLoader Laboratorio Uncompressed PSDConfig Sin comprimir Indexed PSDLoader Indizado @@ -6,8 +6,10 @@ Grayscale PSDLoader Escala de grises Photoshop image translator PSDConfig Transformador de imágenes tipo Photoshop Photoshop image translator PSDTranslator Transformador de imágenes tipo Photoshop Version %d.%d.%d, %s PSDConfig Versión %d.%d.%d, %s +Photoshop Document (PSD file) PSDConfig Documento de Photoshop (Archivo PSD) Photoshop image PSDTranslator Imagen de Photoshop RLE PSDConfig RLE +Photoshop Big Document (PSB file) PSDConfig Documento grande de Photoshop (Archivo PSB) RGBA PSDLoader RGBA Photoshop image (%s) PSDTranslator Imagen de Photoshop (%s) PSDTranslator Settings PSDConfig Ajustes de PSDTranslator diff --git a/data/catalogs/add-ons/translators/sgi/es.catkeys b/data/catalogs/add-ons/translators/sgi/es.catkeys index c02594ffc4..6f67f02c1c 100644 --- a/data/catalogs/add-ons/translators/sgi/es.catkeys +++ b/data/catalogs/add-ons/translators/sgi/es.catkeys @@ -1,9 +1,11 @@ -1 spanish; castilian x-vnd.Haiku-SGITranslator 4153400005 +1 spanish; castilian x-vnd.Haiku-SGITranslator 129108011 Use compression: SGIView Usar compresión: SGITranslator Settings SGITranslator Configuración SGITranslator None SGIView Ninguno SGI images SGITranslator Imágenes SGI SGI image translator SGITranslator Traductor de imagen SGI +\nbased on GIMP SGI plugin v1.5:\n SGIView \n\basado en el plugin SGI v1.5 de GIMP:\n +Version %d.%d.%d, %s SGIView Versión %d.%d.%d, %s SGI image SGITranslator imagen SGI RLE SGIView RLE SGI Settings SGIMain Configuración SGI diff --git a/data/catalogs/add-ons/translators/tga/es.catkeys b/data/catalogs/add-ons/translators/tga/es.catkeys index 3df70a4a1a..bef050d6bf 100644 --- a/data/catalogs/add-ons/translators/tga/es.catkeys +++ b/data/catalogs/add-ons/translators/tga/es.catkeys @@ -1,4 +1,5 @@ -1 spanish; castilian x-vnd.Haiku-TGATranslator 77519970 +1 spanish; castilian x-vnd.Haiku-TGATranslator 3075011211 +Save with RLE compression TGAView Guardar con compresión RLE Targa image (%d bits truecolor) TGATranslator Imagen Targa (%d bits de color verdadero) Ignore TGA alpha channel TGAView Ignorar el canal alfa TGA Targa image (%d bits colormap) TGATranslator Imagen Targa (%d bits de mapa de color) @@ -8,6 +9,7 @@ Targa image (%d bits gray) TGATranslator Imagen Targa (%d bits de gris) Written by the Haiku Translation Kit Team TGAView Escrito por el equipo de traducción de Haiku Targa image (%d bits RLE truecolor) TGATranslator Imagen Targa (%d bits RLE de color verdadero) TGA images TGATranslator Imágenes TGA +Version %d.%d.%d, %s TGAView Versión %d.%d.%d, %s TGATranslator Settings TGATranslator Configuración TGATranslator TGA image translator TGATranslator Conversor de imagen TGA Targa image (%d bits RLE gray) TGATranslator Imagen Targa (%d bits RLE de gris) diff --git a/data/catalogs/add-ons/translators/tiff/es.catkeys b/data/catalogs/add-ons/translators/tiff/es.catkeys index 59a22cdf01..8b5649b19b 100644 --- a/data/catalogs/add-ons/translators/tiff/es.catkeys +++ b/data/catalogs/add-ons/translators/tiff/es.catkeys @@ -1,5 +1,6 @@ -1 spanish; castilian x-vnd.Haiku-TIFFTranslator 40018330 +1 spanish; castilian x-vnd.Haiku-TIFFTranslator 2234713102 LZW TIFFView LZW +Version %d.%d.%d, %s TIFFView Versión %d.%d.%d, %s identify_tiff_header: couldn't set directory\n TIFFTranslator identify_tiff_header: no pudo setear directorio\n TIFF image TIFFTranslator imagen TIFF TIFF Library: TIFFView Librería TIFF: diff --git a/data/catalogs/apps/aboutsystem/es.catkeys b/data/catalogs/apps/aboutsystem/es.catkeys index 98ee1c5421..1f17112f2f 100644 --- a/data/catalogs/apps/aboutsystem/es.catkeys +++ b/data/catalogs/apps/aboutsystem/es.catkeys @@ -1,4 +1,4 @@ -1 spanish; castilian x-vnd.Haiku-About 2729565851 +1 spanish; castilian x-vnd.Haiku-About 1096939572 Copyright © 1999-2010 by the authors of Gutenprint. All rights reserved. AboutView Copyright © 1999-2010 por los autores de Gutenprint. Todos los derechos reservados. Travis Geiselbrecht (and his NewOS kernel)\n AboutView Travis Geiselbrecht (y su núcleo NewOS)\n Ralink (firmware) AboutWindow Ralink (firmware) @@ -63,6 +63,7 @@ Copyright © 1994-2008 Xiph.Org. All rights reserved. AboutView Copyright © 19 Copyright © 1998-2000 Thai Open Source Software Center Ltd and Clark Cooper. AboutView Copyright © 1998-2000 Thai Open Source Software Center Ltd y Clark Cooper. Copyright © 2004-2005 Intel Corporation. All rights reserved. AboutView Copyright © 2004-2005 Intel Corporation. Todos los derechos reservados. Copyright © 2002-2006 Maxim Shemanarev (McSeem). AboutView Copyright © 2002-2006 Maxim Shemanarev (McSeem). +Copyright © 2000-2014 Fabrice Bellard, et al. AboutView Derechos reservados © 2000-2014 Fabrice Bellard, et. al. Copyright © 1999-2007 Michael C. Ring. All rights reserved. AboutView Copyright © 1999-2007 Michael C. Ring. Todos los derechos reservados. The BeGeistert team\n AboutView El equipo de BeGeistert\n The University of Auckland and Christof Lutteroth\n\n AboutView La Universidad de Auckland y a Christof Lutteroth\n\n diff --git a/data/catalogs/apps/haikudepot/es.catkeys b/data/catalogs/apps/haikudepot/es.catkeys index 5d6c830d6c..b06bbbcafe 100644 --- a/data/catalogs/apps/haikudepot/es.catkeys +++ b/data/catalogs/apps/haikudepot/es.catkeys @@ -1,4 +1,4 @@ -1 spanish; castilian x-vnd.Haiku-HaikuDepot 133580983 +1 spanish; castilian x-vnd.Haiku-HaikuDepot 3640331610 Name PackageListView Nombre Available packages MainWindow Paquetes disponibles Open %DeskbarLink% PackageManager Abrir %DeskbarLink% @@ -82,6 +82,7 @@ Create account UserLoginWindow Crear cuenta Productivity Model Productividad No, quit HaikuDepot App No, salir de HaikuDepot Authentication failed UserLoginWindow Falló la autenticación +Logged in as %User% MainWindow Sesión iniciada como %User% Language RatePackageWindow Idioma Failed to create or update rating: %s\n RatePackageWindow Fallo al crear o actualizar la valoración: %s\n You need to be logged into an account before you can rate packages. MainWindow Necesita haber ingresado con una cuenta antes de poder valorar paquetes. @@ -94,8 +95,14 @@ Games Model Juegos Rating PackageListView Valoraciones (%Votes%) FeaturedPackagesView (%Votes%) There was a puzzling response from the web service. UserLoginWindow Hubo una respuesta misteriosa desde el servicio Web. +Graphics Model Gráficos +Local MainWindow Local Close MainWindow Cerrar +Preferred language: UserLoginWindow Idioma preferido: +Failed to rate package RatePackageWindow Fallo al valorar el paquete +Internet & Network Model Internet y red Cancel MainWindow Cancelar +Quit HaikuDepot App Salir de HaikuDepot Input validation UserLoginWindow Validación de entrada Update RatePackageWindow Actualizar Video Model Vídeo diff --git a/data/catalogs/apps/mail/es.catkeys b/data/catalogs/apps/mail/es.catkeys index 76a2d095b0..7c6cf91e9e 100644 --- a/data/catalogs/apps/mail/es.catkeys +++ b/data/catalogs/apps/mail/es.catkeys @@ -1,4 +1,4 @@ -1 spanish; castilian x-vnd.Be-MAIL 233997769 +1 spanish; castilian x-vnd.Be-MAIL 1310033600 View Mail Ver %d - Date Mail %d - Fecha Attach attributes: Mail Adjuntar atributos: @@ -146,6 +146,7 @@ Open attachment Mail Abrir adjunto sent B_USER_DIRECTORY/mail/sent enviado (Date unavailable) Mail (Fecha indisponible) Put your favorite e-mail queries and query templates in this folder. Mail Ponga sus consultas y plantillas de consulta de correo favoritas en esta carpeta. +Spam Mail Correo basura Reply Mail Responder From: Mail De: Couldn't open this signature. Sorry. Mail No se pudo abrir la firma. Disculpe. diff --git a/data/catalogs/apps/mediaplayer/es.catkeys b/data/catalogs/apps/mediaplayer/es.catkeys index d798a20da7..4f4a212356 100644 --- a/data/catalogs/apps/mediaplayer/es.catkeys +++ b/data/catalogs/apps/mediaplayer/es.catkeys @@ -1,4 +1,4 @@ -1 spanish; castilian x-vnd.Haiku-MediaPlayer 1149772289 +1 spanish; castilian x-vnd.Haiku-MediaPlayer 1854844358 raw audio MediaPlayer-InfoWin audio bruto Location MediaPlayer-InfoWin Ubicación 1.85 : 1 (American) MediaPlayer-Main 1.85 : 1 (Americano) @@ -91,6 +91,7 @@ Automatically start playing MediaPlayer-SettingsWindow Empezar a reproducir aut Track Video Track Menu Pista Internal error (locking failed). Saving the playlist failed. MediaPlayer-PlaylistWindow Error interno (bloquear falló). Guardar la lista de reproducción falló. View options MediaPlayer-SettingsWindow Ver opciones +none MediaPlayer-Main ninguno Play mode MediaPlayer-SettingsWindow Modo de reproducción Remove Entries MediaPlayer-RemovePLItemsCmd Eliminar entradas Video track MediaPlayer-Main Pista de vídeo @@ -119,6 +120,7 @@ raw video MediaPlayer-InfoWin video bruto Volume of background clips MediaPlayer-SettingsWindow Volumen de secuencias de fondo Internal error (out of memory). Saving the playlist failed. MediaPlayer-PlaylistWindow Error interno (sin memoria ). Guardar lista de reproducción falló. Hide interface MediaPlayer-Main Esconder interfaz +Open clips MediaPlayer-Main Abrir las secuencias Copy Entry MediaPlayer-CopyPLItemsCmd Copiar entrada none Subtitles menu ninguno Move file to Trash MediaPlayer-PlaylistWindow Mover archivo a la papelera diff --git a/data/catalogs/apps/packageinstaller/es.catkeys b/data/catalogs/apps/packageinstaller/es.catkeys index 586ad75490..7c363be364 100644 --- a/data/catalogs/apps/packageinstaller/es.catkeys +++ b/data/catalogs/apps/packageinstaller/es.catkeys @@ -1,4 +1,4 @@ -1 spanish; castilian x-vnd.Haiku-PackageInstaller 1413270297 +1 spanish; castilian x-vnd.Haiku-PackageInstaller 591566249 Install to: PackageView Instalar a: OK PackageView OK Accept PackageTextViewer Aceptar @@ -50,6 +50,7 @@ Abort PackageInstall Cancelar %name% (%size%) PackageView %name% (%size%) Continue PackageTextViewer Continuar Begin PackageView Empezar +The symbolic link named '%s' already exists in the given path.\nReplace the link with the one from this package or skip it? PackageView El enlace simbólico llamado '%s' ya existe en la ruta dada.\n¿Remplazar el enlace con el contenido en este paquete o saltarlo? Replace PackageView Reemplazar Installation progress PackageView Progreso de instalación The package file is not readable.\nOne of the possible reasons for this might be that the requested file is not a valid BeOS .pkg package. PackageView No se puede leer el paquete.\nQuizás una de las razones es que el archivo solicitado no es un paquete .pkg válido de BeOS diff --git a/data/catalogs/bin/dstcheck/es.catkeys b/data/catalogs/bin/dstcheck/es.catkeys index 9e3855b51d..eb53714755 100644 --- a/data/catalogs/bin/dstcheck/es.catkeys +++ b/data/catalogs/bin/dstcheck/es.catkeys @@ -1,4 +1,5 @@ -1 spanish; castilian x-vnd.Haiku-cmd-dstconfig 2690010039 +1 spanish; castilian x-vnd.Haiku-cmd-dstconfig 684321431 Ask me later dstcheck Preguntarme después Manually adjust time… dstcheck Ajustar manualmente la hora... +Keep this time dstcheck Mantener esta hora Attention!\n\nBecause of the switch from daylight saving time, your computer's clock may be an hour off.\nYour computer thinks it is %current time%.\n\nIs this the correct time? dstcheck ¡Atención!\n\nDebido al cambio del horario de verano, el reloj de su computadora puede estar una hora equivocado.\nEste equipo piensa que es %current time%.\n\n¿Es la hora correcta? diff --git a/data/catalogs/kits/es.catkeys b/data/catalogs/kits/es.catkeys index 3fbbb7431d..99b302a84d 100644 --- a/data/catalogs/kits/es.catkeys +++ b/data/catalogs/kits/es.catkeys @@ -1,4 +1,4 @@ -1 spanish; castilian x-vnd.Haiku-libbe 3211461559 +1 spanish; castilian x-vnd.Haiku-libbe 3198309111 gamma AboutWindow gama beta AboutWindow beta %3.2f GiB StringForSize %3.2f GiB @@ -18,6 +18,8 @@ OK PrintJob Aceptar Green: ColorControl Verde: Version history: AboutWindow Historal de versión: Remove replicant Dragger Remover replicante +Select all TextView Seleccionar todo +OK AboutWindow Aceptar OK ZombieReplicantView Aceptar Print Server is not responding. PrintJob El servidor de impresión no responde. Paste TextView Pegar diff --git a/data/catalogs/preferences/mail/es.catkeys b/data/catalogs/preferences/mail/es.catkeys index 6375f4e06d..73da8906ad 100644 --- a/data/catalogs/preferences/mail/es.catkeys +++ b/data/catalogs/preferences/mail/es.catkeys @@ -1,4 +1,4 @@ -1 spanish; castilian x-vnd.Haiku-Mail 688530788 +1 spanish; castilian x-vnd.Haiku-Mail 1807389802 Settings Config Window Configuración Never Config Window show status window Nunca While sending and receiving Config Window Mientras se envíe y reciba @@ -18,6 +18,7 @@ Password: E-Mail Contraseña: Accounts Config Window Cuentas Finish AutoConfigWindow Terminar Remove Config Window Eliminar +Error! Config Views ¡Error! Server Name: E-Mail Nombre del servidor: While sending Config Window Mientras se envia Enter a valid e-mail address. AutoConfigWindow Introduzca una dirección de correo válida. diff --git a/data/catalogs/preferences/printers/es.catkeys b/data/catalogs/preferences/printers/es.catkeys index a850428136..d3b58dfbbc 100644 --- a/data/catalogs/preferences/printers/es.catkeys +++ b/data/catalogs/preferences/printers/es.catkeys @@ -1,4 +1,4 @@ -1 spanish; castilian x-vnd.Be-PRNT 200447094 +1 spanish; castilian x-vnd.Be-PRNT 2163275033 Printer: %printer_name%\nDriver: %driver%\n TestPageView Impresora: %printer_name%\nControlador: %driver%\n Waiting JobListView Espera Print test page PrintersWindow Página de impresión de prueba @@ -9,6 +9,7 @@ Cancel AddPrinterDialog Cancelar Add printer AddPrinterDialog Añadir impresora Green TestPageView Verde Printers PrintersWindow Impresoras +Add… PrintersWindow Añadir… Default Printer PrinterListView Impresora por defecto Transport: %transport% %transport_address% PrinterListView Medio: %transport% %transport_address% No pending jobs. PrinterListView No hay trabajos pendientes From 6ca16f31cb3977a020516f46726968526c228158 Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Sat, 8 Aug 2015 15:25:52 +0200 Subject: [PATCH 117/126] MediaKit: Style fixes --- src/kits/media/MediaDefs.cpp | 4 ++-- src/kits/media/MediaRoster.cpp | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/kits/media/MediaDefs.cpp b/src/kits/media/MediaDefs.cpp index 614e89f1e2..30b8a9e704 100644 --- a/src/kits/media/MediaDefs.cpp +++ b/src/kits/media/MediaDefs.cpp @@ -1261,7 +1261,7 @@ progress_shutdown(int stage, // parameter "message" is no longer used. It is kept for compatibility with // BeOS as this is used as a shutdown_media_server callback. - TRACE("stage : %i\n", stage); + TRACE("stage : %i \n", stage); const char* string = "Unknown stage"; switch (stage) { case 10: @@ -1365,7 +1365,7 @@ progress_startup(int stage, // parameter "message" is no longer used. It is kept for compatibility with // BeOS as this is used as a shutdown_media_server callback. - TRACE("stage : %i\n", stage); + TRACE("stage : %i \n", stage); const char* string = "Unknown stage"; switch (stage) { case 10: diff --git a/src/kits/media/MediaRoster.cpp b/src/kits/media/MediaRoster.cpp index e386c2d0fb..6799b01d7a 100644 --- a/src/kits/media/MediaRoster.cpp +++ b/src/kits/media/MediaRoster.cpp @@ -3320,13 +3320,13 @@ BMediaRoster::MessageReceived(BMessage* message) { RosterNotification notification; if (message->FindInt32(NOTIFICATION_PARAM_WHAT, ¬ification.what) - != B_OK) { + != B_OK) { TRACE("BMediaRoster MEDIA_ROSTER_REQUEST_NOTIFICATIONS can't" "find what parameter"); return; } if (message->FindMessenger(NOTIFICATION_PARAM_MESSENGER, - ¬ification.messenger) != B_OK) { + ¬ification.messenger) != B_OK) { TRACE("BMediaRoster MEDIA_ROSTER_REQUEST_NOTIFICATIONS can't" "find messenger"); return; @@ -3339,13 +3339,13 @@ BMediaRoster::MessageReceived(BMessage* message) { RosterNotification notification; if (message->FindInt32(NOTIFICATION_PARAM_WHAT, ¬ification.what) - != B_OK) { + != B_OK) { TRACE("BMediaRoster MEDIA_ROSTER_CANCEL_NOTIFICATIONS can't" "find what parameter"); return; } if (message->FindMessenger(NOTIFICATION_PARAM_MESSENGER, - ¬ification.messenger) != B_OK) { + ¬ification.messenger) != B_OK) { TRACE("BMediaRoster MEDIA_ROSTER_CANCEL_NOTIFICATIONS can't" "find messenger"); return; @@ -3355,7 +3355,7 @@ BMediaRoster::MessageReceived(BMessage* message) if (sNotificationList.Get(i, ¤t) != true) return; if (current->what == notification.what - && current->messenger == notification.messenger) { + && current->messenger == notification.messenger) { sNotificationList.Remove(i); return; } @@ -3394,7 +3394,7 @@ BMediaRoster::MessageReceived(BMessage* message) return; if (current->what == B_MEDIA_SERVER_STARTED) { if (current->messenger.SendMessage( - B_MEDIA_SERVER_STARTED) != B_OK) { + B_MEDIA_SERVER_STARTED) != B_OK) { if(!current->messenger.IsValid()) sNotificationList.Remove(i); } @@ -3424,7 +3424,7 @@ BMediaRoster::MessageReceived(BMessage* message) return; if (current->what == B_MEDIA_SERVER_QUIT) { if (current->messenger.SendMessage( - B_MEDIA_SERVER_QUIT) != B_OK) { + B_MEDIA_SERVER_QUIT) != B_OK) { if(!current->messenger.IsValid()) sNotificationList.Remove(i); } From 7d407a1e99e9c375aaa1f9cb577401b6b52735ae Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Sat, 8 Aug 2015 11:38:16 -0400 Subject: [PATCH 118/126] BLooper: Fix inverted check that was causing a port leak. Fixes #12286. Thanks to ttcoder & jackburton for investigating! --- src/kits/app/Looper.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/kits/app/Looper.cpp b/src/kits/app/Looper.cpp index 6c0b72e49e..579d1db4f0 100644 --- a/src/kits/app/Looper.cpp +++ b/src/kits/app/Looper.cpp @@ -143,7 +143,7 @@ BLooper::~BLooper() // msg will automagically post generic reply } - if (!fOwnsPort) { + if (fOwnsPort) { do { delete ReadMessageFromPort(0); // msg will automagically post generic reply From d796a63b4f265d710d2ed1db0f497d8fbdd5bc2e Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Sat, 8 Aug 2015 20:20:16 +0200 Subject: [PATCH 119/126] MediaKit: Other style fixes * Thanks to Marcus for reviewing, this is what happen when you mess out with the TODO list. --- src/kits/media/MediaDefs.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/kits/media/MediaDefs.cpp b/src/kits/media/MediaDefs.cpp index 30b8a9e704..2a545a8403 100644 --- a/src/kits/media/MediaDefs.cpp +++ b/src/kits/media/MediaDefs.cpp @@ -1261,7 +1261,7 @@ progress_shutdown(int stage, // parameter "message" is no longer used. It is kept for compatibility with // BeOS as this is used as a shutdown_media_server callback. - TRACE("stage : %i \n", stage); + TRACE("stage: %i\n", stage); const char* string = "Unknown stage"; switch (stage) { case 10: @@ -1285,7 +1285,7 @@ progress_shutdown(int stage, } if (progress == NULL) - notify_system(stage/100.0f, string); + notify_system(stage / 100.0f, string); else progress(stage, string, cookie); } @@ -1365,7 +1365,7 @@ progress_startup(int stage, // parameter "message" is no longer used. It is kept for compatibility with // BeOS as this is used as a shutdown_media_server callback. - TRACE("stage : %i \n", stage); + TRACE("stage: %i\n", stage); const char* string = "Unknown stage"; switch (stage) { case 10: @@ -1386,7 +1386,7 @@ progress_startup(int stage, } if (progress == NULL) - notify_system(stage/100.0f, string); + notify_system(stage / 100.0f, string); else progress(stage, string, cookie); } From 03bf949ed4c405d3c8ba9471938ff08cb8dc2d75 Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Sat, 8 Aug 2015 17:12:17 -0400 Subject: [PATCH 120/126] launch_daemon: Correctly fix #12289 as pointed out by Axel. - Rather than depending just on mount_server's launch, instead use a condition that waits for the volumes mounted event. Had missed the existence of this one previously. --- data/launch/system | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/data/launch/system b/data/launch/system index 126d323efc..b777b47068 100644 --- a/data/launch/system +++ b/data/launch/system @@ -29,10 +29,12 @@ service x-vnd.Haiku-mount_server { } service x-vnd.Haiku-media_server { - requires x-vnd.Haiku-mount_server launch /system/servers/media_server no_safemode legacy + on { + initial_volumes_mounted + } } service x-vnd.Haiku-midi_server { From d95c6fc46bf91e56101d8be175d3e7011fb6ff9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Sun, 9 Aug 2015 07:58:40 +0200 Subject: [PATCH 121/126] Updated curl and openssh packages. --- build/jam/repositories/HaikuPorts/x86 | 10 +++++----- build/jam/repositories/HaikuPorts/x86_64 | 6 +++--- build/jam/repositories/HaikuPorts/x86_gcc2 | 10 +++++----- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/build/jam/repositories/HaikuPorts/x86 b/build/jam/repositories/HaikuPorts/x86 index 034510f288..cd30088f69 100644 --- a/build/jam/repositories/HaikuPorts/x86 +++ b/build/jam/repositories/HaikuPorts/x86 @@ -41,8 +41,8 @@ RemotePackageRepository HaikuPorts coreutils-8.24-1 cpio-2.10-1 ctags-5.8-3 - curl-7.42.1-1 - curl_devel-7.42.1-1 + curl-7.43.0-1 + curl_devel-7.43.0-1 cvs-1.12.13.1-6 cvsps-2.2b1-1 diffutils-3.3-2 @@ -186,7 +186,7 @@ RemotePackageRepository HaikuPorts netcat-1.10-1 ninja-1.5.1-2 openjdk-1.7_2013_11_08-2 - openssh-6.0p1-8 + openssh-6.9p1-1 # sync openssl with secondary architecture (x86_gcc2) openssl-1.0.0s-1 openssl_devel-1.0.0s-1 @@ -245,8 +245,8 @@ RemotePackageRepository HaikuPorts binutils_x86_gcc2-2.17_2013_04_21-2 bzip2_x86_gcc2-1.0.6-5 bzip2_x86_gcc2_devel-1.0.6-5 - curl_x86_gcc2-7.42.1-1 - curl_x86_gcc2_devel-7.42.1-1 + curl_x86_gcc2-7.43.0-1 + curl_x86_gcc2_devel-7.43.0-1 expat_x86_gcc2-2.1.0-1 expat_x86_gcc2_devel-2.1.0-1 ffmpeg_x86_gcc2-0.10.2-4 diff --git a/build/jam/repositories/HaikuPorts/x86_64 b/build/jam/repositories/HaikuPorts/x86_64 index 2211150f41..d299f495d3 100644 --- a/build/jam/repositories/HaikuPorts/x86_64 +++ b/build/jam/repositories/HaikuPorts/x86_64 @@ -64,8 +64,8 @@ RemotePackageRepository HaikuPorts cppunit-1.12.1-2 cppunit_devel-1.12.1-2 ctags-5.8-3 - curl-7.42.1-1 - curl_devel-7.42.1-1 + curl-7.43.0-1 + curl_devel-7.43.0-1 cvs-1.12.13.1-6 diffutils-3.3-2 dos2unix-7.2.2-1 @@ -260,7 +260,7 @@ RemotePackageRepository HaikuPorts ninja-1.5.1-2 nspr-4.10.8-1 nspr_devel-4.10.8-1 - openssh-6.6p1-1 + openssh-6.9p1-1 openssl-1.0.0s-1 openssl_devel-1.0.0s-1 p7zip-9.20.1-5 diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index 2b330ea870..bbc8d0ce22 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -78,8 +78,8 @@ RemotePackageRepository HaikuPorts ctags-5.8-3 colors-2.3-1 coreutils-8.24-1 - curl-7.42.1-1 - curl_devel-7.42.1-1 + curl-7.43.0-1 + curl_devel-7.43.0-1 cvs-1.12.13.1-6 desknotes-1.1-4 dfu_util-0.7-1 @@ -361,7 +361,7 @@ RemotePackageRepository HaikuPorts openjpeg-2.1.0-2 openjpeg_devel-2.1.0-2 opensound-4.2_git-2 - openssh-6.8p1-2 + openssh-6.9p1-1 # sync openssl with secondary architecture (x86) openssl-1.0.0s-1 openssl_devel-1.0.0s-1 @@ -547,8 +547,8 @@ RemotePackageRepository HaikuPorts confuse_x86-2.7-2 confuse_x86_devel-2.7-2 copynametoclipboard-1.0.1-2 - curl_x86-7.42.1-1 - curl_x86_devel-7.42.1-1 + curl_x86-7.43.0-1 + curl_x86_devel-7.43.0-1 cvsps_x86-2.2b1-1 dbus_x86-1.8.6-1 dbus_x86_devel-1.8.6-1 From 23efd95ed704e3c56db11ce0aab6e681ef589f4c Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sun, 9 Aug 2015 12:00:46 +0200 Subject: [PATCH 122/126] French keymap: add some missing symbols. Most of the changes inspired from the "fr-latin9" map from Linux, but I went with a different mapping because we also want some symbols later introduced in Unicode, and also because we already had a different (and I think better) mapping for some of the extra symbols in latin-9. The keymap now features: * Uppercase accented vowels, cedilla, spanish n with tilde * Mathematical symbols for multiplication/division * Spanish reverse exclamation and interrogation points, and interrobang * Various other symbols from the latin-9 character set --- src/data/keymaps/French.keymap | 46 +++++++++++++++++----------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/data/keymaps/French.keymap b/src/data/keymaps/French.keymap index fd171ce8c8..45635c25d9 100644 --- a/src/data/keymaps/French.keymap +++ b/src/data/keymaps/French.keymap @@ -76,19 +76,19 @@ Key 0x0d = 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10 Key 0x0e = 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10 Key 0x0f = 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10 Key 0x10 = 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10 -Key 0x11 = 0xc2b2 '~' '' 0xc2b4 '' 0xc2b2 '~' 0xc2b4 '' -Key 0x12 = '&' '1' '' ' ' '' '1' '&' ' ' '' -Key 0x13 = 0xc3a9 '2' '' '~' '' '2' 0xc3a9 '~' '' -Key 0x14 = '"' '3' '' '#' '' '3' '"' '#' '' +Key 0x11 = 0xc2b2 0xc2b3 '' 0xc593 0xc592 0xc2b2 0xc2b3 0xc593 0xc592 +Key 0x12 = '&' '1' '' 0xc2b4 0xc2b7 '1' '&' 0xc2b4 0xc2b7 +Key 0x13 = 0xc3a9 '2' '' '~' 0xc389 '2' 0xc3a9 '~' 0xc389 +Key 0x14 = '"' '3' '' '#' 0xc2b8 '3' '"' '#' 0xc2b8 Key 0x15 = '\'' '4' '' '{' '' '4' '\'' '{' '' -Key 0x16 = '(' '5' '' '[' '' '5' '(' '[' '' -Key 0x17 = '-' '6' '' '|' '' '6' '-' '|' '' -Key 0x18 = 0xc3a8 '7' '' '`' '' '7' 0xc3a8 '`' '' -Key 0x19 = '_' '8' 0x1f '\\' '' '8' '_' '\\' '' -Key 0x1a = 0xc3a7 '9' 0x1e '^' '' '9' 0xc3a7 '^' '' -Key 0x1b = 0xc3a0 '0' '' '@' '' '0' 0xc3a0 '@' '' -Key 0x1c = ')' 0xc2b0 '' ']' '' 0xc2b0 ')' ']' '' -Key 0x1d = '=' '+' '' '}' '' '+' '=' '}' '' +Key 0x16 = '(' '5' '' '[' 0xc2a8 '5' '(' '[' 0xc2a8 +Key 0x17 = '-' '6' '' '|' 0xc2a6 '6' '-' '|' 0xc2a6 +Key 0x18 = 0xc3a8 '7' '' '`' 0xc388 '7' 0xc3a8 '`' 0xc388 +Key 0x19 = '_' '8' 0x1f '\\' 0xc2af '8' '_' '\\' 0xc2af +Key 0x1a = 0xc3a7 '9' 0x1e '^' 0xc387 '9' 0xc3a7 '^' 0xc387 +Key 0x1b = 0xc3a0 '0' '' '@' 0xc380 '0' 0xc3a0 '@' 0xc380 +Key 0x1c = ')' 0xc2b0 '' ']' 0xc2ba 0xc2b0 ')' ']' 0xc2ba +Key 0x1d = '=' '+' '' '}' 0xc2b1 '+' '=' '}' 0xc2b1 Key 0x1e = 0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x08 Key 0x1f = 0x05 0x05 0x05 0x05 0x05 0x05 0x05 0x05 0x05 Key 0x20 = 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 @@ -100,14 +100,14 @@ Key 0x25 = '-' '-' '-' '-' '-' '-' '-' '-' Key 0x26 = 0x09 0x09 0x09 0x09 0x09 0x09 0x09 0x09 0x09 Key 0x27 = 'a' 'A' 0x01 0xc3a6 0xc386 'A' 'a' ' ' '' Key 0x28 = 'z' 'Z' 0x1a ' ' '' 'Z' 'z' ' ' '' -Key 0x29 = 'e' 'E' 0x05 0xe282ac '' 'E' 'e' 0xe282ac '' +Key 0x29 = 'e' 'E' 0x05 0xe282ac 0xc2a2 'E' 'e' 0xe282ac 0xc2a2 Key 0x2a = 'r' 'R' 0x12 0xc2ae '' 'R' 'r' ' ' '' Key 0x2b = 't' 'T' 0x14 ' ' '' 'T' 't' ' ' '' Key 0x2c = 'y' 'Y' 0x19 ' ' '' 'Y' 'y' ' ' '' Key 0x2d = 'u' 'U' 0x15 ' ' '' 'U' 'u' ' ' '' Key 0x2e = 'i' 'I' 0x09 ' ' '' 'I' 'i' ' ' '' Key 0x2f = 'o' 'O' 0x0f 0xc593 0xc592 'O' 'o' ' ' '' -Key 0x30 = 'p' 'P' 0x10 ' ' '' 'P' 'p' ' ' '' +Key 0x30 = 'p' 'P' 0x10 0xc3be 0xc39e 'P' 'p' 0xc3be 0xc39e Key 0x31 = '^' 0xc2a8 0x1b ' ' '' 0xc2a8 '^' ' ' '' Key 0x32 = '$' 0xc2a3 0x1d 0xc2a4 '' 0xc2a3 '$' 0xc2a4 '' Key 0x33 = '*' 0xc2b5 0x1c ' ' '' 0xc2b5 '*' ' ' '' @@ -120,16 +120,16 @@ Key 0x39 = 0x0b '9' 0x0b 0x0b '9' 0x0b '9' 0x0b Key 0x3a = '+' '+' '+' '+' '+' '+' '+' '+' '+' Key 0x3b = '' '' '' '' '' '' '' '' '' Key 0x3c = 'q' 'Q' 0x11 ' ' '' 'Q' 'q' ' ' '' -Key 0x3d = 's' 'S' 0x13 ' ' '' 'S' 's' ' ' '' +Key 0x3d = 's' 'S' 0x13 0xc3b8 0xc398 'S' 's' 0xc3b8 0xc398 Key 0x3e = 'd' 'D' 0x04 ' ' '' 'D' 'd' ' ' '' Key 0x3f = 'f' 'F' 0x06 ' ' '' 'F' 'f' ' ' '' Key 0x40 = 'g' 'G' 0x07 ' ' '' 'G' 'g' ' ' '' -Key 0x41 = 'h' 'H' 0x08 ' ' '' 'H' 'h' ' ' '' +Key 0x41 = 'h' 'H' 0x08 0xc3b0 0xc390 'H' 'h' 0xc3b0 0xc390 Key 0x42 = 'j' 'J' 0x0a ' ' '' 'J' 'j' ' ' '' Key 0x43 = 'k' 'K' 0x0b ' ' '' 'K' 'k' ' ' '' Key 0x44 = 'l' 'L' 0x0c ' ' '' 'L' 'l' ' ' '' Key 0x45 = 'm' 'M' 0x0d ' ' '' 'M' 'm' ' ' '' -Key 0x46 = 0xc3b9 '%' '' ' ' '' '%' 0xc3b9 ' ' '' +Key 0x46 = 0xc3b9 '%' '' 0xc399 0xe280b0 '%' 0xc3b9 0xc399 0xe280b0 Key 0x47 = 0x0a 0x0a 0x0a 0x0a 0x0a 0x0a 0x0a 0x0a 0x0a Key 0x48 = 0x1c '4' 0x1c 0x1c '4' 0x1c '4' 0x1c '4' Key 0x49 = '' '5' '' '' '5' '' '5' '' '5' @@ -139,12 +139,12 @@ Key 0x4c = 'w' 'W' 0x17 ' ' '' 'W' 'w' ' ' Key 0x4d = 'x' 'X' 0x18 ' ' '' 'X' 'x' ' ' '' Key 0x4e = 'c' 'C' 0x03 0xc2a9 '' 'C' 'c' ' ' '' Key 0x4f = 'v' 'V' 0x16 ' ' '' 'V' 'v' ' ' '' -Key 0x50 = 'b' 'B' 0x02 ' ' '' 'B' 'b' ' ' '' -Key 0x51 = 'n' 'N' 0x0e ' ' '' 'N' 'n' ' ' '' -Key 0x52 = ',' '?' '' ' ' '' '?' ',' ' ' '' -Key 0x53 = ';' '.' '' ' ' 0xe280a6 '.' ';' ' ' '' -Key 0x54 = ':' '/' '' ' ' '' '/' ':' ' ' '' -Key 0x55 = '!' 0xc2a7 '' ' ' '' 0xc2a7 '!' ' ' '' +Key 0x50 = 'b' 'B' 0x02 0xc39f 0xc2ac 'B' 'b' 0xc39f 0xc2ac +Key 0x51 = 'n' 'N' 0x0e 0xc3b1 0xc391 'N' 'n' 0xc3b1 0xc391 +Key 0x52 = ',' '?' '' 0xc2bf 0xe280bd '?' ',' 0xc2bf 0xe280bd +Key 0x53 = ';' '.' '' ' ' 0xe280a6 '.' ';' ' ' 0xe280a6 +Key 0x54 = ':' '/' '' 0xc397 0xc3b7 '/' ':' 0xc397 0xc3b7 +Key 0x55 = '!' 0xc2a7 0xc2b6 0xc2a1 '' 0xc2a7 '!' 0xc2a1 0xc2b6 Key 0x56 = '' '' '' '' '' '' '' '' '' Key 0x57 = 0x1e 0x1e 0x1e 0x1e 0x1e 0x1e 0x1e 0x1e 0x1e Key 0x58 = 0x04 '1' 0x04 0x04 '1' 0x04 '1' 0x04 '1' From 1379e2b328114bebf390cc396d1a3e661c5f04ca Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Mon, 10 Aug 2015 19:09:25 +0200 Subject: [PATCH 123/126] Add packages for 2cdt, d52, radare2 and dependencies. --- build/jam/repositories/HaikuPorts/x86_gcc2 | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index bbc8d0ce22..bd7bd5789b 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -26,6 +26,7 @@ RemotePackageRepository HaikuPorts : # repository architecture packages # primary architecture (x86_gcc2) + 2cdt-2014.01.03-1 a_book-1.1-3 a52dec-0.7.4-2 a52dec_devel-0.7.4-2 @@ -81,6 +82,7 @@ RemotePackageRepository HaikuPorts curl-7.43.0-1 curl_devel-7.43.0-1 cvs-1.12.13.1-6 + d52-3.4.1-1 desknotes-1.1-4 dfu_util-0.7-1 diffutils-3.3-2 @@ -308,6 +310,8 @@ RemotePackageRepository HaikuPorts libxml2_python-2.8.0-9 libxslt-1.1.28-4 libxslt_devel-1.1.28-4 + libzip-0.11.2-1 + libzip_devel-0.11.2-1 lighttpd-1.4.35-2 lighttpd_devel-1.4.35-2 links-2.8-1 @@ -543,6 +547,8 @@ RemotePackageRepository HaikuPorts burnitnow_x86-0.1.0-1 bzip2_x86-1.0.6-5 bzip2_x86_devel-1.0.6-5 + capstone_x86-3.0.4-1 + capstone_x86_devel-3.0.4-1 cmake_x86-3.2.3-1 confuse_x86-2.7-2 confuse_x86_devel-2.7-2 @@ -566,6 +572,8 @@ RemotePackageRepository HaikuPorts expat_x86_devel-2.1.0-1 faad2_x86-2.7-1 faad2_x86_devel-2.7-1 + file_x86-5.15-1 + file_x86_devel-5.15-1 fish_x86-1.23.1_git-1 ffmpeg_x86-0.11.5-2 ffmpeg_x86_devel-0.11.5-2 @@ -727,6 +735,8 @@ RemotePackageRepository HaikuPorts libxml2_x86_devel-2.9.2-1 libxslt_x86-1.1.28-2 libxslt_x86_devel-1.1.28-2 + libzip_x86-0.11.2-1 + libzip_x86_devel-0.11.2-1 llvm_x86-3.5.2-1 lmms_x86-1.2.0_git-1 lua_x86-5.2.3-2 @@ -791,6 +801,8 @@ RemotePackageRepository HaikuPorts quassel_x86-0.10.0-2 quicklaunch-0.9.10-1 qupzilla_x86-1.8.6-1 + radare2_x86-0.9.9-1 + radare2_x86_devel-0.9.9-1 rcs_x86-5.9.3-2 readline_x86-6.3-2 readline_x86_devel-6.3-2 @@ -848,6 +860,7 @@ RemotePackageRepository HaikuPorts zlib_x86_devel-1.2.8-4 : # source packages + 2cdt a_book a52dec a52dec_x86 @@ -897,6 +910,7 @@ RemotePackageRepository HaikuPorts bzr canna capitalbe + capstone_x86 catkeyseditor caya ccache @@ -915,6 +929,7 @@ RemotePackageRepository HaikuPorts curl cvs cvsps_x86 + d52 dbus_x86 ddrescue_x86 desknotes @@ -943,6 +958,7 @@ RemotePackageRepository HaikuPorts faad2_x86 f1spirit file + file_x86 filwip findutils fish_x86 @@ -1106,6 +1122,8 @@ RemotePackageRepository HaikuPorts libxml2_x86 libxslt libxslt_x86 + libzip + libzip_x86 lighttpd links llvm_x86 @@ -1208,6 +1226,7 @@ RemotePackageRepository HaikuPorts quassel_x86 quicklaunch qupzilla_x86 + radare2_x86 rcs_x86 readline readline_x86 From 7cef8ca2fe55d93634b331bcb8e2e5d8184720d8 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Mon, 10 Aug 2015 21:27:50 +0200 Subject: [PATCH 124/126] Tracker: Fix regression introduced in hrev49011. If the view fails to lock because it is actually gone, we obviously can't use it to return the container, so delete it directly in that case. Fixes #12072 and probably #11982 which would then be a duplicate. --- src/kits/tracker/PoseView.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/kits/tracker/PoseView.cpp b/src/kits/tracker/PoseView.cpp index eec1b242a5..cb510cb7bd 100644 --- a/src/kits/tracker/PoseView.cpp +++ b/src/kits/tracker/PoseView.cpp @@ -1433,11 +1433,14 @@ BPoseView::AddPosesTask(void* castToParams) if (!view->IsValidAddPosesThread(threadID)) { // this handles the case of a file panel when the directory is - // switched and and old AddPosesTask needs to die. + // switched and an old AddPosesTask needs to die. // we might no longer be the current async thread // for this view - if not then we're done view->HideBarberPole(); + view->ReturnDirentIterator(container); + container = NULL; + // for now use the same cleanup as failToLock does posesResult->fCount = modelChunkIndex + 1; throw failToLock(); @@ -1511,8 +1514,7 @@ BPoseView::AddPosesTask(void* castToParams) PRINT(("add_poses cleanup \n")); // failed to lock window, bail delete posesResult; - - view->ReturnDirentIterator(container); + delete container; return B_ERROR; } @@ -1521,10 +1523,11 @@ BPoseView::AddPosesTask(void* castToParams) delete posesResult; - view->ReturnDirentIterator(container); - - if (lock.Lock()) + if (lock.Lock()) { + view->ReturnDirentIterator(container); view->fAddPosesThreads.erase(threadID); + } else + delete container; return B_OK; } From 422b0ec754a7fc3d6bdcde5f6fd60fdbcec9015b Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Sun, 9 Aug 2015 14:34:21 -0400 Subject: [PATCH 125/126] libroot: Fix issue reported in ticket #12291. fts.c: - Our fts functions were imported from FreeBSD and consequently did not use the same weak alias methodology that most of our glibc-derived POSIX functions do. These subsequently wound up clashing with the implementation of said functions in current versions of coreutils, resulting in assertion failures when e.g. running a program through stdbuf, since the BSD-derived functions had different flag constraints than their GNU peers. Consequently, this change adjusts the fts_* family of functions to similarly be exported as weak symbols so they can be preempted. --- src/system/libroot/posix/fts.c | 60 +++++++++++++++++++++++++++++----- 1 file changed, 52 insertions(+), 8 deletions(-) diff --git a/src/system/libroot/posix/fts.c b/src/system/libroot/posix/fts.c index ce7ac95981..67ea49b246 100644 --- a/src/system/libroot/posix/fts.c +++ b/src/system/libroot/posix/fts.c @@ -80,6 +80,18 @@ static int fts_stat(FTS *, FTSENT *, int); static int fts_safe_changedir(FTS *, FTSENT *, int, char *); static int fts_ufslinks(FTS *, const FTSENT *); + +FTS * __fts_open(char * const *argv, int options, int (*compar)( + const FTSENT * const *, const FTSENT * const *)); +int __fts_close(FTS *sp); +FTSENT * __fts_read(FTS *sp); +int __fts_set(FTS *sp, FTSENT *p, int instr); +FTSENT * __fts_children(FTS *sp, int instr); +void *(__fts_get_clientptr)(FTS *sp); +FTS * (__fts_get_stream)(FTSENT *p); +void __fts_set_clientptr(FTS *sp, void *clientptr); + + #define ISDOT(a) (a[0] == '.' && (!a[1] || (a[1] == '.' && !a[2]))) #define CLR(opt) (sp->fts_options &= ~(opt)) @@ -128,7 +140,7 @@ static const char *ufslike_filesystems[] = { #endif /* !__HAIKU__ */ FTS * -fts_open(argv, options, compar) +__fts_open(argv, options, compar) char * const *argv; int options; int (*compar)(const FTSENT * const *, const FTSENT * const *); @@ -245,6 +257,10 @@ mem1: free(sp); return (NULL); } + +__weak_reference(__fts_open, fts_open); + + static void fts_load(FTS *sp, FTSENT *p) { @@ -270,7 +286,7 @@ fts_load(FTS *sp, FTSENT *p) } int -fts_close(FTS *sp) +__fts_close(FTS *sp) { FTSENT *freep, *p; int saved_errno; @@ -315,6 +331,10 @@ fts_close(FTS *sp) return (0); } + +__weak_reference(__fts_close, fts_close); + + /* * Special case of "/" at the end of the path so that slashes aren't * appended which would cause paths to be written as "....//foo". @@ -324,7 +344,7 @@ fts_close(FTS *sp) ? p->fts_pathlen - 1 : p->fts_pathlen) FTSENT * -fts_read(FTS *sp) +__fts_read(FTS *sp) { FTSENT *p, *tmp; int instr; @@ -510,6 +530,10 @@ name: t = sp->fts_path + NAPPEND(p->fts_parent); return (sp->fts_cur = p); } + +__weak_reference(__fts_read, fts_read); + + /* * Fts_set takes the stream as an argument although it's not used in this * implementation; it would be necessary if anyone wanted to add global @@ -518,7 +542,7 @@ name: t = sp->fts_path + NAPPEND(p->fts_parent); */ /* ARGSUSED */ int -fts_set(FTS *sp, FTSENT *p, int instr) +__fts_set(FTS *sp, FTSENT *p, int instr) { if (instr != 0 && instr != FTS_AGAIN && instr != FTS_FOLLOW && instr != FTS_NOINSTR && instr != FTS_SKIP) { @@ -529,8 +553,12 @@ fts_set(FTS *sp, FTSENT *p, int instr) return (0); } + +__weak_reference(__fts_set, fts_set); + + FTSENT * -fts_children(FTS *sp, int instr) +__fts_children(FTS *sp, int instr) { FTSENT *p; int fd; @@ -597,34 +625,50 @@ fts_children(FTS *sp, int instr) return (sp->fts_child); } + +__weak_reference(__fts_children, fts_children); + + #ifndef fts_get_clientptr #error "fts_get_clientptr not defined" #endif void * -(fts_get_clientptr)(FTS *sp) +(__fts_get_clientptr)(FTS *sp) { return (fts_get_clientptr(sp)); } + +__weak_reference(__fts_get_clientptr, fts_get_clientptr); + + #ifndef fts_get_stream #error "fts_get_stream not defined" #endif FTS * -(fts_get_stream)(FTSENT *p) +(__fts_get_stream)(FTSENT *p) { return (fts_get_stream(p)); } + +__weak_reference(__fts_get_stream, fts_get_stream); + + void -fts_set_clientptr(FTS *sp, void *clientptr) +__fts_set_clientptr(FTS *sp, void *clientptr) { sp->fts_clientptr = clientptr; } + +__weak_reference(__fts_set_clientptr, fts_set_clientptr); + + /* * This is the tricky part -- do not casually change *anything* in here. The * idea is to build the linked list of entries that are used by fts_children From 26cc9e9e0789105b0c4589f9cd4754b2aad95230 Mon Sep 17 00:00:00 2001 From: Humdinger Date: Tue, 11 Aug 2015 18:01:39 +0200 Subject: [PATCH 126/126] Small cosmetics for the preference panel * Prevent the scrollview from jumping vertically when selecting a service * Glue the services view to the top --- src/preferences/network/NetworkWindow.cpp | 2 +- src/preferences/network/ServiceView.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/preferences/network/NetworkWindow.cpp b/src/preferences/network/NetworkWindow.cpp index b9b42fec31..a721538ba4 100644 --- a/src/preferences/network/NetworkWindow.cpp +++ b/src/preferences/network/NetworkWindow.cpp @@ -126,7 +126,7 @@ NetworkWindow::NetworkWindow() BScrollView* scrollView = new BScrollView("ScrollView", fListView, 0, false, true); - scrollView->SetExplicitMinSize(BSize(B_SIZE_UNSET, 42)); + scrollView->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNSET)); fAddOnShellView = new BView("add-on shell", 0, new BGroupLayout(B_VERTICAL)); diff --git a/src/preferences/network/ServiceView.cpp b/src/preferences/network/ServiceView.cpp index a0dd9b09a3..efa045352a 100644 --- a/src/preferences/network/ServiceView.cpp +++ b/src/preferences/network/ServiceView.cpp @@ -50,6 +50,7 @@ ServiceView::ServiceView(const char* name, const char* executable, BLayoutBuilder::Group<>(this, B_VERTICAL) .Add(titleView) .Add(descriptionView) + .AddGlue() .AddGroup(B_HORIZONTAL) .AddGlue() .Add(fEnableButton);

    The latest version of PolyglotMan is available via -http://polyglotman.sourceforge.net/. - - -